Оболочка ChatGPT в вашем TTY
Примечание
Эта версия поддерживает gpt4 и gpt4-turbo!
gptty — это интерфейс оболочки ChatGPT, который позволяет (1) взаимодействовать с ChatGPT аналогично веб-приложению, но без необходимости полагаться на стабильность веб-приложения; (2) сохраняйте контекст во время сеансов чата и структурируйте свои разговоры по своему усмотрению; (3) сохраняйте локальные копии ваших разговоров для удобства использования.
Возможно, вы системный администратор и настраиваете веб-сервер для своего работодателя. Вы получаете доступ к системе через физический интерфейс с подключением к Интернету, но без среды рабочего стола или графического интерфейса пользователя. При настройке веб-сервера вы получаете необъяснимую ошибку, которую вы перенаправляете в файл, но не хотите делать все возможное, чтобы скопировать его в другую систему с помощью браузера, чтобы вы могли найти ошибку. Вместо этого вы устанавливаете gptty и перенаправляете ошибку в клиент чата с помощью таких команд, как gptty query --tag error --question "$(cat app.error | tr 'n' ' ')"
(которые избавят от разрывов строк). для вас) или cat app.error | xargs -d 'n' -I {} gptty query --tag error --question "{}"
(предполагается, что ваша ошибка занимает только одну строку).
Альтернативно, вы являетесь разработчиком программного обеспечения или специалистом по данным, который хочет передавать данные через ChatGPT, но хочет использовать весьма абстрактный API для выполнения этих запросов вместо того, чтобы внимательно знакомиться с API OpenAI и его различными оболочками для конкретного языка. Если вы хотите обновить базу кода для использования другой модели, вам нужно иметь возможность просто изменить один файл конфигурации и ожидать, что формат ответа на запрос останется единообразным для различных моделей.
Или, может быть, вы энтузиаст, который хочет хранить локальные копии своих разговоров или хочет иметь более прямой контроль над методами категоризации, которые вы используете для этих разговоров.
OpenAI делает ряд моделей доступными через свой API. [1] В настоящее время gptty поддерживает Completions
(davinci, curie) и ChatCompletions
(gpt-3.5-turbo, gpt-4). Все, что вам нужно сделать, это указать название модели в вашей конфигурации (по умолчанию — text-davinci-003), а все остальное сделает приложение.
Вы можете установить gptty
на pip:
pip install gptty
Вы также можете установить из git:
cd ~/Code # replace this with whatever directory you want to use
git clone https://github.com/signebedi/gptty.git
cd gptty/
# now install the requirements
python3 -m venv venv
source venv/bin/activate
pip install -e .
Теперь вы можете убедиться, что он работает, запустив gptty --help
. Если у вас возникла ошибка, попробуйте настроить приложение.
gptty
считывает параметры конфигурации из файла с именем gptty.ini
, который приложение ожидает найти в том же каталоге, из которого вы запускаете gptty
, если вы не передадите собственный config_file
. В файле используется формат INI, который состоит из разделов, каждый из которых имеет свои собственные пары ключ-значение.
Ключ | Тип | Значение по умолчанию | Описание |
---|---|---|---|
API_ключ | Нить | "" | Ваш ключ API для службы GPT OpenAI. |
org_id | Нить | "" | Идентификатор вашей организации для службы GPT OpenAI |
Ваше имя | Нить | "вопрос" | Имя приглашения ввода |
gpt_name | Нить | "ответ" | Имя сгенерированного ответа |
выходной_файл | Нить | "выходной файл.txt" | Имя файла, в котором будут сохранены выходные данные |
модель | Нить | "текст-давинчи-003" | Название модели GPT, которую нужно использовать. |
температура | Плавать | 0,0 | Температура, используемая для отбора проб |
max_tokens | Целое число | 250 | Максимальное количество токенов, которые можно сгенерировать для ответа |
max_context_length | Целое число | 150 | Максимальная длина входного контекста |
context_keywords_only | Бул | Истинный | Токенизировать ключевые слова, чтобы сократить использование API |
save_new_lines | Бул | ЛОЖЬ | Сохраните исходное форматирование ответа |
verify_internet_endpoint | Нить | "google.com" | Адрес для проверки подключения к Интернету |
Вы можете изменить настройки в файле конфигурации в соответствии с вашими потребностями. Если ключ отсутствует в файле конфигурации, будет использоваться значение по умолчанию. Секция [main] используется для указания настроек программы.
[main]
api_key =my_api_key
Этот репозиторий предоставляет пример файла конфигурации assets/gptty.ini.example
, который вы можете использовать в качестве отправной точки.
Функция чата предоставляет интерактивный интерфейс чата для общения с ChatGPT. Вы можете задавать вопросы и получать ответы в режиме реального времени.
Чтобы запустить интерфейс чата, запустите gptty chat
. Вы также можете указать собственный путь к файлу конфигурации, выполнив:
gptty chat --config_path /path/to/your/gptty.ini
В интерфейсе чата вы можете напрямую вводить свои вопросы или команды. Чтобы просмотреть список доступных команд, введите :help
, после чего отобразятся следующие параметры.
Метакоманда | Описание |
---|---|
:помощь | Отображение списка доступных команд и их описаний. |
:покидать | Выйдите из ЧатGPT. |
: журналы | Отображение текущих настроек конфигурации. |
:контекст[а:б] | Отобразите историю контекста, при необходимости указав диапазон a и b. В разработке |
Чтобы использовать команду, просто введите ее в командную строку и нажмите Enter. Например, используйте следующую команду для отображения текущих настроек конфигурации в терминале:
> :configs
api_key: SOME_KEY_HERE
org_id: org-SOME_CHARS_HERE
your_name: question
gpt_name: response
output_file: output.txt
model: text-davinci-003
temperature: 0.0
max_tokens: 250
max_context_length: 5000
Вы можете в любое время ввести вопрос в приглашение, и он сгенерирует для вас ответ. Если вы хотите поделиться контекстом между запросами, см. раздел контекста ниже.
Функция запросов позволяет вам отправлять один или несколько вопросов в ChatGPT и получать ответы непосредственно в командной строке.
Чтобы использовать функцию запроса, выполните что-то вроде:
gptty query --question "What is the capital of France?" --question "What is the largest mammal?"
Вы также можете указать дополнительный тег для категоризации вашего запроса:
gptty query --question "What is the capital of France?" --tag "geography"
При необходимости вы можете указать собственный путь к файлу конфигурации:
gptty query --config_path /path/to/your/gptty.ini --question "What is the capital of France?"
Помните, что gptty использует файл конфигурации (по умолчанию gptty.ini) для хранения таких настроек, как ключи API, конфигурации модели и пути к выходным файлам. Прежде чем запускать команды gptty, убедитесь, что у вас есть действительный файл конфигурации.
Добавив тег --verbose
в конце команд чата и запроса, приложение предоставит дополнительные данные отладки, включая количество токенов для каждого запроса. Это может быть полезно, когда вам нужно отслеживать уровень использования API.
Добавив параметр --additional_context [some_string_here]
к вашим командам запроса, приложение добавит любую переданную вами строку в качестве дополнительного внешнего контекста для вашего вопроса.
Добавив тег --json
в конце команд запроса, приложение пропустит запись удобочитаемого текста в стандартный вывод и вместо этого запишет вопросы и ответы в виде объектов json, например [{"question":QUESTION_1, "response":RESPONSE_1},{"question":QUESTION_1, "response":RESPONSE_1},...]
.
Добавив тег --quiet
в конце команд запроса, приложение пропустит запись чего-либо в стандартный вывод, но все равно будет записывать ответы в output_file
указанный в файле конфигурации приложения.
Пометка текста для контекста при использовании подкоманд chat
и query
в этом приложении может помочь повысить точность генерируемых ответов. Вот как приложение обрабатывает контекст с помощью подкоманды chat
:
bananas
или shakespeare
.[tag]
. Например, если контекст вашего вопроса — «кулинария», вы можете пометить его как [cooking]
. Обязательно используйте один и тот же тег последовательно для всех связанных запросов. Вот пример того, как это может выглядеть с использованием вопросов с тегом [shakespeare]
. Обратите внимание, что во втором вопросе имя «Уильям Шекспир» вообще не упоминается.
При использовании подкоманды query
выполните те же действия, которые описаны выше, но вместо добавления к тексту вопросов желаемого тега используйте параметр --tag
, чтобы включить тег при отправке запроса. Например, если контекст вашего вопроса — «кулинария», вы можете использовать:
gptty --question "some question" --tag cooking
Приложение сохранит ваш отмеченный вопрос и ответ в выходном файле, указанном в файле конфигурации.
Вы можете автоматизировать процесс отправки нескольких вопросов команде gptty query
с помощью сценария bash. Это может быть особенно полезно, если у вас есть список вопросов, хранящихся в файле, и вы хотите обработать их все одновременно. Например, предположим, что у вас есть файл questions.txt
, в котором каждый вопрос находится на новой строке, как показано ниже.
What are the key differences between machine learning, deep learning, and artificial intelligence?
How do I choose the best programming language for a specific project or task?
Can you recommend some best practices for code optimization and performance improvement?
What are the essential principles of good software design and architecture?
How do I get started with natural language processing and text analysis in Python?
What are some popular Python libraries or frameworks for building web applications?
Can you suggest some resources to learn about data visualization and its implementation in Python?
What are some important concepts in cybersecurity, and how can I apply them to my projects?
How do I ensure that my machine learning models are fair, ethical, and unbiased?
Can you recommend strategies for staying up-to-date with the latest trends and advancements in technology and programming?
Вы можете отправить каждый вопрос из файла questions.txt
в команду gptty query
используя следующую однострочную команду bash:
xargs -d ' n ' -I {} gptty query --question " {} " < questions.txt
Класс UniversalCompletion предоставляет унифицированный интерфейс для взаимодействия с языковыми моделями OpenAI, (в основном) абстрагируя особенности того, использует ли приложение режим Completion или ChatCompletion. Основная идея — облегчить создание, настройку и управление языковыми моделями. Вот несколько примеров использования.
# First, import the UniversalCompletion class from the gptty library.
from gptty import UniversalCompletion
# Now, we instantiate a new UniversalCompletion object.
# The 'api_key' parameter is your OpenAI API key, which you get when you sign up for the API.
# The 'org_id' parameter is your OpenAI organization ID, which is also provided when you sign up.
g = UniversalCompletion ( api_key = "sk-SOME_CHARS_HERE" , org_id = "org-SOME_CHARS_HERE" )
# This connects to the OpenAI API using the provided API key and organization ID.
g . connect ()
# Now we specify which language model we want to use.
# Here, 'gpt-3.5-turbo' is specified, which is a version of the GPT-3 model.
g . set_model ( 'gpt-3.5-turbo' )
# This method is used to verify the model type.
# It returns a string that represents the endpoint for the current model in use.
g . validate_model_type ( g . model ) # Returns: 'v1/chat/completions'
# We send a request to the language model here.
# The prompt is a question, given in a format that the model understands.
# The model responds with a completion - an extension of the prompt based on what it has learned during training.
# The returned object is a representation of the response from the model.
g . fetch_response ( prompt = [{ "role" : "user" , "content" : "What is an abstraction?" }])
# Returns a JSON response with the assistant's message.