From 675f6a911d14bf5327a3d7b315949d2642074f7c Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Mon, 24 Jul 2023 11:14:21 -0700 Subject: [PATCH 1/2] :pencil: update readme --- .dockerignore | 1 + .env | 4 +- .gitignore | 2 + LocalREADME.md | 404 +++++++++++++++++++++++++++++++++++++++++++++++ README.md | 379 +++++--------------------------------------- parea/example.py | 30 ++-- 6 files changed, 468 insertions(+), 352 deletions(-) create mode 100644 LocalREADME.md diff --git a/.dockerignore b/.dockerignore index 6be1e244..a4261932 100644 --- a/.dockerignore +++ b/.dockerignore @@ -36,3 +36,4 @@ venv .AppleDouble .LSOverride ._* +/LocalREADME.md diff --git a/.env b/.env index 788c6a88..c5e457b0 100644 --- a/.env +++ b/.env @@ -1,3 +1,3 @@ PAREA_API_URL=http://localhost:8000/api/parea/v1 -DEV_API_KEY=pai-83bc9a58b025773fae7bc1e8b2518d32c4c5862f70116a1124021af0e46d046f -DEV_DEPLOYMENT_ID=p-qZrnFeFEICpqcXJ_yLjji +API_KEY=pai-83bc9a58b025773fae7bc1e8b2518d32c4c5862f70116a1124021af0e46d046f +DEPLOYMENT_ID=p-qZrnFeFEICpqcXJ_yLjji diff --git a/.gitignore b/.gitignore index 5a93b929..dc0e398f 100644 --- a/.gitignore +++ b/.gitignore @@ -616,3 +616,5 @@ healthchecksdb MigrationBackup/ # End of https://www.gitignore.io/api/osx,python,pycharm,windows,visualstudio,visualstudiocode +/LocalREADME.md +LocalREADME.md diff --git a/LocalREADME.md b/LocalREADME.md new file mode 100644 index 00000000..732b43b1 --- /dev/null +++ b/LocalREADME.md @@ -0,0 +1,404 @@ +# parea-sdk + +
+ +[![Build status](https://github.com/parea-ai/parea-sdk/workflows/build/badge.svg?branch=master&event=push)](https://github.com/parea-ai/parea-sdk/actions?query=workflow%3Abuild) +[![Python Version](https://img.shields.io/pypi/pyversions/parea-sdk.svg)](https://pypi.org/project/parea-sdk/) +[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/parea-ai/parea-sdk/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) + +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) +[![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/parea-ai/parea-sdk/blob/master/.pre-commit-config.yaml) +[![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/parea-ai/parea-sdk/releases) +[![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) +![Coverage Report](assets/images/coverage.svg) + +Parea python sdk + +
+ +## Very first steps + +### Initialize your code + +1. Initialize `git` inside your repo: + +```bash +cd parea-sdk && git init +``` + +2. If you don't have `Poetry` installed run: + +```bash +make poetry-download +``` + +3. Initialize poetry and install `pre-commit` hooks: + +```bash +make install +make pre-commit-install +``` + +4. Run the codestyle: + +```bash +make codestyle +``` + +5. Upload initial code to GitHub: + +```bash +git add . +git commit -m ":tada: Initial commit" +git branch -M main +git remote add origin https://github.com/parea-ai/parea-sdk.git +git push -u origin main +``` + +### Set up bots + +- Set + up [Dependabot](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates) + to ensure you have the latest dependencies. +- Set up [Stale bot](https://github.com/apps/stale) for automatic issue closing. + +### Poetry + +Want to know more about Poetry? Check [its documentation](https://python-poetry.org/docs/). + +
+Details about Poetry +

+ +Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: + +- `poetry add numpy@latest` +- `poetry run pytest` +- `poetry publish --build` + +etc +

+
+ +### Building and releasing your package + +Building a new version of the application contains steps: + +- Bump the version of your package `poetry version `. You can pass the new version explicitly, or a rule such + as `major`, `minor`, or `patch`. For more details, refer to the [Semantic Versions](https://semver.org/) standard. +- Make a commit to `GitHub`. +- Create a `GitHub release`. +- And... publish πŸ™‚ `poetry publish --build` + +## πŸš€ Features + +### Development features + +- Supports for `Python 3.9` and higher. +- [`Poetry`](https://python-poetry.org/) as the dependencies manager. See configuration + in [`pyproject.toml`](https://github.com/parea-ai/parea-sdk/blob/master/pyproject.toml) + and [`setup.cfg`](https://github.com/parea-ai/parea-sdk/blob/master/setup.cfg). +- Automatic codestyle with [`black`](https://github.com/psf/black), [`isort`](https://github.com/timothycrosley/isort) + and [`pyupgrade`](https://github.com/asottile/pyupgrade). +- Ready-to-use [`pre-commit`](https://pre-commit.com/) hooks with code-formatting. +- Type checks with [`mypy`](https://mypy.readthedocs.io); docstring checks + with [`darglint`](https://github.com/terrencepreilly/darglint); security checks + with [`safety`](https://github.com/pyupio/safety) and [`bandit`](https://github.com/PyCQA/bandit) +- Testing with [`pytest`](https://docs.pytest.org/en/latest/). +- + +Ready-to-use [`.editorconfig`](https://github.com/parea-ai/parea-sdk/blob/master/.editorconfig), [`.dockerignore`](https://github.com/parea-ai/parea-sdk/blob/master/.dockerignore), +and [`.gitignore`](https://github.com/parea-ai/parea-sdk/blob/master/.gitignore). You don't have to worry about those +things. + +### Deployment features + +- `GitHub` integration: issue and pr templates. +- `Github Actions` with + predefined [build workflow](https://github.com/parea-ai/parea-sdk/blob/master/.github/workflows/build.yml) as the + default CI/CD. +- Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds, + etc with [`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile#L89). More details + in [makefile-usage](#makefile-usage). +- [Dockerfile](https://github.com/parea-ai/parea-sdk/blob/master/docker/Dockerfile) for your package. +- Always up-to-date dependencies with [`@dependabot`](https://dependabot.com/). You will + only [enable it](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates). +- Automatic drafts of new releases with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). You + may see the list of labels + in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). Works + perfectly with [Semantic Versions](https://semver.org/) specification. + +### Open source community features + +- + +Ready-to-use [Pull Requests templates](https://github.com/parea-ai/parea-sdk/blob/master/.github/PULL_REQUEST_TEMPLATE.md) +and several [Issue templates](https://github.com/parea-ai/parea-sdk/tree/master/.github/ISSUE_TEMPLATE). + +- Files such as: `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `SECURITY.md` are generated automatically. +- [`Stale bot`](https://github.com/apps/stale) that closes abandoned issues after a period of inactivity. (You will + only [need to setup free plan](https://github.com/marketplace/stale)). Configuration + is [here](https://github.com/parea-ai/parea-sdk/blob/master/.github/.stale.yml). +- [Semantic Versions](https://semver.org/) specification + with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). + +## Installation + +```bash +pip install -U parea +``` + +or install with `Poetry` + +```bash +poetry add parea +``` + +### Makefile usage + +[`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile) contains a lot of functions for faster +development. + +
+1. Download and remove Poetry +

+ +To download and install Poetry run: + +```bash +make poetry-download +``` + +To uninstall + +```bash +make poetry-remove +``` + +

+
+ +
+2. Install all dependencies and pre-commit hooks +

+ +Install requirements: + +```bash +make install +``` + +Pre-commit hooks coulb be installed after `git init` via + +```bash +make pre-commit-install +``` + +

+
+ +
+3. Codestyle +

+ +Automatic formatting uses `pyupgrade`, `isort` and `black`. + +```bash +make codestyle + +# or use synonym +make formatting +``` + +Codestyle checks only, without rewriting files: + +```bash +make check-codestyle +``` + +> Note: `check-codestyle` uses `isort`, `black` and `darglint` library + +Update all dev libraries to the latest version using one comand + +```bash +make update-dev-deps +``` + +

+4. Code security +

+ +```bash +make check-safety +``` + +This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`. + +```bash +make check-safety +``` + +

+
+ +

+
+ +
+5. Type checks +

+ +Run `mypy` static type checker + +```bash +make mypy +``` + +

+
+ +
+6. Tests with coverage badges +

+ +Run `pytest` + +```bash +make test +``` + +

+
+ +
+7. All linters +

+ +Of course there is a command to ~~rule~~ run all linters in one: + +```bash +make lint +``` + +the same as: + +```bash +make test && make check-codestyle && make mypy && make check-safety +``` + +

+
+ +
+8. Docker +

+ +```bash +make docker-build +``` + +which is equivalent to: + +```bash +make docker-build VERSION=latest +``` + +Remove docker image with + +```bash +make docker-remove +``` + +More information [about docker](https://github.com/parea-ai/parea-sdk/tree/master/docker). + +

+
+ +
+9. Cleanup +

+Delete pycache files + +```bash +make pycache-remove +``` + +Remove package build + +```bash +make build-remove +``` + +Delete .DS_STORE files + +```bash +make dsstore-remove +``` + +Remove .mypycache + +```bash +make mypycache-remove +``` + +Or to remove all above run: + +```bash +make cleanup +``` + +

+
+ +## πŸ“ˆ Releases + +You can see the list of available releases on the [GitHub Releases](https://github.com/parea-ai/parea-sdk/releases) +page. + +We follow [Semantic Versions](https://semver.org/) specification. + +We use [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). As pull requests are merged, a draft +release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can +categorize pull requests in release notes using labels. + +### List of labels and corresponding titles + +| **Label** | **Title in Releases** | +|:-------------------------------------:|:-----------------------:| +| `enhancement`, `feature` | πŸš€ Features | +| `bug`, `refactoring`, `bugfix`, `fix` | πŸ”§ Fixes & Refactoring | +| `build`, `ci`, `testing` | πŸ“¦ Build System & CI/CD | +| `breaking` | πŸ’₯ Breaking Changes | +| `documentation` | πŸ“ Documentation | +| `dependencies` | ⬆️ Dependencies updates | + +You can update it +in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). + +GitHub creates the `bug`, `enhancement`, and `documentation` labels for you. Dependabot creates the `dependencies` +label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them. + +## πŸ›‘ License + +[![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) + +This project is licensed under the terms of the `Apache Software License 2.0` license. +See [LICENSE](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) for more details. + +## πŸ“ƒ Citation + +```bibtex +@misc{parea-sdk, + author = {parea-ai}, + title = {Parea python sdk}, + year = {2023}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://github.com/parea-ai/parea-sdk}} +} +``` + +## Credits [![πŸš€ Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template) + +This project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template) diff --git a/README.md b/README.md index 732b43b1..a50d31ea 100644 --- a/README.md +++ b/README.md @@ -7,378 +7,87 @@ [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/parea-ai/parea-sdk/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) -[![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/parea-ai/parea-sdk/blob/master/.pre-commit-config.yaml) [![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/parea-ai/parea-sdk/releases) [![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) -![Coverage Report](assets/images/coverage.svg) Parea python sdk -## Very first steps - -### Initialize your code - -1. Initialize `git` inside your repo: - -```bash -cd parea-sdk && git init -``` - -2. If you don't have `Poetry` installed run: - -```bash -make poetry-download -``` - -3. Initialize poetry and install `pre-commit` hooks: - -```bash -make install -make pre-commit-install -``` - -4. Run the codestyle: +## Installation ```bash -make codestyle +pip install -U parea ``` -5. Upload initial code to GitHub: +or install with `Poetry` ```bash -git add . -git commit -m ":tada: Initial commit" -git branch -M main -git remote add origin https://github.com/parea-ai/parea-sdk.git -git push -u origin main +poetry add parea ``` -### Set up bots - -- Set - up [Dependabot](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates) - to ensure you have the latest dependencies. -- Set up [Stale bot](https://github.com/apps/stale) for automatic issue closing. +## Getting Started -### Poetry +```python +import os -Want to know more about Poetry? Check [its documentation](https://python-poetry.org/docs/). +from dotenv import load_dotenv -
-Details about Poetry -

+from parea.client import Parea +from parea.schemas.models import Completion, UseDeployedPrompt, CompletionResponse, UseDeployedPromptResponse -Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: +load_dotenv() -- `poetry add numpy@latest` -- `poetry run pytest` -- `poetry publish --build` +p = Parea(api_key=os.getenv("API_KEY")) -etc -

-
+# You will find this deployment_id in the Parea dashboard +deployment_id = '' -### Building and releasing your package +# Assuming your deployed prompt's message is: +# {"role": "user", "content": "Write a hello world program using {{x}} and the {{y}} framework."} +inputs = {"inputs": {"x": "Golang", "y": "Fiber"}} -Building a new version of the application contains steps: +# You can easily unpack a dictionary into an attrs class +test_completion = Completion( + **{ + "deployment_id": deployment_id, + "llm_inputs": inputs, + "metadata": {"purpose": "testing"} + } +) -- Bump the version of your package `poetry version `. You can pass the new version explicitly, or a rule such - as `major`, `minor`, or `patch`. For more details, refer to the [Semantic Versions](https://semver.org/) standard. -- Make a commit to `GitHub`. -- Create a `GitHub release`. -- And... publish πŸ™‚ `poetry publish --build` +# By passing in my inputs, in addition to the raw message with unfilled variables {{x}} and {{y}}, +# you we will also get the filled-in prompt: +# {"role": "user", "content": "Write a hello world program using Golang and the Fiber framework."} +test_get_prompt = UseDeployedPrompt(deployment_id=deployment_id, inputs=inputs) -## πŸš€ Features -### Development features +def main(): + completion_response: CompletionResponse = p.completion(data=test_completion) + print(completion_response) + deployed_prompt: UseDeployedPromptResponse = p.get_prompt(data=test_get_prompt) + print("\n\n") + print(deployed_prompt) -- Supports for `Python 3.9` and higher. -- [`Poetry`](https://python-poetry.org/) as the dependencies manager. See configuration - in [`pyproject.toml`](https://github.com/parea-ai/parea-sdk/blob/master/pyproject.toml) - and [`setup.cfg`](https://github.com/parea-ai/parea-sdk/blob/master/setup.cfg). -- Automatic codestyle with [`black`](https://github.com/psf/black), [`isort`](https://github.com/timothycrosley/isort) - and [`pyupgrade`](https://github.com/asottile/pyupgrade). -- Ready-to-use [`pre-commit`](https://pre-commit.com/) hooks with code-formatting. -- Type checks with [`mypy`](https://mypy.readthedocs.io); docstring checks - with [`darglint`](https://github.com/terrencepreilly/darglint); security checks - with [`safety`](https://github.com/pyupio/safety) and [`bandit`](https://github.com/PyCQA/bandit) -- Testing with [`pytest`](https://docs.pytest.org/en/latest/). -- -Ready-to-use [`.editorconfig`](https://github.com/parea-ai/parea-sdk/blob/master/.editorconfig), [`.dockerignore`](https://github.com/parea-ai/parea-sdk/blob/master/.dockerignore), -and [`.gitignore`](https://github.com/parea-ai/parea-sdk/blob/master/.gitignore). You don't have to worry about those -things. - -### Deployment features - -- `GitHub` integration: issue and pr templates. -- `Github Actions` with - predefined [build workflow](https://github.com/parea-ai/parea-sdk/blob/master/.github/workflows/build.yml) as the - default CI/CD. -- Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds, - etc with [`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile#L89). More details - in [makefile-usage](#makefile-usage). -- [Dockerfile](https://github.com/parea-ai/parea-sdk/blob/master/docker/Dockerfile) for your package. -- Always up-to-date dependencies with [`@dependabot`](https://dependabot.com/). You will - only [enable it](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates). -- Automatic drafts of new releases with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). You - may see the list of labels - in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). Works - perfectly with [Semantic Versions](https://semver.org/) specification. +async def main_async(): + completion_response: CompletionResponse = await p.acompletion(data=test_completion) + print(completion_response) + deployed_prompt: UseDeployedPromptResponse = await p.aget_prompt(data=test_get_prompt) + print("\n\n") + print(deployed_prompt) +``` ### Open source community features -- - Ready-to-use [Pull Requests templates](https://github.com/parea-ai/parea-sdk/blob/master/.github/PULL_REQUEST_TEMPLATE.md) and several [Issue templates](https://github.com/parea-ai/parea-sdk/tree/master/.github/ISSUE_TEMPLATE). - Files such as: `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `SECURITY.md` are generated automatically. -- [`Stale bot`](https://github.com/apps/stale) that closes abandoned issues after a period of inactivity. (You will - only [need to setup free plan](https://github.com/marketplace/stale)). Configuration - is [here](https://github.com/parea-ai/parea-sdk/blob/master/.github/.stale.yml). - [Semantic Versions](https://semver.org/) specification with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). -## Installation - -```bash -pip install -U parea -``` - -or install with `Poetry` - -```bash -poetry add parea -``` - -### Makefile usage - -[`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile) contains a lot of functions for faster -development. - -
-1. Download and remove Poetry -

- -To download and install Poetry run: - -```bash -make poetry-download -``` - -To uninstall - -```bash -make poetry-remove -``` - -

-
- -
-2. Install all dependencies and pre-commit hooks -

- -Install requirements: - -```bash -make install -``` - -Pre-commit hooks coulb be installed after `git init` via - -```bash -make pre-commit-install -``` - -

-
- -
-3. Codestyle -

- -Automatic formatting uses `pyupgrade`, `isort` and `black`. - -```bash -make codestyle - -# or use synonym -make formatting -``` - -Codestyle checks only, without rewriting files: - -```bash -make check-codestyle -``` - -> Note: `check-codestyle` uses `isort`, `black` and `darglint` library - -Update all dev libraries to the latest version using one comand - -```bash -make update-dev-deps -``` - -

-4. Code security -

- -```bash -make check-safety -``` - -This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`. - -```bash -make check-safety -``` - -

-
- -

-
- -
-5. Type checks -

- -Run `mypy` static type checker - -```bash -make mypy -``` - -

-
- -
-6. Tests with coverage badges -

- -Run `pytest` - -```bash -make test -``` - -

-
- -
-7. All linters -

- -Of course there is a command to ~~rule~~ run all linters in one: - -```bash -make lint -``` - -the same as: - -```bash -make test && make check-codestyle && make mypy && make check-safety -``` - -

-
- -
-8. Docker -

- -```bash -make docker-build -``` - -which is equivalent to: - -```bash -make docker-build VERSION=latest -``` - -Remove docker image with - -```bash -make docker-remove -``` - -More information [about docker](https://github.com/parea-ai/parea-sdk/tree/master/docker). - -

-
- -
-9. Cleanup -

-Delete pycache files - -```bash -make pycache-remove -``` - -Remove package build - -```bash -make build-remove -``` - -Delete .DS_STORE files - -```bash -make dsstore-remove -``` - -Remove .mypycache - -```bash -make mypycache-remove -``` - -Or to remove all above run: - -```bash -make cleanup -``` - -

-
- -## πŸ“ˆ Releases - -You can see the list of available releases on the [GitHub Releases](https://github.com/parea-ai/parea-sdk/releases) -page. - -We follow [Semantic Versions](https://semver.org/) specification. - -We use [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). As pull requests are merged, a draft -release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can -categorize pull requests in release notes using labels. - -### List of labels and corresponding titles - -| **Label** | **Title in Releases** | -|:-------------------------------------:|:-----------------------:| -| `enhancement`, `feature` | πŸš€ Features | -| `bug`, `refactoring`, `bugfix`, `fix` | πŸ”§ Fixes & Refactoring | -| `build`, `ci`, `testing` | πŸ“¦ Build System & CI/CD | -| `breaking` | πŸ’₯ Breaking Changes | -| `documentation` | πŸ“ Documentation | -| `dependencies` | ⬆️ Dependencies updates | - -You can update it -in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). - -GitHub creates the `bug`, `enhancement`, and `documentation` labels for you. Dependabot creates the `dependencies` -label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them. - ## πŸ›‘ License [![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) @@ -398,7 +107,3 @@ See [LICENSE](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) for mor howpublished = {\url{https://github.com/parea-ai/parea-sdk}} } ``` - -## Credits [![πŸš€ Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template) - -This project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template) diff --git a/parea/example.py b/parea/example.py index 51f10413..23edac7b 100644 --- a/parea/example.py +++ b/parea/example.py @@ -4,37 +4,41 @@ from dotenv import load_dotenv from parea.client import Parea -from parea.schemas.models import Completion, UseDeployedPrompt +from parea.schemas.models import Completion, CompletionResponse, UseDeployedPrompt, UseDeployedPromptResponse load_dotenv() p = Parea(api_key=os.getenv("API_KEY")) # You will find this deployment_id in the Parea dashboard -deployment_id = "p-qsefFeFEICnxqJ_yLjji" -# Assuming my deployed prompt's message is: +deployment_id = os.getenv("DEPLOYMENT_ID") +# Assuming your deployed prompt's message is: # {"role": "user", "content": "Write a hello world program using {{x}} and the {{y}} framework."} inputs = {"inputs": {"x": "Golang", "y": "Fiber"}} + +# You can easily unpack a dictionary into an attrs class test_completion = Completion(**{"deployment_id": deployment_id, "llm_inputs": inputs, "metadata": {"purpose": "testing"}}) -# By passing in my inputs, instead of unfilled variables {{x}} and {{y}}, we will also have the filled in prompt: + +# By passing in my inputs, in addition to the raw message with unfilled variables {{x}} and {{y}}, +# you we will also get the filled-in prompt: # {"role": "user", "content": "Write a hello world program using Golang and the Fiber framework."} -test_get_prompt = UseDeployedPrompt(deployment_id, inputs) +test_get_prompt = UseDeployedPrompt(deployment_id=deployment_id, inputs=inputs) def main(): - r = p.completion(data=test_completion) - print(r) - r2 = p.get_prompt(data=test_get_prompt) + completion_response: CompletionResponse = p.completion(data=test_completion) + print(completion_response) + deployed_prompt: UseDeployedPromptResponse = p.get_prompt(data=test_get_prompt) print("\n\n") - print(r2) + print(deployed_prompt) async def main_async(): - r = await p.acompletion(data=test_completion) - print(r) - r2 = await p.aget_prompt(data=test_get_prompt) + completion_response: CompletionResponse = await p.acompletion(data=test_completion) + print(completion_response) + deployed_prompt: UseDeployedPromptResponse = await p.aget_prompt(data=test_get_prompt) print("\n\n") - print(r2) + print(deployed_prompt) def hello(name: str) -> str: From af4bd5356fa5c7cbbfcc8c4981100e2ed0d39b61 Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Mon, 24 Jul 2023 11:16:29 -0700 Subject: [PATCH 2/2] .gitignore is now working --- .env | 3 - .gitignore | 1 + LocalREADME.md | 404 ------------------------------------------------- 3 files changed, 1 insertion(+), 407 deletions(-) delete mode 100644 .env delete mode 100644 LocalREADME.md diff --git a/.env b/.env deleted file mode 100644 index c5e457b0..00000000 --- a/.env +++ /dev/null @@ -1,3 +0,0 @@ -PAREA_API_URL=http://localhost:8000/api/parea/v1 -API_KEY=pai-83bc9a58b025773fae7bc1e8b2518d32c4c5862f70116a1124021af0e46d046f -DEPLOYMENT_ID=p-qZrnFeFEICpqcXJ_yLjji diff --git a/.gitignore b/.gitignore index dc0e398f..7cc27810 100644 --- a/.gitignore +++ b/.gitignore @@ -618,3 +618,4 @@ MigrationBackup/ # End of https://www.gitignore.io/api/osx,python,pycharm,windows,visualstudio,visualstudiocode /LocalREADME.md LocalREADME.md +.env diff --git a/LocalREADME.md b/LocalREADME.md deleted file mode 100644 index 732b43b1..00000000 --- a/LocalREADME.md +++ /dev/null @@ -1,404 +0,0 @@ -# parea-sdk - -
- -[![Build status](https://github.com/parea-ai/parea-sdk/workflows/build/badge.svg?branch=master&event=push)](https://github.com/parea-ai/parea-sdk/actions?query=workflow%3Abuild) -[![Python Version](https://img.shields.io/pypi/pyversions/parea-sdk.svg)](https://pypi.org/project/parea-sdk/) -[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/parea-ai/parea-sdk/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) - -[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) -[![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) -[![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/parea-ai/parea-sdk/blob/master/.pre-commit-config.yaml) -[![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/parea-ai/parea-sdk/releases) -[![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) -![Coverage Report](assets/images/coverage.svg) - -Parea python sdk - -
- -## Very first steps - -### Initialize your code - -1. Initialize `git` inside your repo: - -```bash -cd parea-sdk && git init -``` - -2. If you don't have `Poetry` installed run: - -```bash -make poetry-download -``` - -3. Initialize poetry and install `pre-commit` hooks: - -```bash -make install -make pre-commit-install -``` - -4. Run the codestyle: - -```bash -make codestyle -``` - -5. Upload initial code to GitHub: - -```bash -git add . -git commit -m ":tada: Initial commit" -git branch -M main -git remote add origin https://github.com/parea-ai/parea-sdk.git -git push -u origin main -``` - -### Set up bots - -- Set - up [Dependabot](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates) - to ensure you have the latest dependencies. -- Set up [Stale bot](https://github.com/apps/stale) for automatic issue closing. - -### Poetry - -Want to know more about Poetry? Check [its documentation](https://python-poetry.org/docs/). - -
-Details about Poetry -

- -Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: - -- `poetry add numpy@latest` -- `poetry run pytest` -- `poetry publish --build` - -etc -

-
- -### Building and releasing your package - -Building a new version of the application contains steps: - -- Bump the version of your package `poetry version `. You can pass the new version explicitly, or a rule such - as `major`, `minor`, or `patch`. For more details, refer to the [Semantic Versions](https://semver.org/) standard. -- Make a commit to `GitHub`. -- Create a `GitHub release`. -- And... publish πŸ™‚ `poetry publish --build` - -## πŸš€ Features - -### Development features - -- Supports for `Python 3.9` and higher. -- [`Poetry`](https://python-poetry.org/) as the dependencies manager. See configuration - in [`pyproject.toml`](https://github.com/parea-ai/parea-sdk/blob/master/pyproject.toml) - and [`setup.cfg`](https://github.com/parea-ai/parea-sdk/blob/master/setup.cfg). -- Automatic codestyle with [`black`](https://github.com/psf/black), [`isort`](https://github.com/timothycrosley/isort) - and [`pyupgrade`](https://github.com/asottile/pyupgrade). -- Ready-to-use [`pre-commit`](https://pre-commit.com/) hooks with code-formatting. -- Type checks with [`mypy`](https://mypy.readthedocs.io); docstring checks - with [`darglint`](https://github.com/terrencepreilly/darglint); security checks - with [`safety`](https://github.com/pyupio/safety) and [`bandit`](https://github.com/PyCQA/bandit) -- Testing with [`pytest`](https://docs.pytest.org/en/latest/). -- - -Ready-to-use [`.editorconfig`](https://github.com/parea-ai/parea-sdk/blob/master/.editorconfig), [`.dockerignore`](https://github.com/parea-ai/parea-sdk/blob/master/.dockerignore), -and [`.gitignore`](https://github.com/parea-ai/parea-sdk/blob/master/.gitignore). You don't have to worry about those -things. - -### Deployment features - -- `GitHub` integration: issue and pr templates. -- `Github Actions` with - predefined [build workflow](https://github.com/parea-ai/parea-sdk/blob/master/.github/workflows/build.yml) as the - default CI/CD. -- Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds, - etc with [`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile#L89). More details - in [makefile-usage](#makefile-usage). -- [Dockerfile](https://github.com/parea-ai/parea-sdk/blob/master/docker/Dockerfile) for your package. -- Always up-to-date dependencies with [`@dependabot`](https://dependabot.com/). You will - only [enable it](https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-github-dependabot-version-updates). -- Automatic drafts of new releases with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). You - may see the list of labels - in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). Works - perfectly with [Semantic Versions](https://semver.org/) specification. - -### Open source community features - -- - -Ready-to-use [Pull Requests templates](https://github.com/parea-ai/parea-sdk/blob/master/.github/PULL_REQUEST_TEMPLATE.md) -and several [Issue templates](https://github.com/parea-ai/parea-sdk/tree/master/.github/ISSUE_TEMPLATE). - -- Files such as: `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `SECURITY.md` are generated automatically. -- [`Stale bot`](https://github.com/apps/stale) that closes abandoned issues after a period of inactivity. (You will - only [need to setup free plan](https://github.com/marketplace/stale)). Configuration - is [here](https://github.com/parea-ai/parea-sdk/blob/master/.github/.stale.yml). -- [Semantic Versions](https://semver.org/) specification - with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). - -## Installation - -```bash -pip install -U parea -``` - -or install with `Poetry` - -```bash -poetry add parea -``` - -### Makefile usage - -[`Makefile`](https://github.com/parea-ai/parea-sdk/blob/master/Makefile) contains a lot of functions for faster -development. - -
-1. Download and remove Poetry -

- -To download and install Poetry run: - -```bash -make poetry-download -``` - -To uninstall - -```bash -make poetry-remove -``` - -

-
- -
-2. Install all dependencies and pre-commit hooks -

- -Install requirements: - -```bash -make install -``` - -Pre-commit hooks coulb be installed after `git init` via - -```bash -make pre-commit-install -``` - -

-
- -
-3. Codestyle -

- -Automatic formatting uses `pyupgrade`, `isort` and `black`. - -```bash -make codestyle - -# or use synonym -make formatting -``` - -Codestyle checks only, without rewriting files: - -```bash -make check-codestyle -``` - -> Note: `check-codestyle` uses `isort`, `black` and `darglint` library - -Update all dev libraries to the latest version using one comand - -```bash -make update-dev-deps -``` - -

-4. Code security -

- -```bash -make check-safety -``` - -This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`. - -```bash -make check-safety -``` - -

-
- -

-
- -
-5. Type checks -

- -Run `mypy` static type checker - -```bash -make mypy -``` - -

-
- -
-6. Tests with coverage badges -

- -Run `pytest` - -```bash -make test -``` - -

-
- -
-7. All linters -

- -Of course there is a command to ~~rule~~ run all linters in one: - -```bash -make lint -``` - -the same as: - -```bash -make test && make check-codestyle && make mypy && make check-safety -``` - -

-
- -
-8. Docker -

- -```bash -make docker-build -``` - -which is equivalent to: - -```bash -make docker-build VERSION=latest -``` - -Remove docker image with - -```bash -make docker-remove -``` - -More information [about docker](https://github.com/parea-ai/parea-sdk/tree/master/docker). - -

-
- -
-9. Cleanup -

-Delete pycache files - -```bash -make pycache-remove -``` - -Remove package build - -```bash -make build-remove -``` - -Delete .DS_STORE files - -```bash -make dsstore-remove -``` - -Remove .mypycache - -```bash -make mypycache-remove -``` - -Or to remove all above run: - -```bash -make cleanup -``` - -

-
- -## πŸ“ˆ Releases - -You can see the list of available releases on the [GitHub Releases](https://github.com/parea-ai/parea-sdk/releases) -page. - -We follow [Semantic Versions](https://semver.org/) specification. - -We use [`Release Drafter`](https://github.com/marketplace/actions/release-drafter). As pull requests are merged, a draft -release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can -categorize pull requests in release notes using labels. - -### List of labels and corresponding titles - -| **Label** | **Title in Releases** | -|:-------------------------------------:|:-----------------------:| -| `enhancement`, `feature` | πŸš€ Features | -| `bug`, `refactoring`, `bugfix`, `fix` | πŸ”§ Fixes & Refactoring | -| `build`, `ci`, `testing` | πŸ“¦ Build System & CI/CD | -| `breaking` | πŸ’₯ Breaking Changes | -| `documentation` | πŸ“ Documentation | -| `dependencies` | ⬆️ Dependencies updates | - -You can update it -in [`release-drafter.yml`](https://github.com/parea-ai/parea-sdk/blob/master/.github/release-drafter.yml). - -GitHub creates the `bug`, `enhancement`, and `documentation` labels for you. Dependabot creates the `dependencies` -label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them. - -## πŸ›‘ License - -[![License](https://img.shields.io/github/license/parea-ai/parea-sdk)](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) - -This project is licensed under the terms of the `Apache Software License 2.0` license. -See [LICENSE](https://github.com/parea-ai/parea-sdk/blob/master/LICENSE) for more details. - -## πŸ“ƒ Citation - -```bibtex -@misc{parea-sdk, - author = {parea-ai}, - title = {Parea python sdk}, - year = {2023}, - publisher = {GitHub}, - journal = {GitHub repository}, - howpublished = {\url{https://github.com/parea-ai/parea-sdk}} -} -``` - -## Credits [![πŸš€ Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template) - -This project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template)