Добавлена поддержка официальной модели ChatGPT! Теперь вы можете использовать модель gpt-3.5-turbo
с официальным API OpenAI, используя ChatGPTClient
. Это та же модель, которую использует ChatGPT, и это самая мощная модель, доступная на данный момент. Использование этой модели не бесплатное , однако она в 10 раз дешевле (по цене $0,002 за 1 тыс. токенов), чем text-davinci-003
.
Дополнительную информацию см. в публикации OpenAI «Введение в API ChatGPT и Whisper».
Чтобы использовать его, установите для Моделью по умолчанию, используемой в modelOptions.model
значение gpt-3.5-turbo
, а ChatGPTClient
сделает все остальное.ChatGPTClient
теперь является gpt-3.5-turbo
. Вы по-прежнему можете установить userLabel
, chatGptLabel
и promptPrefix
(системные инструкции) как обычно.
Вероятность блокировки вашей учетной записи может быть выше, если вы продолжите автоматизировать Chat.openai.com. Продолжайте делать это на свой страх и риск.
Я добавил экспериментальный ChatGPTBrowserClient
, который зависит от обратного прокси-сервера, который использует обход Cloudflare, позволяя вам общаться с ChatGPT (chat.openai.com) без необходимости автоматизации браузера. Все, что вам нужно, это ваш токен доступа с https://chat.openai.com/api/auth/session.
Как всегда, обратите внимание: если вы решите пойти по этому пути, вы предоставите свой токен доступа стороннему серверу с закрытым исходным кодом. Если вас это беспокоит, вы можете либо использовать бесплатную учетную запись ChatGPT, чтобы минимизировать риски, либо вместо этого продолжить использовать ChatGPTClient
с моделью text-davinci-003
.
К сожалению, метод, который мы использовали для доступа к базовым моделям ChatGPT, был исправлен. Прямо сейчас вы можете либо использовать официальный API OpenAI с моделью text-davinci-003
(которая стоит денег), либо использовать браузерное решение для взаимодействия с серверной частью ChatGPT (которое менее мощное, более ограниченное по скорости и в настоящее время не поддерживается этой библиотекой).
С помощью @PawanOsman мы нашли способ продолжить использование базовых моделей ChatGPT . Чтобы предотвратить повторную потерю доступа, мы решили предоставить обратные прокси-серверы, совместимые с API OpenAI. Я обновил ChatGPTClient
для поддержки использования обратного прокси-сервера вместо сервера OpenAI API. См. «Использование обратного прокси» для получения дополнительной информации о доступных прокси-серверах и о том, как они работают.
Обратите внимание: если вы решите пойти по этому пути, вы предоставите свой токен доступа стороннему серверу с закрытым исходным кодом. Если вас это беспокоит, вы можете либо использовать бесплатную учетную запись ChatGPT, чтобы минимизировать риски, либо продолжить использовать вместо этого официальный API OpenAI с моделью text-davinci-003
.
Я нашел новую рабочую модель для text-chat-davinci-002
, text-chat-davinci-002-sh-alpha-aoruigiofdj83
. Это базовая модель, которую использует версия ChatGPT Plus «Turbo». Ответы молниеносны. Я обновил библиотеку, чтобы использовать эту модель.
Неудачное время; text-chat-davinci-002-sh-alpha-aoruigiofdj83
был удален вскоре после этого, возможно, из-за появления где-то новой модели?
Испытайте мощь версии ChatGPT Bing GPT-4 с BingAIClient
(экспериментальная). Сервер API и CLI все еще необходимо обновить для поддержки этой возможности , но вы можете использовать клиент напрямую прямо сейчас. Обратите внимание: если ваша учетная запись все еще находится в списке ожидания, вы не сможете использовать этот клиент.
Несмотря на то, что text-chat-davinci-002-20221122
снова работает, похоже, что он постоянно перегружен и возвращает ошибку 429. Вполне вероятно, что OpenAI выделила этой модели лишь небольшое количество ресурсов, чтобы предотвратить ее широкое использование. Кроме того, я слышал, что доступ к новым версиям теперь ограничен для сотрудников и партнеров OpenAI, поэтому маловероятно, что мы сможем найти какие-либо обходные пути до официального выпуска модели.
Вместо этого вы можете использовать модель text-davinci-003
в качестве замены. Имейте в виду, что text-davinci-003
не так хорош, как text-chat-davinci-002
(который обучен с помощью RHLF и настроен на диалоговый ИИ), хотя в большинстве случаев результаты все равно довольно хорошие. Обратите внимание, что использование text-davinci-003
будет стоить вам кредитов ($).
Я снова добавлю поддержку браузерного ChatGPT для сервера API и CLI. Пожалуйста, поставьте звездочку и следите за обновлениями этого репозитория.
Американские горки достигли следующей остановки. text-chat-davinci-002-20221122
снова доступен.
Попытка использовать text-chat-davinci-002-20221122
с API OpenAI теперь возвращает ошибку 404. Вместо этого вы можете использовать модель text-davinci-003
в качестве замены. Имейте в виду, что text-davinci-003
не так хорош, как text-chat-davinci-002
(который обучен с помощью RHLF и настроен на работу с диалоговым ИИ), хотя результаты все равно очень хорошие. Обратите внимание, что использование text-davinci-003
будет стоить вам кредитов ($).
Пожалуйста, дождитесь дальнейших обновлений, пока мы исследуем дальнейшие обходные пути.
Попытка использовать text-chat-davinci-002-20230126
с API OpenAI теперь возвращает ошибку 404. Кто-то уже нашел название новой модели, но пока не хочет делиться. Я обновлю этот репозиторий, как только найду новую модель. Если у вас есть лиды, пожалуйста, откройте проблему или запрос на вытягивание.
Тем временем я добавил поддержку таких моделей, как text-davinci-003
, которые вы можете использовать в качестве замены. Имейте в виду, что text-davinci-003
не так хорош, как text-chat-davinci-002
(который обучен с помощью RHLF и настроен на работу с диалоговым ИИ), хотя результаты все равно очень хорошие. Обратите внимание, что использование text-davinci-003
будет стоить вам кредитов ($).
Пользователь Discord @pig#8932 нашел рабочую модель text-chat-davinci-002
, text-chat-davinci-002-20221122
. Я обновил библиотеку, чтобы использовать эту модель.
Реализация клиента для ChatGPT и Bing AI. Доступно в виде модуля Node.js, сервера REST API и приложения CLI.
ChatGPTClient
: поддержка официальной базовой модели ChatGPT, gpt-3.5-turbo
, через API OpenAI.keyv-file
также включен в этот пакет и может использоваться для хранения разговоров в файле JSON, если вы используете сервер API или CLI (см. settings.example.js
).text-davinci-003
BingAIClient
: поддержка версии ChatGPT от Bing на базе GPT-4.ChatGPTBrowserClient
: поддержка официального веб-сайта ChatGPT с использованием обратного прокси-сервера для обхода Cloudflare.npm i @waylaidwanderer/chatgpt-api
См demos/use-bing-client.js
.
См. demos/use-client.js
.
См. demos/use-browser-client.js
.
Вы можете установить пакет, используя
npm i -g @waylaidwanderer/chatgpt-api
затем запустите его с помощью chatgpt-api
. При этом принимается необязательный параметр --settings=<path_to_settings.js>
или ищется файл settings.js
в текущем каталоге, если он не установлен, со следующим содержимым:
module . exports = {
// Options for the Keyv cache, see https://www.npmjs.com/package/keyv.
// This is used for storing conversations, and supports additional drivers (conversations are stored in memory by default).
// Only necessary when using `ChatGPTClient`, or `BingAIClient` in jailbreak mode.
cacheOptions : { } ,
// If set, `ChatGPTClient` and `BingAIClient` will use `keyv-file` to store conversations to this JSON file instead of in memory.
// However, `cacheOptions.store` will override this if set
storageFilePath : process . env . STORAGE_FILE_PATH || './cache.json' ,
chatGptClient : {
// Your OpenAI API key (for `ChatGPTClient`)
openaiApiKey : process . env . OPENAI_API_KEY || '' ,
// (Optional) Support for a reverse proxy for the completions endpoint (private API server).
// Warning: This will expose your `openaiApiKey` to a third party. Consider the risks before using this.
// reverseProxyUrl: 'https://chatgpt.hato.ai/completions',
// (Optional) Parameters as described in https://platform.openai.com/docs/api-reference/completions
modelOptions : {
// You can override the model name and any other parameters here.
// The default model is `gpt-3.5-turbo`.
model : 'gpt-3.5-turbo' ,
// Set max_tokens here to override the default max_tokens of 1000 for the completion.
// max_tokens: 1000,
} ,
// (Optional) Davinci models have a max context length of 4097 tokens, but you may need to change this for other models.
// maxContextTokens: 4097,
// (Optional) You might want to lower this to save money if using a paid model like `text-davinci-003`.
// Earlier messages will be dropped until the prompt is within the limit.
// maxPromptTokens: 3097,
// (Optional) Set custom instructions instead of "You are ChatGPT...".
// (Optional) Set a custom name for the user
// userLabel: 'User',
// (Optional) Set a custom name for ChatGPT ("ChatGPT" by default)
// chatGptLabel: 'Bob',
// promptPrefix: 'You are Bob, a cowboy in Western times...',
// A proxy string like "http://<ip>:<port>"
proxy : '' ,
// (Optional) Set to true to enable `console.debug()` logging
debug : false ,
} ,
// Options for the Bing client
bingAiClient : {
// Necessary for some people in different countries, e.g. China (https://cn.bing.com)
host : '' ,
// The "_U" cookie value from bing.com
userToken : '' ,
// If the above doesn't work, provide all your cookies as a string instead
cookies : '' ,
// A proxy string like "http://<ip>:<port>"
proxy : '' ,
// (Optional) Set to true to enable `console.debug()` logging
debug : false ,
} ,
chatGptBrowserClient : {
// (Optional) Support for a reverse proxy for the conversation endpoint (private API server).
// Warning: This will expose your access token to a third party. Consider the risks before using this.
reverseProxyUrl : 'https://bypass.churchless.tech/api/conversation' ,
// Access token from https://chat.openai.com/api/auth/session
accessToken : '' ,
// Cookies from chat.openai.com (likely not required if using reverse proxy server).
cookies : '' ,
// A proxy string like "http://<ip>:<port>"
proxy : '' ,
// (Optional) Set to true to enable `console.debug()` logging
debug : false ,
} ,
// Options for the API server
apiOptions : {
port : process . env . API_PORT || 3000 ,
host : process . env . API_HOST || 'localhost' ,
// (Optional) Set to true to enable `console.debug()` logging
debug : false ,
// (Optional) Possible options: "chatgpt", "chatgpt-browser", "bing". (Default: "chatgpt")
clientToUse : 'chatgpt' ,
// (Optional) Generate titles for each conversation for clients that support it (only ChatGPTClient for now).
// This will be returned as a `title` property in the first response of the conversation.
generateTitles : false ,
// (Optional) Set this to allow changing the client or client options in POST /conversation.
// To disable, set to `null`.
perMessageClientOptionsWhitelist : {
// The ability to switch clients using `clientOptions.clientToUse` will be disabled if `validClientsToUse` is not set.
// To allow switching clients per message, you must set `validClientsToUse` to a non-empty array.
validClientsToUse : [ 'bing' , 'chatgpt' , 'chatgpt-browser' ] , // values from possible `clientToUse` options above
// The Object key, e.g. "chatgpt", is a value from `validClientsToUse`.
// If not set, ALL options will be ALLOWED to be changed. For example, `bing` is not defined in `perMessageClientOptionsWhitelist` above,
// so all options for `bingAiClient` will be allowed to be changed.
// If set, ONLY the options listed here will be allowed to be changed.
// In this example, each array element is a string representing a property in `chatGptClient` above.
chatgpt : [
'promptPrefix' ,
'userLabel' ,
'chatGptLabel' ,
// Setting `modelOptions.temperature` here will allow changing ONLY the temperature.
// Other options like `modelOptions.model` will not be allowed to be changed.
// If you want to allow changing all `modelOptions`, define `modelOptions` here instead of `modelOptions.temperature`.
'modelOptions.temperature' ,
] ,
} ,
} ,
// Options for the CLI app
cliOptions : {
// (Optional) Possible options: "chatgpt", "bing".
// clientToUse: 'bing',
} ,
} ;
Альтернативно вы можете установить и запустить пакет напрямую.
git clone https://github.com/waylaidwanderer/node-chatgpt-api
npm install
(если не используете Docker)settings.example.js
в settings.js
в корневом каталоге и измените настройки там, где это необходимо.npm run server
npm start
или npm run (если не используете Docker)docker-compose up
(требуется Docker) Начните или продолжите разговор. Необязательные параметры необходимы только для диалогов, охватывающих несколько запросов.
Поле | Описание |
---|---|
сообщение | Сообщение, которое будет отображаться пользователю. |
идентификатор разговора | (Необязательно) Идентификатор беседы, которую вы хотите продолжить. |
побег из тюрьмыConversationId | (Необязательно, только для BingAIClient ) Установите значение true , чтобы начать разговор в режиме взлома. После этого это должен быть идентификатор диалога по джейлбрейку (указанный в ответе как параметр, также называемый jailbreakConversationId ). |
родительскийMessageId | (Необязательно, для ChatGPTClient и BingAIClient в режиме взлома) Идентификатор родительского сообщения (т. е. response.messageId ) при продолжении разговора. |
разговорПодпись | (Необязательно, только для BingAIClient ) Подпись для диалога (указанная в ответе как параметр, также называемый conversationSignature ). Требуется при продолжении разговора, кроме режима джейлбрейка. |
идентификатор клиента | (Необязательно, только для BingAIClient ) Идентификатор клиента. Требуется при продолжении разговора, кроме режима джейлбрейка. |
идентификатор вызова | (Необязательно, только для BingAIClient ) Идентификатор вызова. Требуется при продолжении разговора, кроме режима джейлбрейка. |
параметры клиента | (Необязательно) Объект, содержащий параметры для клиента. |
clientOptions.clientToUse | (Необязательно) Клиент, который будет использоваться для этого сообщения. Возможные значения: chatgpt , chatgpt-browser , bing . |
clientOptions.* | (Необязательно) Любые допустимые для клиента параметры. Например, для ChatGPTClient вы можете установить clientOptions.openaiApiKey , чтобы установить ключ API только для этого сообщения, или clientOptions.promptPrefix чтобы предоставить пользовательские инструкции AI только для этого сообщения и т. д. |
Чтобы настроить параметры, которые можно изменить для каждого сообщения (по умолчанию: все), см. комментарии к perMessageClientOptionsWhitelist
в settings.example.js
. Чтобы разрешить смену клиентов, perMessageClientOptionsWhitelist.validClientsToUse
должен быть установлен непустой массив, как описано в примере файла настроек.
Чтобы начать разговор с ChatGPT, отправьте запрос POST на конечную точку сервера /conversation
с телом JSON с параметрами для конечных точек > POST/conversation выше.
{
"message" : " Hello, how are you today? " ,
"conversationId" : " your-conversation-id (optional) " ,
"parentMessageId" : " your-parent-message-id (optional, for `ChatGPTClient` only) " ,
"conversationSignature" : " your-conversation-signature (optional, for `BingAIClient` only) " ,
"clientId" : " your-client-id (optional, for `BingAIClient` only) " ,
"invocationId" : " your-invocation-id (optional, for `BingAIClient` only) " ,
}
Сервер вернет объект JSON, содержащий ответ ChatGPT:
// HTTP/1.1 200 OK
{
"response" : "I'm doing well, thank you! How are you?" ,
"conversationId" : "your-conversation-id" ,
"messageId" : "response-message-id (for `ChatGPTClient` only)" ,
"conversationSignature" : "your-conversation-signature (for `BingAIClient` only)" ,
"clientId" : "your-client-id (for `BingAIClient` only)" ,
"invocationId" : "your-invocation-id (for `BingAIClient` only - pass this new value back into subsequent requests as-is)" ,
"details" : "an object containing the raw response from the client"
}
Если запрос не удался, сервер вернет объект JSON с сообщением об ошибке.
Если в объекте запроса отсутствует обязательное свойство (например, message
):
// HTTP/1.1 400 Bad Request
{
"error" : "The message parameter is required."
}
Если при отправке сообщения в ChatGPT произошла ошибка:
// HTTP/1.1 503 Service Unavailable
{
"error" : "There was an error communicating with ChatGPT."
}
Вы можете установить "stream": true
в теле запроса, чтобы получать поток токенов по мере их создания.
import { fetchEventSource } from '@waylaidwanderer/fetch-event-source' ; // use `@microsoft/fetch-event-source` instead if in a browser environment
const opts = {
method : 'POST' ,
headers : {
'Content-Type' : 'application/json' ,
} ,
body : JSON . stringify ( {
"message" : "Write a poem about cats." ,
"conversationId" : "your-conversation-id (optional)" ,
"parentMessageId" : "your-parent-message-id (optional)" ,
"stream" : true ,
// Any other parameters per `Endpoints > POST /conversation` above
} ) ,
} ;
См. demos/use-api-server-streaming.js для примера того, как получить ответ по мере его создания. Вы будете получать по одному токену за раз, поэтому вам нужно будет объединить их самостоятельно.
Успешный вывод:
{ data : '' , event : '' , id : '' , retry : 3000 }
{ data : 'Hello' , event : '' , id : '' , retry : undefined }
{ data : '!' , event : '' , id : '' , retry : undefined }
{ data : ' How' , event : '' , id : '' , retry : undefined }
{ data : ' can' , event : '' , id : '' , retry : undefined }
{ data : ' I' , event : '' , id : '' , retry : undefined }
{ data : ' help' , event : '' , id : '' , retry : undefined }
{ data : ' you' , event : '' , id : '' , retry : undefined }
{ data : ' today' , event : '' , id : '' , retry : undefined }
{ data : '?' , event : '' , id : '' , retry : undefined }
{ data : '<result JSON here, see Method 1>' , event : 'result' , id : '' , retry : undefined }
{ data : '[DONE]' , event : '' , id : '' , retry : undefined }
// Hello! How can I help you today?
Вывод ошибки:
const message = {
data : '{"code":503,"error":"There was an error communicating with ChatGPT."}' ,
event : 'error' ,
id : '' ,
retry : undefined
} ;
if ( message . event === 'error' ) {
console . error ( JSON . parse ( message . data ) . error ) ; // There was an error communicating with ChatGPT.
}
fetch-event-source
и использовать метод POST
. Следуйте тем же инструкциям по настройке для сервера API, создав settings.js
.
Если установлено глобально:
chatgpt-cli
Если установлено локально:
npm run cli
Ответы ChatGPT автоматически копируются в буфер обмена, поэтому вы можете вставлять их в другие приложения.
Как показано в примерах выше, вы можете reverseProxyUrl
в параметрах ChatGPTClient
, чтобы использовать обратный прокси-сервер вместо официального API ChatGPT. На данный момент это единственный способ использовать базовые модели ChatGPT . Этот метод был исправлен, и приведенные ниже инструкции больше не актуальны, но вы все равно можете захотеть использовать обратный прокси-сервер по другим причинам. В настоящее время обратные прокси-серверы по-прежнему используются для обхода Cloudflare для ChatGPTBrowserClient
.
Как это работает? Простой ответ: ChatGPTClient
> обратный прокси > сервер OpenAI. Обратный прокси-сервер творит скрытую магию, чтобы получить доступ к базовой модели напрямую через сервер OpenAI, а затем возвращает ответ ChatGPTClient
.
Инструкции приведены ниже.
accessToken
).reverseProxyUrl
значение https://chatgpt.hato.ai/completions
в настройках settings.js > chatGptClient
или ChatGPTClient
.settings.chatGptClient.openaiApiKey
) на токен доступа ChatGPT, который вы получили на шаге 1.model
text-davinci-002-render
, text-davinci-002-render-paid
или text-davinci-002-render-sha
в зависимости от того, к каким моделям ChatGPT имеет доступ ваша учетная запись. Модели должны иметь имя модели ChatGPT, а не имя базовой модели, и вы не можете использовать модель, к которой у вашей учетной записи нет доступа.stream: true
(API) или onProgress
(клиент) в качестве обходного пути.accessToken
).reverseProxyUrl
значение https://chatgpt.pawan.krd/api/completions
в настройках settings.js > chatGptClient
или ChatGPTClient
.settings.chatGptClient.openaiApiKey
) на токен доступа ChatGPT, который вы получили на шаге 1.model
text-davinci-002-render
, text-davinci-002-render-paid
или text-davinci-002-render-sha
в зависимости от того, к каким моделям ChatGPT имеет доступ ваша учетная запись. Модели должны иметь имя модели ChatGPT, а не имя базовой модели, и вы не можете использовать модель, к которой у вашей учетной записи нет доступа.stream: true
(API) или onProgress
(клиент) в качестве обходного пути. Список потрясающих проектов с использованием @waylaidwanderer/chatgpt-api
:
Добавьте свой в список, отредактировав этот README и создав запрос на включение!
Веб-клиент для этого проекта также доступен на сайте waylaidwanderer/PandoraAI.
ChatGPTClient
Поскольку gpt-3.5-turbo
является базовой моделью ChatGPT, мне пришлось приложить все усилия, чтобы воспроизвести способ ее использования на официальном веб-сайте ChatGPT. Это означает, что моя реализация или базовая модель могут в некоторых отношениях вести себя не совсем одинаково:
Если вы хотите внести свой вклад в этот проект, создайте запрос на включение с подробным описанием ваших изменений.
Этот проект лицензируется по лицензии MIT.