
تمت إضافة دعم طراز ChatGPT الرسمي! يمكنك الآن استخدام طراز gpt-3.5-turbo مع API Openai الرسمي ، باستخدام ChatGPTClient . هذا هو نفس النموذج الذي يستخدمه ChatGPT ، وهو أقوى نموذج متاح في الوقت الحالي. إن استخدام هذا النموذج ليس مجانيًا ، ومع ذلك فهو أرخص 10x (بسعر 0.002 دولار لكل رموز 1K) من text-davinci-003 .
راجع منشور Openai ، وتقديم chatgpt و APIs 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 بعد فترة وجيزة ، ربما بسبب نموذج جديد في مكان ما هناك؟
جرب قوة إصدار GPT-4 من Bing من ChatGpt مع 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 مع Openai API الآن إرجاع خطأ 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 وخادم API Rest و CLI.
ChatGPTClient : دعم طراز ChatGPT الرسمي الأساسي ، gpt-3.5-turbo ، عبر API Openai.keyv-file أيضًا في هذه الحزمة ، ويمكن استخدامه لتخزين المحادثات في ملف JSON إذا كنت تستخدم خادم API أو CLI (انظر settings.example.js ).text-davinci-003BingAIClient : دعم إصدار Bing من ChatGpt ، مدعوم من 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.js .npm start أو npm run server (إن لم يكن باستخدام Docker)docker-compose up (يتطلب Docker) ابدأ أو متابعة محادثة. المعلمات الاختيارية ضرورية فقط للمحادثات التي تمتد طلبات متعددة.
| مجال | وصف |
|---|---|
| رسالة | الرسالة التي سيتم عرضها على المستخدم. |
| محادثة | (اختياري) معرف للمحادثة التي تريد المتابعة. |
| jailbreakconversationid | (اختياري ، بالنسبة لـ BingAIClient فقط) ، تم تعيينه على true لبدء محادثة في وضع Jailbreak. بعد ذلك ، يجب أن يكون هذا هو معرف محادثة Jailbreak (الواردة في الاستجابة كمعلمة تسمى أيضًا jailbreakConversationId ). |
| ParentMessageId | (اختياري ، بالنسبة إلى ChatGPTClient ، و BingAIClient في وضع Jailbreak) معرف رسالة الأصل (أي response.messageId ) عند مواصلة المحادثة. |
| محادثات | (اختياري ، بالنسبة إلى BingAIClient فقط) توقيع للمحادثة (الواردة في الاستجابة كمعلمة تسمى أيضًا conversationSignature ). مطلوب عند مواصلة محادثة ما لم يكن في وضع Jailbreak. |
| ClientId | (اختياري ، ل BingAIClient فقط) معرف العميل. مطلوب عند مواصلة محادثة ما لم يكن في وضع Jailbreak. |
| invOcketID | (اختياري ، ل BingAIClient فقط) معرف الاحتجاج. مطلوب عند مواصلة محادثة ما لم يكن في وضع Jailbreak. |
| العميل | (اختياري) كائن يحتوي على خيارات للعميل. |
| ClientOptions.clientTouse | (اختياري) العميل لاستخدامه في هذه الرسالة. القيم الممكنة: chatgpt ، chatgpt-browser ، bing . |
| clientoptions.* | (اختياري) أي خيارات صالحة للعميل. على سبيل المثال ، بالنسبة إلى ChatGPTClient ، يمكنك تعيين clientOptions.openaiApiKey لتعيين مفتاح API لهذه الرسالة فقط ، أو clientOptions.promptPrefix لإعطاء الإرشادات المخصصة لـ AI لهذه الرسالة فقط ، إلخ. |
لتكوين الخيارات التي يمكن تغييرها لكل رسالة (افتراضي: الكل) ، راجع التعليقات الخاصة بـ perMessageClientOptionsWhitelist في settings.example.js . للسماح بتغيير العملاء ، يجب تعيين perMessageClientOptionsWhitelist.validClientsToUse على صفيف غير فارغ كما هو موضح في ملف إعدادات المثال.
لبدء محادثة مع ChatGPT ، أرسل طلبًا منشورًا إلى نقطة نهاية الخادم /conversation مع جسم JSON مع معلمات لكل نقاط نهاية > نشر /محادثة أعلاه.
{
"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-treaming.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 Bypass لـ 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 (Client) كحل بديل.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 (Client) كحل بديل. قائمة بالمشاريع الرائعة باستخدام @waylaidwanderer/chatgpt-api :
أضف لك إلى القائمة عن طريق تحرير هذا ReadMe وإنشاء طلب سحب!
يتوفر عميل ويب لهذا المشروع أيضًا في Waylaidwanderer/Pandoraai.
ChatGPTClient نظرًا لأن gpt-3.5-turbo هو طراز ChatGPT الأساسي ، كان عليّ أن أبذل قصارى جهدي لتكرار الطريقة التي يستخدم بها موقع ChatGPT الرسمي. هذا يعني أن تنفيذي أو النموذج الأساسي قد لا يتصرف تمامًا في بعض النواحي:
إذا كنت ترغب في المساهمة في هذا المشروع ، فيرجى إنشاء طلب سحب مع وصف مفصل للتغييرات الخاصة بك.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.