
Поддержка официальной модели CHATGPT была добавлена! Теперь вы можете использовать модель gpt-3.5-turbo с официальным API OpenAI, используя ChatGPTClient . Это та же модель, которую использует Chatgpt, и это самая мощная модель, доступная прямо сейчас. Использование этой модели не является бесплатным , однако в 10 раз дешевле (по цене $ 0,002 за токены 1K), чем text-davinci-003 .
См. Post Openai, представляя API CATGPT и Whisper для получения дополнительной информации.
Чтобы использовать его, установите Модель по умолчанию, используемая в modelOptions.model на gpt-3.5-turbo , а ChatGPTClient справится с остальными.ChatGPTClient , теперь gpt-3.5-turbo . Как обычно, вы все еще можете установить userLabel , chatGptLabel и promptPrefix (системные инструкции).
Может быть, есть больше шансов, что ваша учетная запись будет запрещена, если вы продолжите автоматизировать чат.openai.com. Продолжайте делать это на свой страх и риск.
Я добавил экспериментальный ChatGPTBrowserClient , который зависит от обратного прокси -сервера, который использует байпас CloudFlare, позволяя вам общаться с CHATGPT (чат.openai.com), не требуя автоматизации браузера. Все, что вам нужно, это ваш токен доступа от https://chat.openai.com/api/auth/session.
Как всегда, обратите внимание, что если вы решите пойти по этому маршруту, вы обнаруживаете свой токен доступа на сторонний сервер с закрытым исходным кодом. Если вы обеспокоены этим, вы можете использовать бесплатную учетную запись CHATGPT, чтобы минимизировать риски, либо продолжить использование ChatGPTClient вместо этого с моделью text-davinci-003 .
К сожалению, метод, который мы использовали для доступа к моделям, лежащим в основе CHATGPT, был исправлен. Ваши варианты сейчас должны использовать официальный API OpenAI с моделью text-davinci-003 (которая стоит денег), либо использовать решение на основе браузера для взаимодействия с бэкэнд ChatGPT (которое менее мощно, более ограничено ставкой и не поддерживается этой библиотекой в настоящее время).
С помощью @pawanosman мы нашли способ продолжить использование базовых моделей CATGPT . Надеемся, что мы снова предотвратили потерю доступа, мы решили предоставить обратные прокси -серверы, совместимые с API OpenAI. Я обновил ChatGPTClient , чтобы поддержать использование сервера обратного прокси вместо сервера API OpenAI. См. Использование обратного прокси для получения дополнительной информации о доступных прокси -серверах и о том, как они работают.
Обратите внимание, что если вы решите пойти по этому маршруту, вы выставляете свой токен доступа на сторонний сервер с закрытым исходным кодом. Если вы обеспокоены этим, вы можете использовать бесплатную учетную запись CHATGPT, чтобы минимизировать риски, либо продолжить использование официального API OpenAI вместо этого с моделью text-davinci-003 .
Я нашел новую рабочую модель для text-chat-davinci-002 , text-chat-davinci-002-sh-alpha-aoruigiofdj83 . Это основная модель, которую использует версия Catgpt Plus "Turbo". Ответы быстро сверкают. Я обновил библиотеку, чтобы использовать эту модель.
Плохое время; text-chat-davinci-002-sh-alpha-aoruigiofdj83 был удален вскоре после этого, возможно, из-за новой модели где-то там?
Испытайте силу версии Catgpt 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 . Я обновил библиотеку, чтобы использовать эту модель.
Клиентская реализация для ATAGPT и Bing AI. Доступно как модуль Node.js, REST API -сервер и CLI -приложение.
ChatGPTClient : поддержка официальной модели CatGPT, gpt-3.5-turbo , через API Openai.keyv-file также включен в этот пакет и может использоваться для хранения разговоров в файле JSON, если вы используете сервер API или CLI (см. settings.example.js ).text-davinci-003BingAIClient : поддержка версии Catgpt 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-apinpm install (если не используйте Docker)settings.example.js settings.jsnpm start или npm run server (если не использует Docker)docker-compose up (требует докера) Начать или продолжить разговор. Необязательные параметры необходимы только для разговоров, которые охватывают несколько запросов.
| Поле | Описание |
|---|---|
| сообщение | Сообщение, которое будет отображаться пользователю. |
| разговор | (Необязательно) Идентификатор для разговора, который вы хотите продолжить. |
| JailbreakConversationId | (Необязательно, только для BingAIClient ) установите true , чтобы начать разговор в режиме джейлбрейка. После этого это должен быть идентификатор для разговора о джейлбрейке (приведенный в ответе в качестве параметра, также названного jailbreakConversationId ). |
| parentmessageid | (Необязательно, для ChatGPTClient и BingAIClient в режиме джейлбрейка) Идентификатор родительского сообщения (то есть response.messageId ) при продолжении разговора. |
| беседы | (Необязательно, только для BingAIClient ) Подпись для разговора (приведенная в ответе в качестве параметра, также называемого conversationSignature ). Требуется при продолжении разговора, если только в режиме джейлбрейка. |
| ClientId | (Необязательно, только для BingAIClient ) идентификатор клиента. Требуется при продолжении разговора, если только в режиме джейлбрейка. |
| vocociotD | (Необязательно, только для 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 /CONNUMERE выше.
{
"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 > Reverse Proxy> Openai Server. Обратный прокси -сервер делает немного волшебства под капотом, чтобы получить доступ к базовой модели непосредственно через сервер Openai, а затем возвращает ответ в ChatGPTClient .
Инструкции приведены ниже.
accessToken ).reverseProxyUrl на https://chatgpt.hato.ai/completions ChatGPTClient settings.js > 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 ChatGPTClient https://chatgpt.pawan.krd/api/completions в settings.js > 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, мне пришлось сделать все возможное, чтобы повторить, как официальный веб-сайт CATGPT его использует. Это означает, что моя реализация или базовая модель может не вести себя точно так же в некотором смысле:
Если вы хотите внести свой вклад в этот проект, пожалуйста, создайте запрос на привлечение с подробным описанием ваших изменений.
Этот проект лицензирован по лицензии MIT.