
Die Unterstützung für das offizielle Chatgpt -Modell wurde hinzugefügt! Sie können jetzt das gpt-3.5-turbo Modell mit der offiziellen OpenAI-API mit ChatGPTClient verwenden. Dies ist das gleiche Modell, das ChatGPT verwendet, und es ist das leistungsstärkste Modell, das derzeit verfügbar ist. Die Verwendung dieses Modells ist nicht kostenlos , ist jedoch 10-fach billiger (preislich bei 0,002 USD pro 1K-Token) als text-davinci-003 .
Weitere Informationen finden Sie unter OpenAs Post, Chatgpt- und Whisper -APIs vorstellen.
Um es zu verwenden, setzen Sie Das in modelOptions.model auf gpt-3.5-turbo , und ChatGPTClient wird den Rest behandeln.ChatGPTClient verwendete Standardmodell ist jetzt gpt-3.5-turbo . Sie können weiterhin userLabel , chatGptLabel und promptPrefix (Systemanweisungen) wie gewohnt festlegen.
Es kann eine höhere Wahrscheinlichkeit haben, dass Ihr Konto verboten wird, wenn Sie weiterhin chat.openai.com automatisieren. Tun Sie dies weiter auf eigenes Risiko.
Ich habe einen experimentellen ChatGPTBrowserClient hinzugefügt, der von einem Reverse -Proxy -Server abhängt, der einen Cloudflare -Bypass verwendet und es Ihnen ermöglicht, mit ChatGPT (chat.openai.com) zu sprechen, ohne die Browserautomatisierung zu erfordern. Alles, was Sie brauchen, ist Ihr Zugriffs -Token von https://chat.openai.com/api/auth/session.
Bitte beachten Sie wie immer, dass Sie, wenn Sie sich für diese Route entscheiden, Ihr Zugriffstoken einem Server mit geschlossener Quelle aussetzen. Wenn Sie darüber besorgt sind, können Sie entweder ein kostenloses ChatGPT-Konto verwenden, um Risiken zu minimieren, oder stattdessen mit dem text-davinci-003 -Modell ChatGPTClient weiterhin verwenden.
Die Methode, die wir verwendet haben, um auf die zugrunde liegenden ChatGPT -Modelle zuzugreifen, wurde leider gepatcht. Ihre Optionen sind derzeit darin, entweder die offizielle OpenAI-API mit dem text-davinci-003 -Modell (das Geld zu kosten) zu verwenden oder eine Browser-basierte Lösung zu verwenden, um mit dem Backend von ChatGPT (was weniger leistungsstark, zu diesem Zeitpunkt nicht unterstützt und von dieser Bibliothek nicht unterstützt wird).
Mit Hilfe von @pawanosman haben wir einen Weg gefunden, die ChatGPT -Modelle weiter zu verwenden . Um hoffentlich wieder den Zugang zu verlieren, haben wir beschlossen, umgekehrte Proxy -Server mit der OpenAI -API kompatibel zu sein. Ich habe ChatGPTClient aktualisiert, um die Verwendung eines Reverse -Proxy -Servers anstelle des OpenAI -API -Servers zu unterstützen. Weitere Informationen zu verfügbaren Proxy -Servern und der Funktionsweise finden Sie unter Verwendung eines Reverse -Proxy.
Bitte beachten Sie, dass Sie Ihr Zugriffstoken einem Server mit geschlossener Source aussetzen, wenn Sie sich für diese Route entscheiden. Wenn Sie darüber besorgt sind, können Sie entweder ein kostenloses Chatgpt-Konto verwenden, um Risiken zu minimieren, oder die offizielle OpenAI-API stattdessen mit dem text-davinci-003 -Modell weiterhin verwenden.
Ich habe ein neues Arbeitsmodell für text-chat-davinci-002 gefunden, text-chat-davinci-002-sh-alpha-aoruigiofdj83 . Dies ist das zugrunde liegende Modell, das die Chatgpt Plus "Turbo" -Version verwendet. Die Antworten lodern schnell. Ich habe die Bibliothek aktualisiert, um dieses Modell zu verwenden.
Schlechtes Timing; text-chat-davinci-002-sh-alpha-aoruigiofdj83 wurde kurz darauf entfernt, möglicherweise aufgrund eines neuen Modells dort draußen?
Erleben Sie die Kraft der GPT-4-Version von Bing mit BingAIClient (experimentell). Der API -Server und die CLI müssen noch aktualisiert werden, um dies zu unterstützen , aber Sie können den Client jetzt direkt verwenden. Bitte beachten Sie, dass Sie diesen Kunden nicht verwenden können, wenn Ihr Konto noch auf die Wartezeit gelistet ist.
Auch wenn text-chat-davinci-002-20221122 wieder wieder aufgenommen ist, scheint es, als wäre es ständig überladen und gibt einen 429-Fehler zurück. Es ist wahrscheinlich, dass Openai diesem Modell nur eine kleine Menge Ressourcen gewidmet hat, um zu verhindern, dass es von der Öffentlichkeit weit verbreitet wird. Darüber hinaus habe ich gehört, dass neuere Versionen jetzt zu OpenAI-Mitarbeitern und Partnern zugänglich sind. Daher ist es unwahrscheinlich, dass wir in der Lage sein werden, Problemumgehungen zu finden, bis das Modell offiziell veröffentlicht wird.
Sie können das text-davinci-003 -Modell stattdessen als Drop-In-Ersatz verwenden. Denken Sie daran, dass text-davinci-003 nicht so gut ist wie text-chat-davinci-002 (der über RHLF trainiert und als Gesprächs-KI feinstabiert wird), obwohl die Ergebnisse in den meisten Fällen immer noch ziemlich gut sind. Bitte beachten Sie, dass die Verwendung text-davinci-003 Ihre Gutschriften ($) kostet.
Ich werde die Unterstützung für den Browser-basierten ChatGPT für den API-Server und die CLI neu einsetzen. Bitte spielen Sie mit und schauen Sie sich dieses Repository an, um Updates zu erhalten.
Die Achterbahn hat den nächsten Stopp erreicht. text-chat-davinci-002-20221122 ist wieder wieder aufgestockt.
Der Versuch text-chat-davinci-002-20221122 mit der OpenAI-API zu verwenden, gibt nun einen 404-Fehler zurück. Sie können das text-davinci-003 -Modell stattdessen als Drop-In-Ersatz verwenden. Denken Sie daran, dass text-davinci-003 nicht so gut ist wie text-chat-davinci-002 (der über RHLF trainiert und als Gesprächs-KI feinstabiert wird), obwohl die Ergebnisse immer noch sehr gut sind. Bitte beachten Sie, dass die Verwendung text-davinci-003 Ihre Gutschriften ($) kostet.
Bitte halten Sie sich für weitere Aktualisierungen ab, während wir weitere Problemumgehungen untersuchen.
Der Versuch text-chat-davinci-002-20230126 mit der OpenAI-API zu verwenden, gibt nun einen 404-Fehler zurück. Jemand hat bereits den neuen Modellnamen gefunden, aber er ist nicht bereit, zu diesem Zeitpunkt zu teilen. Ich werde dieses Repository aktualisieren, sobald ich das neue Modell finde. Wenn Sie Leads haben, öffnen Sie bitte ein Problem oder eine Pull -Anfrage.
In der Zwischenzeit habe ich Unterstützung für Modelle wie text-davinci-003 hinzugefügt, die Sie als Drop-In-Ersatz verwenden können. Denken Sie daran, dass text-davinci-003 nicht so gut ist wie text-chat-davinci-002 (der über RHLF trainiert und als Gesprächs-KI feinstabiert wird), obwohl die Ergebnisse immer noch sehr gut sind. Bitte beachten Sie, dass die Verwendung text-davinci-003 Ihre Gutschriften ($) kostet.
Discord-Benutzer @Pig#8932 hat ein funktionierendes text-chat-davinci-002 -Modell gefunden, text-chat-davinci-002-20221122 . Ich habe die Bibliothek aktualisiert, um dieses Modell zu verwenden.
Eine Client -Implementierung für Chatgpt und Bing AI. Verfügbar als Node.js -Modul, REST -API -Server und CLI -App.
ChatGPTClient : Unterstützung für das offizielle Chatgpt-zugrunde liegende Modell gpt-3.5-turbo über OpenAIs API.keyv-file -Adapter ist auch in diesem Paket enthalten und kann zum Speichern von Gesprächen in einer JSON-Datei verwendet werden, wenn Sie den API-Server oder die CLI verwenden (siehe settings.example.js ).text-davinci-003BingAIClient : Unterstützung für die Bing-Version von Chatgpt, betrieben von GPT-4.ChatGPTBrowserClient : Unterstützung für die offizielle ChatGPT -Website mit einem Reverse -Proxy -Server für einen Cloudflare -Bypass.npm i @waylaidwanderer/chatgpt-api demos/use-bing-client.js .
Siehe demos/use-client.js .
Siehe demos/use-browser-client.js .
Sie können das Paket mit übertragen
npm i -g @waylaidwanderer/chatgpt-api Führen Sie es dann mit chatgpt-api aus. Dies erfordert einen optionalen --settings=<path_to_settings.js> Parameter oder sucht nach settings.js im aktuellen Verzeichnis, falls nicht eingestellt, mit folgenden Inhalten:
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',
} ,
} ;Alternativ können Sie das Paket direkt installieren und ausführen.
git clone https://github.com/waylaidwanderer/node-chatgpt-apinpm install (falls Docker nicht verwendet werden)settings.example.js umbenennen.example.js in die settings.js im Stammverzeichnis und ändern Sie die Einstellungen, sofern dies erforderlich ist.npm start oder npm run server (falls Docker nicht verwendet)docker-compose up (erfordert Docker) Starten Sie ein Gespräch oder setzen Sie fort. Optionale Parameter sind nur für Konversationen erforderlich, die mehrere Anforderungen umfassen.
| Feld | Beschreibung |
|---|---|
| Nachricht | Die Nachricht, die dem Benutzer angezeigt wird. |
| GesprächID | (Optional) Eine ID für das Gespräch, das Sie fortsetzen möchten. |
| JailbreakConverationId | (Optional, nur für BingAIClient ) Setzen Sie sich auf true , um eine Konversation im Jailbreak -Modus zu starten. Danach sollte dies die ID für die Jailbreak -Konversation sein (angegeben in der Antwort als Parameter auch als jailbreakConversationId ). |
| MuttermessageId | (Optional, für ChatGPTClient und BingAIClient im Jailbreak -Modus) Die ID der übergeordneten Nachricht (dh response.messageId ) beim Fortsetzen eines Gesprächs. |
| Gesprächsignatur | (Optional nur für BingAIClient ) eine Signatur für die Konversation (angegeben in der Antwort als Parameter auch als conversationSignature ). Erforderlich, wenn ein Gespräch fortgesetzt wird, sofern im Jailbreak -Modus nicht mehr. |
| ClientID | (Optional, nur für BingAIClient ) die ID des Kunden. Erforderlich, wenn ein Gespräch fortgesetzt wird, sofern im Jailbreak -Modus nicht mehr. |
| InvocationID | (Optional, nur für BingAIClient ) die ID der Aufruf. Erforderlich, wenn ein Gespräch fortgesetzt wird, sofern im Jailbreak -Modus nicht mehr. |
| Clientoptionen | (Optional) Ein Objekt, das Optionen für den Client enthält. |
| clientoptions.clienttouse | (Optional) Der Client, der für diese Nachricht verwendet wird. Mögliche Werte: chatgpt , chatgpt-browser , bing . |
| Clientoptionen.* | (Optional) Alle gültigen Optionen für den Client. Zum clientOptions.promptPrefix können Sie für ChatGPTClient clientOptions.openaiApiKey festlegen. |
Um zu konfigurieren, welche Optionen pro Nachricht geändert werden können (Standard: Alle) finden Sie in den Kommentaren zu perMessageClientOptionsWhitelist in settings.example.js . Um das Ändern von Clients zu ermöglichen, muss perMessageClientOptionsWhitelist.validClientsToUse auf ein nicht leeres Array eingestellt werden, wie in der Beispieleinstellungsdatei beschrieben.
Um eine Konversation mit ChatGPT zu beginnen, senden Sie eine Postanforderung an den Endpunkt des Servers /conversation mit einem JSON -Körper mit Parametern pro Endpunkt > Post /Konversation oben.
{
"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) " ,
}Der Server gibt ein JSON -Objekt mit der Antwort von ChatGPT zurück:
// 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"
}Wenn die Anforderung nicht erfolgreich ist, gibt der Server ein JSON -Objekt mit einer Fehlermeldung zurück.
Wenn das Anforderungsobjekt eine erforderliche Eigenschaft fehlt (z. B. message ):
// HTTP/1.1 400 Bad Request
{
"error" : "The message parameter is required."
}Wenn ein Fehler vorliegt, der die Nachricht an ChatGPT gesendet hat:
// HTTP/1.1 503 Service Unavailable
{
"error" : "There was an error communicating with ChatGPT."
} Sie können "stream": true in der Anforderungskörper festlegen, um einen Strom von Token zu erhalten, sobald sie erzeugt werden.
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
} ) ,
} ;In einem Beispiel für ein Beispiel dafür finden Sie, wie sie die Antwort erhalten, wie sie generiert wird. Sie erhalten jeweils ein Token, sodass Sie sie selbst verkettet müssen.
Erfolgreiche Ausgabe:
{ 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?Fehlerausgabe:
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 importieren und POST Methode verwenden. Befolgen Sie die gleichen Setup -Anweisungen für den API -Server und erstellen Sie settings.js .
Wenn global installiert:
chatgpt-cliWenn lokal installiert:
npm run cliDie Antworten von ChatGPT werden automatisch in Ihre Zwischenablage kopiert, sodass Sie sie in andere Anwendungen einfügen können.
Wie in den obigen Beispielen gezeigt, können Sie reverseProxyUrl in ChatGPTClient Optionen festlegen, um einen Reverse -Proxy -Server anstelle der offiziellen Chatgpt -API zu verwenden. Im Moment ist dies die einzige Möglichkeit, die zugrunde liegenden ChatGPT -Modelle zu verwenden . Diese Methode wurde gepatcht und die folgenden Anweisungen sind nicht mehr relevant, aber Sie möchten möglicherweise noch einen Reverse -Proxy aus anderen Gründen verwenden. Derzeit werden Reverse -Proxy -Server für die Durchführung eines Cloudflare -Bypass für ChatGPTBrowserClient verwendet.
Wie funktioniert es? Einfache Antwort: ChatGPTClient > Reverse Proxy> OpenAI -Server. Der Reverse -Proxy -Server macht unter der Haube etwas Magie, um über den Server von OpenAI direkt auf das zugrunde liegende Modell zuzugreifen, und gibt dann die Antwort an ChatGPTClient zurück.
Anweisungen finden Sie unten.
accessToken -Eigenschaft).reverseProxyUrl auf https://chatgpt.hato.ai/completions in settings.js > chatGptClient oder ChatGPTClient Optionen.settings.chatGptClient.openaiApiKey .model auf text-davinci-002-render , text-davinci-002-render-paid oder text-davinci-002-render-sha je nachdem, auf welche ChatGPT-Modelle, auf die Ihr Konto zugreifen kann. Modelle müssen ein ChatGPT -Modellname sein, nicht der zugrunde liegende Modellname, und Sie können kein Modell verwenden, auf das Ihr Konto keinen Zugriff hat.stream: true (API) oder onProgress (Client) als Problemumgehung.accessToken -Eigenschaft).reverseProxyUrl auf https://chatgpt.pawan.krd/api/completions in settings.js > chatGptClient oder ChatGPTClient Optionen.settings.chatGptClient.openaiApiKey .model auf text-davinci-002-render , text-davinci-002-render-paid oder text-davinci-002-render-sha je nachdem, auf welche ChatGPT-Modelle, auf die Ihr Konto zugreifen kann. Modelle müssen ein ChatGPT -Modellname sein, nicht der zugrunde liegende Modellname, und Sie können kein Modell verwenden, auf das Ihr Konto keinen Zugriff hat.stream: true (API) oder onProgress (Client) als Problemumgehung. Eine Liste großartiger Projekte mit @waylaidwanderer/chatgpt-api :
Fügen Sie Ihre der Liste hinzu, indem Sie diese Readme bearbeiten und eine Pull -Anfrage erstellen!
Ein Web -Client für dieses Projekt ist auch bei Waylaidwanderer/Pandoraai verfügbar.
ChatGPTClient Da gpt-3.5-turbo das zugrunde liegende Modell von Chatgpt ist, musste ich mein Bestes geben, um die Art und Weise, wie die offizielle Chatgpt-Website es verwendet, zu replizieren. Dies bedeutet, dass meine Implementierung oder das zugrunde liegende Modell in gewisser Weise möglicherweise nicht genau gleich verhalten:
Wenn Sie zu diesem Projekt beitragen möchten, erstellen Sie bitte eine Pull -Anfrage mit einer detaillierten Beschreibung Ihrer Änderungen.
Dieses Projekt ist unter der MIT -Lizenz lizenziert.