
O suporte ao modelo oficial de chatgpt foi adicionado! Agora você pode usar o modelo gpt-3.5-turbo com a API oficial do OpenAI, usando ChatGPTClient . Este é o mesmo modelo que o ChatGPT usa e é o modelo mais poderoso disponível no momento. O uso deste modelo não é gratuito , no entanto, é 10x mais barato (ao preço de US $ 0,002 por 1K tokens) que text-davinci-003 .
Consulte a postagem do OpenAI, apresentando APIs ChatGPT e Whisper para obter mais informações.
Para usá-lo, defina O modelo padrão usado no modelOptions.model como gpt-3.5-turbo e ChatGPTClient lidará com o restante.ChatGPTClient agora é gpt-3.5-turbo . Você ainda pode definir userLabel , chatGptLabel e promptPrefix (Instruções do Sistema) como de costume.
Pode haver uma chance maior de sua conta ser banida se você continuar automatizando o chat.openai.com. Continue fazendo isso por seu próprio risco.
Adicionei um ChatGPTBrowserClient experimental que depende de um servidor proxy reverso que utiliza um desvio Cloudflare, permitindo que você converse com ChatGPT (chat.openai.com) sem exigir a automação do navegador. Tudo o que você precisa é do seu token de acesso em https://chat.openai.com/api/auth/session.
Como sempre, observe que, se você optar por seguir esse caminho, estará expondo seu token de acesso a um servidor de terceiros de código fechado. Se você estiver preocupado com isso, pode optar por usar uma conta ChatGPT gratuita para minimizar os riscos ou continuar usando ChatGPTClient com o modelo text-davinci-003 .
Infelizmente, o método que estávamos usando para acessar os modelos de chatgpt subjacente foi corrigido. Suas opções agora são usar a API oficial do OpenAI com o modelo text-davinci-003 (que custa dinheiro) ou usar uma solução baseada em navegador para interagir com o back-end do ChatGPT (que é menos poderoso, mais limitado e não é suportado por esta biblioteca neste momento).
Com a ajuda do @Pawanosman, descobrimos uma maneira de continuar usando os modelos subjacentes do ChatGPT . Para evitar a perda de acesso novamente, decidimos fornecer servidores proxy reversos compatíveis com a API OpenAI. Atualizei ChatGPTClient para suportar o uso de um servidor proxy reverso em vez do servidor API OpenAI. Consulte o uso de um proxy reverso para obter mais informações sobre os servidores proxy disponíveis e como eles funcionam.
Observe que, se você optar por seguir esse caminho, estará expondo seu token de acesso a um servidor de terceiros de código fechado. Se você estiver preocupado com isso, poderá optar por usar uma conta de chatgpt gratuita para minimizar os riscos ou continuar usando a API oficial do OpenAI, em vez disso, com o modelo text-davinci-003 .
Encontrei um novo modelo de trabalho para text-chat-davinci-002 , text-chat-davinci-002-sh-alpha-aoruigiofdj83 . Este é o modelo subjacente que a versão ChatGpt Plus "Turbo" usa. As respostas estão brilhando rapidamente. Atualizei a biblioteca para usar este modelo.
Timing ruim; text-chat-davinci-002-sh-alpha-aoruigiofdj83 foi removido logo depois, possivelmente devido a um novo modelo em algum lugar por aí?
Experimente o poder da versão GPT-4 do Bing do ChatGPT com BingAIClient (experimental). O servidor da API e o CLI ainda precisam ser atualizados para apoiar isso , mas você pode usar o cliente diretamente agora. Observe que, se sua conta ainda estiver listada na espera, você não poderá usar esse cliente.
Embora text-chat-davinci-002-20221122 esteja de volta novamente, parece que está constantemente sobrecarregado e retorna um erro 429. É provável que o OpenAI tenha dedicado apenas uma pequena quantidade de recursos a esse modelo para impedir que ele seja amplamente utilizado pelo público. Além disso, ouvi dizer que as versões mais recentes agora estão com acesso aos funcionários e parceiros do Openai, por isso é improvável que possamos encontrar quaisquer soluções alternativas até que o modelo seja lançado oficialmente.
Você pode usar o modelo text-davinci-003 como uma substituição de drop-in. Lembre-se de que text-davinci-003 não é tão bom quanto text-chat-davinci-002 (que é treinado via rhlf e ajustado para ser uma IA conversacional), embora os resultados ainda sejam muito bons na maioria dos casos. Observe que o uso text-davinci-003 custará créditos ($).
Vou adquirir o suporte novamente para o ChatGPT baseado no navegador para o servidor API e CLI. Por favor, estrela e assista a este repositório para atualizações.
A montanha -russa atingiu a próxima parada. text-chat-davinci-002-20221122 está de volta novamente.
Tentando usar text-chat-davinci-002-20221122 com a API OpenAI agora retorna um erro 404. Você pode usar o modelo text-davinci-003 como uma substituição de drop-in. Lembre-se de que text-davinci-003 não é tão bom quanto text-chat-davinci-002 (que é treinado via rhlf e ajustado para ser uma IA conversacional), embora os resultados ainda sejam muito bons. Observe que o uso text-davinci-003 custará créditos ($).
Por favor, mantenha mais atualizações, pois investigamos outras soluções alternativas.
Tentando usar text-chat-davinci-002-20230126 com a API OpenAI agora retorna um erro 404. Alguém já encontrou o novo nome do modelo, mas não está disposto a compartilhar neste momento. Vou atualizar este repositório assim que encontrar o novo modelo. Se você tiver leads, abra um problema ou uma solicitação de tração.
Enquanto isso, adicionei suporte para modelos como text-davinci-003 , que você pode usar como substituição. Lembre-se de que text-davinci-003 não é tão bom quanto text-chat-davinci-002 (que é treinado via rhlf e ajustado para ser uma IA conversacional), embora os resultados ainda sejam muito bons. Observe que o uso text-davinci-003 custará créditos ($).
O usuário do Discord @Pig#8932 encontrou um modelo de trabalho text-chat-davinci-002 , text-chat-davinci-002-20221122 . Atualizei a biblioteca para usar este modelo.
Uma implementação do cliente para ChatGPT e Bing AI. Disponível como um módulo Node.js, servidor API REST e aplicativo CLI.
ChatGPTClient : Suporte para o modelo oficial de ChatGPT subjacente, gpt-3.5-turbo , via API do OpenAI.keyv-file também está incluído neste pacote e pode ser usado para armazenar conversas em um arquivo JSON se você estiver usando o servidor da API ou CLI (consulte settings.example.js ).text-davinci-003BingAIClient : Suporte para a versão do Bing do ChatGPT, alimentado pelo GPT-4.ChatGPTBrowserClient : Suporte para o site oficial do ChatGPT, usando um servidor proxy reverso para um desvio do CloudFlare.npm i @waylaidwanderer/chatgpt-api Veja demos/use-bing-client.js .
Veja demos/use-client.js .
Consulte demos/use-browser-client.js .
Você pode instalar o pacote usando
npm i -g @waylaidwanderer/chatgpt-api Em seguida, execute-o usando chatgpt-api . Isso exige um parâmetro opcional --settings=<path_to_settings.js> ou procura settings.js no diretório atual se não estiver definido, com o seguinte conteúdo:
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',
} ,
} ;Como alternativa, você pode instalar e executar o pacote diretamente.
git clone https://github.com/waylaidwanderer/node-chatgpt-apinpm install (se não estiver usando o Docker)settings.example.js para o settings.js no diretório raiz e altere as configurações quando necessário.npm start ou npm run server (se não estiver usando o Docker)docker-compose up (requer Docker) Comece ou continue uma conversa. Os parâmetros opcionais são necessários apenas para conversas que abrangem várias solicitações.
| Campo | Descrição |
|---|---|
| mensagem | A mensagem a ser exibida ao usuário. |
| conversão | (Opcional) Um ID para a conversa que você deseja continuar. |
| jailbreakConversationId | (Opcional, apenas para BingAIClient ) Defina como true para iniciar uma conversa no modo de jailbreak. Depois disso, esse deve ser o ID da conversa do jailbreak (dada na resposta como um parâmetro, também chamado jailbreakConversationId ). |
| ParentMessageId | (Opcional, para ChatGPTClient e BingAIClient no modo de jailbreak) O ID da mensagem pai (ou seja, response.messageId ) ao continuar uma conversa. |
| ConversationSignature | (Opcional, apenas para BingAIClient ) Uma assinatura para a conversa (dada na resposta como um parâmetro também nomeado conversationSignature ). Exigido ao continuar uma conversa, a menos que no modo de jailbreak. |
| cliente | (Opcional, apenas para BingAIClient ) o ID do cliente. Exigido ao continuar uma conversa, a menos que no modo de jailbreak. |
| InvocationID | (Opcional, apenas para BingAIClient ) o ID da invocação. Exigido ao continuar uma conversa, a menos que no modo de jailbreak. |
| CLIETOPTIONS | (Opcional) Um objeto que contém opções para o cliente. |
| ClientOptions.ClientTouse | (Opcional) O cliente para usar para esta mensagem. Valores possíveis: chatgpt , chatgpt-browser , bing . |
| ClientOptions.* | (Opcional) Quaisquer opções válidas para o cliente. Por exemplo, para ChatGPTClient , você pode definir clientOptions.openaiApiKey para definir uma chave API apenas para esta mensagem, ou clientOptions.promptPrefix para fornecer apenas as instruções personalizadas da IA para esta mensagem etc. |
Para configurar quais opções podem ser alteradas por mensagem (Padrão: All), consulte os comentários para perMessageClientOptionsWhitelist em settings.example.js . Para permitir a mudança dos clientes, perMessageClientOptionsWhitelist.validClientsToUse deve ser definido como uma matriz não vazia, conforme descrito no arquivo de configurações de exemplo.
Para iniciar uma conversa com o ChatGPT, envie uma solicitação de postagem para o terminal do servidor /conversation com um corpo JSON com parâmetros por terminais > Post /conversa acima.
{
"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) " ,
}O servidor retornará um objeto JSON contendo a resposta do 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"
}Se a solicitação não tiver sucesso, o servidor retornará um objeto JSON com uma mensagem de erro.
Se o objeto de solicitação estiver faltando uma propriedade necessária (por exemplo, message ):
// HTTP/1.1 400 Bad Request
{
"error" : "The message parameter is required."
}Se houve um erro ao enviar a mensagem para ChatGPT:
// HTTP/1.1 503 Service Unavailable
{
"error" : "There was an error communicating with ChatGPT."
} Você pode definir "stream": true no órgão de solicitação para receber um fluxo de tokens à medida que são gerados.
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
} ) ,
} ;Consulte Demos/Use-Api-Server-Streaming.js para um exemplo de como receber a resposta como ele é gerado. Você receberá um token de cada vez, então precisará concatená -los você mesmo.
Saída bem -sucedida:
{ 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?Saída de erro:
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 primeiro e usar o método POST . Siga as mesmas instruções de configuração para o servidor API, criando settings.js .
Se instalado globalmente:
chatgpt-cliSe instalado localmente:
npm run cliAs respostas do ChatGPT são copiadas automaticamente para a sua área de transferência, para que você possa colá -las em outros aplicativos.
Conforme mostrado nos exemplos acima, você pode definir as opções ChatGPTClient reverseProxyUrl usar um servidor proxy reverso em vez da API oficial do ChatGPT. Por enquanto, esta é a única maneira de usar os modelos subjacentes do ChatGPT . Esse método foi corrigido e as instruções abaixo não são mais relevantes, mas você ainda pode usar um proxy reverso por outros motivos. Atualmente, os servidores de proxy reverso ainda são usados para executar um desvio do CloudFlare para ChatGPTBrowserClient .
Como funciona? Resposta simples: ChatGPTClient > proxy reverso> servidor OpenAI. O servidor proxy reverso faz alguma mágica sob o capô para acessar o modelo subjacente diretamente através do servidor do OpenAI e, em seguida, retorna a resposta ao ChatGPTClient .
As instruções são fornecidas abaixo.
accessToken ).reverseProxyUrl como https://chatgpt.hato.ai/completions em settings.js > chatGptClient ou opções do ChatGPTClient .settings.chatGptClient.openaiApiKey ) como o token de acesso ChatGPT que você obteve na Etapa 1.model como text-davinci-002-render , text-davinci-002-render-paid ou text-davinci-002-render-sha dependendo dos modelos ChatGPT aos quais sua conta tem acesso. Os modelos devem ser um nome de modelo ChatGPT, não o nome do modelo subjacente, e você não pode usar um modelo ao qual sua conta não tenha acesso.stream: true (API) ou onProgress (Cliente) como uma solução alternativa.accessToken ).reverseProxyUrl como https://chatgpt.pawan.krd/api/completions em settings.js > chatGptClient ou opções do ChatGPTClient .settings.chatGptClient.openaiApiKey ) como o token de acesso ChatGPT que você obteve na Etapa 1.model como text-davinci-002-render , text-davinci-002-render-paid ou text-davinci-002-render-sha dependendo dos modelos ChatGPT aos quais sua conta tem acesso. Os modelos devem ser um nome de modelo ChatGPT, não o nome do modelo subjacente, e você não pode usar um modelo ao qual sua conta não tenha acesso.stream: true (API) ou onProgress (Cliente) como uma solução alternativa. Uma lista de projetos incríveis usando @waylaidwanderer/chatgpt-api :
Adicione o seu à lista editando este ReadMe e criando uma solicitação de tração!
Um cliente da Web para este projeto também está disponível na Waylaidwanderer/Pandoraai.
ChatGPTClient Como gpt-3.5-turbo é o modelo subjacente do ChatGPT, tive que fazer o possível para replicar a maneira como o site oficial do ChatGPT o usa. Isso significa que minha implementação ou o modelo subjacente não pode se comportar exatamente o mesmo de algumas maneiras:
Se você deseja contribuir para este projeto, crie uma solicitação de tração com uma descrição detalhada de suas alterações.
Este projeto está licenciado sob a licença do MIT.