
Dukungan untuk model chatgpt resmi telah ditambahkan! Anda sekarang dapat menggunakan model gpt-3.5-turbo dengan Openai API resmi, menggunakan ChatGPTClient . Ini adalah model yang sama dengan yang digunakan chatgpt, dan ini adalah model paling kuat yang tersedia saat ini. Penggunaan model ini tidak gratis , namun 10x lebih murah (dengan harga $ 0,002 per 1k token) daripada text-davinci-003 .
Lihat posting Openai, memperkenalkan chatgpt dan wisik API untuk informasi lebih lanjut.
Untuk menggunakannya, atur Model default yang digunakan dalam modelOptions.model ke gpt-3.5-turbo , dan ChatGPTClient akan menangani sisanya.ChatGPTClient sekarang gpt-3.5-turbo . Anda masih dapat mengatur userLabel , chatGptLabel dan promptPrefix (Instruksi Sistem) seperti biasa.
Mungkin ada peluang lebih tinggi dari akun Anda yang dilarang jika Anda terus mengotomatisasi chat.openai.com. Terus melakukannya dengan risiko Anda sendiri.
Saya telah menambahkan ChatGPTBrowserClient eksperimental yang tergantung pada server proxy terbalik yang memanfaatkan bypass cloudflare, memungkinkan Anda untuk berbicara dengan chatgpt (chat.openai.com) tanpa memerlukan otomatisasi browser. Yang Anda butuhkan hanyalah token akses Anda dari https://chat.openai.com/api/auth/session.
Seperti biasa, harap dicatat bahwa jika Anda memilih untuk menempuh rute ini, Anda mengekspos token akses Anda ke server pihak ketiga tertutup. Jika Anda khawatir tentang hal ini, Anda dapat memilih untuk menggunakan akun chatgpt gratis untuk meminimalkan risiko, atau terus menggunakan ChatGPTClient sebagai gantinya dengan model text-davinci-003 .
Metode yang kami gunakan untuk mengakses model yang mendasari chatgpt telah ditambal, sayangnya. Pilihan Anda saat ini adalah menggunakan OPI API resmi dengan model text-davinci-003 (yang memerlukan biaya uang), atau menggunakan solusi berbasis browser untuk berinteraksi dengan backend ChatGPT (yang kurang kuat, lebih terbatas tarif dan tidak didukung oleh perpustakaan ini saat ini).
Dengan bantuan @Pawanosman, kami telah menemukan cara untuk terus menggunakan model yang mendasari chatgpt . Mudah -mudahan mencegah kehilangan akses lagi, kami telah memutuskan untuk memberikan server proxy terbalik yang kompatibel dengan API Openai. Saya telah memperbarui ChatGPTClient untuk mendukung menggunakan server proxy terbalik alih -alih server API openai. Lihat Menggunakan proxy terbalik untuk informasi lebih lanjut tentang server proxy yang tersedia dan cara kerjanya.
Harap dicatat bahwa jika Anda memilih untuk menempuh rute ini, Anda mengekspos token akses Anda ke server pihak ketiga yang tertutup. Jika Anda khawatir tentang hal ini, Anda dapat memilih untuk menggunakan akun ChatGPT gratis untuk meminimalkan risiko, atau terus menggunakan API OpenAI resmi sebagai gantinya dengan model text-davinci-003 .
Saya telah menemukan model kerja baru untuk text-chat-davinci-002 , text-chat-davinci-002-sh-alpha-aoruigiofdj83 . Ini adalah model yang mendasari yang digunakan ChatGpt Plus "Turbo". Responsnya berkobar dengan cepat. Saya telah memperbarui perpustakaan untuk menggunakan model ini.
Waktu yang buruk; text-chat-davinci-002-sh-alpha-aoruigiofdj83 dihapus segera setelah itu, mungkin karena model baru di suatu tempat di luar sana?
Rasakan kekuatan CHATGPT versi GPT-4 Bing dengan BingAIClient (eksperimental). Server API dan CLI masih perlu diperbarui untuk mendukung ini , tetapi Anda dapat menggunakan klien secara langsung sekarang. Harap dicatat bahwa jika akun Anda masih daftar tunggu, Anda tidak akan dapat menggunakan klien ini.
Meskipun text-chat-davinci-002-20221122 dicadangkan lagi, sepertinya terus-menerus kelebihan beban dan mengembalikan kesalahan 429. Kemungkinan OpenAI hanya mendedikasikan sejumlah kecil sumber daya untuk model ini untuk mencegahnya digunakan secara luas oleh publik. Selain itu, saya pernah mendengar bahwa versi yang lebih baru sekarang dikunci ke akses ke karyawan dan mitra OpenAI, jadi tidak mungkin kita dapat menemukan solusi apa pun sampai model secara resmi dirilis.
Anda dapat menggunakan model text-davinci-003 sebagai gantinya sebagai pengganti drop-in. Perlu diingat bahwa text-davinci-003 tidak sebagus text-chat-davinci-002 (yang dilatih melalui RHLF dan disesuaikan untuk menjadi AI percakapan), meskipun hasilnya masih cukup baik dalam kebanyakan kasus. Harap dicatat bahwa menggunakan text-davinci-003 akan dikenakan biaya kredit Anda ($).
Saya akan menambah dukungan untuk chatgpt berbasis browser untuk server API dan CLI. Silakan membintangi dan menonton repositori ini untuk pembaruan.
Roller Coaster telah mencapai perhentian berikutnya. text-chat-davinci-002-20221122 dicadangkan lagi.
Mencoba menggunakan text-chat-davinci-002-20221122 dengan API OpenAI sekarang mengembalikan kesalahan 404. Anda dapat menggunakan model text-davinci-003 sebagai gantinya sebagai pengganti drop-in. Perlu diingat bahwa text-davinci-003 tidak sebagus text-chat-davinci-002 (yang dilatih melalui RHLF dan disesuaikan untuk menjadi AI percakapan), meskipun hasilnya masih sangat bagus. Harap dicatat bahwa menggunakan text-davinci-003 akan dikenakan biaya kredit Anda ($).
Harap tahan untuk pembaruan lebih lanjut saat kami menyelidiki solusi lebih lanjut.
Mencoba menggunakan text-chat-davinci-002-20230126 dengan API OpenAI sekarang mengembalikan kesalahan 404. Seseorang telah menemukan nama model baru, tetapi mereka tidak mau dibagikan saat ini. Saya akan memperbarui repositori ini setelah saya menemukan model baru. Jika Anda memiliki petunjuk, buka masalah atau permintaan tarik.
Sementara itu, saya telah menambahkan dukungan untuk model seperti text-davinci-003 , yang dapat Anda gunakan sebagai pengganti drop-in. Perlu diingat bahwa text-davinci-003 tidak sebagus text-chat-davinci-002 (yang dilatih melalui RHLF dan disesuaikan untuk menjadi AI percakapan), meskipun hasilnya masih sangat bagus. Harap dicatat bahwa menggunakan text-davinci-003 akan dikenakan biaya kredit Anda ($).
Discord User @Pig#8932 telah menemukan model yang berfungsi text-chat-davinci-002 , text-chat-davinci-002-20221122 . Saya telah memperbarui perpustakaan untuk menggunakan model ini.
Implementasi Klien untuk Chatgpt dan Bing AI. Tersedia sebagai modul Node.js, server API REST, dan aplikasi CLI.
ChatGPTClient : Dukungan untuk model yang mendasari chatgpt resmi, gpt-3.5-turbo , melalui API Openai.keyv-file juga termasuk dalam paket ini, dan dapat digunakan untuk menyimpan percakapan dalam file JSON jika Anda menggunakan server API atau CLI (lihat settings.example.js ).text-davinci-003BingAIClient : Dukungan untuk ChatGPT versi Bing, ditenagai oleh GPT-4.ChatGPTBrowserClient : Dukungan untuk situs web chatgpt resmi, menggunakan server proxy terbalik untuk bypass cloudflare.npm i @waylaidwanderer/chatgpt-api Lihat demos/use-bing-client.js .
Lihat demos/use-client.js .
Lihat demos/use-browser-client.js .
Anda dapat menginstal paket menggunakan
npm i -g @waylaidwanderer/chatgpt-api Kemudian jalankan menggunakan chatgpt-api . Ini membutuhkan parameter opsional --settings=<path_to_settings.js> , atau mencari settings.js di direktori saat ini jika tidak diatur, dengan konten berikut:
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',
} ,
} ;Atau, Anda dapat menginstal dan menjalankan paket secara langsung.
git clone https://github.com/waylaidwanderer/node-chatgpt-apinpm install (jika tidak menggunakan Docker)settings.example.js ke settings.js di direktori root dan ubah pengaturan jika diperlukan.npm start atau npm run server (jika tidak menggunakan Docker)docker-compose up (membutuhkan Docker) Mulailah atau lanjutkan percakapan. Parameter opsional hanya diperlukan untuk percakapan yang menjangkau banyak permintaan.
| Bidang | Keterangan |
|---|---|
| pesan | Pesan yang akan ditampilkan kepada pengguna. |
| percakapan | (Opsional) ID untuk percakapan yang ingin Anda lanjutkan. |
| JailbreakConversationId | (Opsional, hanya untuk BingAIClient ) diatur ke true untuk memulai percakapan dalam mode jailbreak. Setelah itu, ini harus menjadi ID untuk percakapan jailbreak (diberikan dalam respons sebagai parameter yang juga bernama jailbreakConversationId ). |
| ParentMessageId | (Opsional, untuk ChatGPTClient , dan BingAIClient dalam mode jailbreak) ID dari pesan induk (yaitu response.messageId ) saat melanjutkan percakapan. |
| Conversationsignature | (Opsional, hanya untuk BingAIClient ) tanda tangan untuk percakapan (diberikan dalam respons sebagai parameter yang juga dinamai conversationSignature ). Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
| ClientId | (Opsional, hanya untuk BingAIClient ) ID klien. Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
| doa doa | (Opsional, hanya untuk BingAIClient ) ID doa. Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
| ClientOptions | (Opsional) Objek yang berisi opsi untuk klien. |
| ClientOptions.ClientTouse | (Opsional) Klien untuk digunakan untuk pesan ini. Nilai yang mungkin: chatgpt , chatgpt-browser , bing . |
| ClientOptions.* | (Opsional) Opsi yang valid untuk klien. Misalnya, untuk ChatGPTClient , Anda dapat mengatur clientOptions.openaiApiKey untuk mengatur kunci API hanya untuk pesan ini, atau clientOptions.promptPrefix untuk memberikan instruksi khusus AI hanya untuk pesan ini, dll. |
Untuk mengonfigurasi opsi mana yang dapat diubah per pesan (default: ALL), lihat komentar untuk perMessageClientOptionsWhitelist di settings.example.js . Untuk mengizinkan perubahan klien, perMessageClientOptionsWhitelist.validClientsToUse harus diatur ke array yang tidak kosong seperti yang dijelaskan dalam file Pengaturan Contoh.
Untuk memulai percakapan dengan ChatGPT, kirim permintaan posting ke titik akhir server /conversation dengan badan JSON dengan parameter per titik akhir > Posting /percakapan di atas.
{
"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) " ,
}Server akan mengembalikan objek JSON yang berisi respons 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"
}Jika permintaan tidak berhasil, server akan mengembalikan objek JSON dengan pesan kesalahan.
Jika objek permintaan tidak ada properti yang diperlukan (misalnya message ):
// HTTP/1.1 400 Bad Request
{
"error" : "The message parameter is required."
}Jika ada kesalahan yang mengirim pesan ke chatgpt:
// HTTP/1.1 503 Service Unavailable
{
"error" : "There was an error communicating with ChatGPT."
} Anda dapat mengatur "stream": true di badan permintaan untuk menerima aliran token saat dihasilkan.
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
} ) ,
} ;Lihat demo/use-api-server-streaming.js untuk contoh bagaimana menerima respons seperti yang dihasilkan. Anda akan menerima satu token sekaligus, jadi Anda perlu menggabungkannya sendiri.
Output yang berhasil:
{ 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?Output kesalahan:
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 terlebih dahulu dan menggunakan metode POST . Ikuti instruksi pengaturan yang sama untuk server API, membuat settings.js .
Jika diinstal secara global:
chatgpt-cliJika diinstal secara lokal:
npm run cliTanggapan ChatGPT secara otomatis disalin ke papan klip Anda, sehingga Anda dapat menempelkannya ke aplikasi lain.
Seperti yang ditunjukkan pada contoh -contoh di atas, Anda dapat mengatur opsi reverseProxyUrl dalam opsi ChatGPTClient untuk menggunakan server proxy terbalik alih -alih API chatgpt resmi. Untuk saat ini, ini adalah satu -satunya cara untuk menggunakan model yang mendasari chatgpt . Metode ini telah ditambal dan instruksi di bawah ini tidak lagi relevan, tetapi Anda mungkin masih ingin menggunakan proxy terbalik karena alasan lain. Saat ini, server proxy terbalik masih digunakan untuk melakukan bypass cloudflare untuk ChatGPTBrowserClient .
Bagaimana cara kerjanya? Jawaban Sederhana: ChatGPTClient > Reverse Proxy> OpenAI Server. Server Proxy Reverse melakukan beberapa keajaiban di bawah kap untuk mengakses model yang mendasarinya secara langsung melalui server OpenAI dan kemudian mengembalikan respons ke ChatGPTClient .
Instruksi disediakan di bawah ini.
accessToken ).reverseProxyUrl ke https://chatgpt.hato.ai/completions di settings.js > chatGptClient atau ChatGPTClient .settings.chatGptClient.openaiApiKey ) ke token akses chatgpt yang Anda dapatkan di langkah 1.model ke text-davinci-002-render , text-davinci-002-render-paid , atau text-davinci-002-render-sha tergantung pada model chatgpt mana yang diakses akun Anda. Model harus berupa nama model chatgpt, bukan nama model yang mendasarinya, dan Anda tidak dapat menggunakan model yang tidak dapat diakses oleh akun Anda.stream: true (API) atau onProgress (klien) sebagai solusi.accessToken ).reverseProxyUrl ke https://chatgpt.pawan.krd/api/completions di settings.js > chatGptClient atau ChatGPTClient .settings.chatGptClient.openaiApiKey ) ke token akses chatgpt yang Anda dapatkan di langkah 1.model ke text-davinci-002-render , text-davinci-002-render-paid , atau text-davinci-002-render-sha tergantung pada model chatgpt mana yang diakses akun Anda. Model harus berupa nama model chatgpt, bukan nama model yang mendasarinya, dan Anda tidak dapat menggunakan model yang tidak dapat diakses oleh akun Anda.stream: true (API) atau onProgress (klien) sebagai solusi. Daftar proyek luar biasa menggunakan @waylaidwanderer/chatgpt-api :
Tambahkan milik Anda ke daftar dengan mengedit readme ini dan membuat permintaan tarik!
Klien web untuk proyek ini juga tersedia di Waylaidwanderer/Pandoraai.
ChatGPTClient Karena gpt-3.5-turbo adalah model yang mendasari ChatGPT, saya harus melakukan yang terbaik untuk mereplikasi cara situs web chatgpt resmi menggunakannya. Ini berarti implementasi saya atau model yang mendasarinya mungkin tidak berperilaku persis sama dalam beberapa hal:
Jika Anda ingin berkontribusi pada proyek ini, silakan buat permintaan tarik dengan deskripsi terperinci tentang perubahan Anda.
Proyek ini dilisensikan di bawah lisensi MIT.