From bdbe12d7454855a5fa4792bd222fbf20a2db1822 Mon Sep 17 00:00:00 2001 From: Farkhod Sadykov Date: Thu, 9 Feb 2023 17:09:57 +0100 Subject: [PATCH] [V041] Minor optimizations --- .gitignore | 4 +++- README.md | 2 +- setup.py | 7 +++---- sgpt.py | 32 +++++++++++++++++++++++--------- utils.py | 15 --------------- 5 files changed, 30 insertions(+), 30 deletions(-) delete mode 100644 utils.py diff --git a/.gitignore b/.gitignore index f532c16..691bba5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.egg-info -dist \ No newline at end of file +dist +sgpt.spec +build \ No newline at end of file diff --git a/README.md b/README.md index 1beb159..e27f30e 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ sgpt --shell --execute "make all files in current directory read only" # -> Execute shell command? [y/N]: y # ... ``` -At this point it is already can solve half of my Google searches, but how far we can push the limits of `text-davinci-003` model? Let's try some docker containers: +At this point it is already can solve half of most frequent Google searches, but how far we can push the limits of `text-davinci-003` model? Let's try some docker containers: ```shell sgpt -se "start nginx using docker, forward 443 and 80 port, mount current folder with index.html" # -> docker run -d -p 443:443 -p 80:80 -v $(pwd):/usr/share/nginx/html nginx diff --git a/setup.py b/setup.py index 35eaf44..32aeb0d 100644 --- a/setup.py +++ b/setup.py @@ -2,11 +2,10 @@ from setuptools import setup, find_packages setup( name="shell_gpt", - version="0.4", + version="0.4.1", packages=find_packages(), py_modules=[ "sgpt", - "utils" ], install_requires=[ "typer~=0.7.0", @@ -19,8 +18,8 @@ setup( ], }, author="Farkhod Sadykov", - author_email="farkhod.sadykov@gmail.com", - description="CLI App allows to query OpenAI Chat GPT models using API.", + author_email="farkhod@sadykov.dev", + description="CLI App allows to query OpenAI GPT-3 models using API.", long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/ther1d/shell_gpt", diff --git a/sgpt.py b/sgpt.py index 6a87c89..2f9dcb5 100644 --- a/sgpt.py +++ b/sgpt.py @@ -1,28 +1,42 @@ import os from time import sleep from pathlib import Path +from getpass import getpass import typer import requests +from rich.progress import Progress, SpinnerColumn, TextColumn -from utils import loading_spinner API_URL = "https://api.openai.com/v1/completions" - -app_data_folder = os.path.expanduser('~/.config') -api_key_file = Path(app_data_folder) / "shell-gpt" / "api_key.txt" +DATA_FOLDER = os.path.expanduser('~/.config') +KEY_FILE = Path(DATA_FOLDER) / "shell-gpt" / "api_key.txt" def get_api_key(): - if not api_key_file.exists(): - api_key = typer.prompt("Please enter your API secret key") - api_key_file.parent.mkdir(parents=True, exist_ok=True) - api_key_file.write_text(api_key) + if not KEY_FILE.exists(): + api_key = getpass(prompt="Please enter your API secret key") + KEY_FILE.parent.mkdir(parents=True, exist_ok=True) + KEY_FILE.write_text(api_key) else: - api_key = api_key_file.read_text() + api_key = KEY_FILE.read_text() return api_key +def loading_spinner(func): + def wrapper(*args, **kwargs): + if not kwargs.pop("spinner"): + return func(*args, **kwargs) + with Progress( + SpinnerColumn(), + TextColumn("[green]Requesting OpenAI..."), + transient=True + ) as progress: + progress.add_task("request") + return func(*args, **kwargs) + return wrapper + + @loading_spinner def openai_request(prompt, model, max_tokens, api_key): headers = { diff --git a/utils.py b/utils.py deleted file mode 100644 index a2c0297..0000000 --- a/utils.py +++ /dev/null @@ -1,15 +0,0 @@ -from rich.progress import Progress, SpinnerColumn, TextColumn - - -def loading_spinner(func): - def wrapper(*args, **kwargs): - if not kwargs.pop("spinner"): - return func(*args, **kwargs) - with Progress( - SpinnerColumn(), - TextColumn("[green]Requesting OpenAI..."), - transient=True - ) as progress: - progress.add_task("request") - return func(*args, **kwargs) - return wrapper