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 yang digunakan ChatGPT, dan merupakan model paling canggih yang tersedia saat ini. Penggunaan model ini tidak gratis , namun 10x lebih murah (dengan harga $0,002 per 1 ribu token) dibandingkan text-davinci-003
.
Lihat postingan OpenAI, Memperkenalkan ChatGPT dan Whisper API untuk informasi lebih lanjut.
Untuk menggunakannya, setel Model default yang digunakan di modelOptions.model
ke gpt-3.5-turbo
, dan ChatGPTClient
akan menangani sisanya.ChatGPTClient
sekarang adalah gpt-3.5-turbo
. Anda masih dapat mengatur userLabel
, chatGptLabel
dan promptPrefix
(instruksi sistem) seperti biasa.
Kemungkinan besar akun Anda akan diblokir jika Anda terus mengotomatiskan chat.openai.com. Lanjutkan melakukannya dengan risiko Anda sendiri.
Saya telah menambahkan ChatGPTBrowserClient
eksperimental yang bergantung pada server proxy terbalik yang menggunakan bypass Cloudflare, memungkinkan Anda 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 perhatikan bahwa jika Anda memilih untuk menempuh rute ini, Anda mengekspos token akses Anda ke server pihak ketiga sumber tertutup. Jika Anda mengkhawatirkan hal ini, Anda dapat memilih untuk menggunakan akun ChatGPT gratis untuk meminimalkan risiko, atau terus menggunakan ChatGPTClient
dengan model text-davinci-003
.
Sayangnya, metode yang kami gunakan untuk mengakses model dasar ChatGPT telah ditambal. Pilihan Anda saat ini adalah menggunakan OpenAI API resmi dengan model text-davinci-003
(yang membutuhkan biaya), atau menggunakan solusi berbasis browser untuk berinteraksi dengan backend ChatGPT (yang kurang bertenaga, lebih terbatas kecepatannya, dan lebih tidak didukung oleh perpustakaan ini saat ini).
Dengan bantuan @PawanOsman, kami telah menemukan cara untuk terus menggunakan model dasar ChatGPT . Agar tidak kehilangan akses lagi, kami memutuskan untuk menyediakan server proxy terbalik yang kompatibel dengan OpenAI API. Saya telah memperbarui ChatGPTClient
untuk mendukung penggunaan server proxy terbalik alih-alih server OpenAI API. Lihat Menggunakan Proksi Terbalik untuk informasi lebih lanjut tentang server proksi yang tersedia dan cara kerjanya.
Harap perhatikan bahwa jika Anda memilih untuk menggunakan rute ini, Anda mengekspos token akses Anda ke server pihak ketiga sumber tertutup. Jika Anda mengkhawatirkan hal ini, Anda dapat memilih untuk menggunakan akun ChatGPT gratis untuk meminimalkan risiko, atau terus menggunakan API OpenAI resmi 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 dasar yang digunakan versi ChatGPT Plus "Turbo". Responsnya sangat cepat. Saya telah memperbarui perpustakaan untuk menggunakan model ini.
Waktu yang buruk; text-chat-davinci-002-sh-alpha-aoruigiofdj83
segera dihapus setelahnya, mungkin karena model baru di luar sana?
Rasakan kecanggihan ChatGPT versi Bing GPT-4 dengan BingAIClient
(eksperimental). Server API dan CLI masih perlu diperbarui untuk mendukung hal ini , tetapi Anda dapat menggunakan klien secara langsung sekarang. Harap dicatat bahwa jika akun Anda masih dalam daftar tunggu, Anda tidak akan dapat menggunakan klien ini.
Meskipun text-chat-davinci-002-20221122
kembali lagi, sepertinya itu terus-menerus kelebihan beban dan mengembalikan kesalahan 429. Kemungkinan besar OpenAI hanya mendedikasikan sejumlah kecil sumber daya untuk model ini agar tidak digunakan secara luas oleh publik. Selain itu, saya pernah mendengar bahwa versi yang lebih baru sekarang memiliki akses yang dikunci untuk karyawan dan mitra OpenAI, jadi kecil kemungkinannya kami akan dapat menemukan solusi apa pun hingga model tersebut dirilis secara resmi.
Anda dapat menggunakan model text-davinci-003
sebagai pengganti drop-in. Perlu diingat bahwa text-davinci-003
tidak sebaik text-chat-davinci-002
(yang dilatih melalui RHLF dan disempurnakan menjadi AI percakapan), meskipun hasilnya masih cukup bagus dalam banyak kasus. Harap dicatat bahwa menggunakan text-davinci-003
akan dikenakan biaya kredit ($).
Saya akan menambahkan kembali dukungan untuk ChatGPT berbasis browser untuk server API dan CLI. Silakan bintangi dan tonton repositori ini untuk pembaruan.
Roller coaster telah mencapai perhentian berikutnya. text-chat-davinci-002-20221122
kembali aktif.
Mencoba menggunakan text-chat-davinci-002-20221122
dengan OpenAI API sekarang menghasilkan kesalahan 404. Anda dapat menggunakan model text-davinci-003
sebagai pengganti drop-in. Perlu diingat bahwa text-davinci-003
tidak sebaik text-chat-davinci-002
(yang dilatih melalui RHLF dan disempurnakan menjadi AI percakapan), meskipun hasilnya masih sangat bagus. Harap dicatat bahwa menggunakan text-davinci-003
akan dikenakan biaya kredit ($).
Harap tunggu pembaruan lebih lanjut selagi kami menyelidiki solusi lebih lanjut.
Mencoba menggunakan text-chat-davinci-002-20230126
dengan OpenAI API sekarang menghasilkan kesalahan 404. Seseorang telah menemukan nama model baru, tetapi saat ini mereka enggan membagikannya. Saya akan memperbarui repositori ini setelah saya menemukan model baru. Jika Anda memiliki petunjuk, silakan buka masalah atau permintaan penarikan.
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 sebaik text-chat-davinci-002
(yang dilatih melalui RHLF dan disempurnakan menjadi AI percakapan), meskipun hasilnya masih sangat bagus. Harap dicatat bahwa menggunakan text-davinci-003
akan dikenakan biaya kredit ($).
Pengguna perselisihan @pig#8932 telah menemukan model text-chat-davinci-002
yang berfungsi, 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 REST API, dan aplikasi CLI.
ChatGPTClient
: dukungan untuk model dasar ChatGPT resmi, gpt-3.5-turbo
, melalui API OpenAI.keyv-file
juga disertakan 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-003
BingAIClient
: dukungan untuk ChatGPT versi Bing, didukung oleh GPT-4.ChatGPTBrowserClient
: dukungan untuk situs resmi ChatGPT, 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
lalu jalankan menggunakan chatgpt-api
. Ini memerlukan parameter opsional --settings=<path_to_settings.js>
, atau mencari settings.js
di direktori saat ini jika tidak disetel, 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',
} ,
} ;
Alternatifnya, Anda dapat menginstal dan menjalankan paket secara langsung.
git clone https://github.com/waylaidwanderer/node-chatgpt-api
npm install
(jika tidak menggunakan Docker)settings.example.js
menjadi 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) Memulai atau melanjutkan percakapan. Parameter opsional hanya diperlukan untuk percakapan yang mencakup beberapa permintaan.
Bidang | Keterangan |
---|---|
pesan | Pesan yang akan ditampilkan kepada pengguna. |
percakapanId | (Opsional) ID untuk percakapan yang ingin Anda lanjutkan. |
jailbreakConversationId | (Opsional, hanya untuk BingAIClient ) Setel ke true untuk memulai percakapan dalam mode jailbreak. Setelah itu, ini akan menjadi ID untuk percakapan jailbreak (diberikan dalam respons sebagai parameter yang juga diberi nama jailbreakConversationId ). |
parentMessageId | (Opsional, untuk ChatGPTClient , dan BingAIClient dalam mode jailbreak) ID pesan induk (yaitu response.messageId ) saat melanjutkan percakapan. |
percakapanTanda tangan | (Opsional, hanya untuk BingAIClient ) Tanda tangan untuk percakapan (diberikan dalam respons sebagai parameter yang juga diberi nama conversationSignature ). Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
ID klien | (Opsional, hanya untuk BingAIClient ) ID klien. Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
Id pemanggilan | (Opsional, hanya untuk BingAIClient ) ID pemanggilan. Diperlukan saat melanjutkan percakapan kecuali dalam mode jailbreak. |
Opsi klien | (Opsional) Objek yang berisi opsi untuk klien. |
clientOptions.clientToUse | (Opsional) Klien yang akan digunakan untuk pesan ini. Nilai yang mungkin: chatgpt , chatgpt-browser , bing . |
Opsi klien.* | (Opsional) Opsi apa pun yang valid untuk klien. Misalnya, untuk ChatGPTClient , Anda dapat menyetel clientOptions.openaiApiKey untuk menyetel kunci API hanya untuk pesan ini, atau clientOptions.promptPrefix untuk memberikan instruksi khusus AI untuk pesan ini saja, dll. |
Untuk mengonfigurasi opsi mana yang dapat diubah per pesan (default: semua), lihat komentar untuk perMessageClientOptionsWhitelist
di settings.example.js
. Untuk mengizinkan perubahan klien, perMessageClientOptionsWhitelist.validClientsToUse
harus disetel ke array yang tidak kosong seperti yang dijelaskan dalam file pengaturan contoh.
Untuk memulai percakapan dengan ChatGPT, kirim permintaan POST ke titik akhir /conversation
server dengan isi JSON dengan parameter per Titik Akhir > POST /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 memiliki properti yang diperlukan (misalnya message
):
// HTTP/1.1 400 Bad Request
{
"error" : "The message parameter is required."
}
Jika terjadi kesalahan saat 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 dibuat.
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 demos/use-api-server-streaming.js untuk contoh cara menerima respons saat dihasilkan. Anda akan menerima token satu per satu, jadi Anda harus menggabungkannya sendiri.
Keluaran 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?
Keluaran 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 petunjuk penyiapan yang sama untuk server API, dengan membuat settings.js
.
Jika dipasang secara global:
chatgpt-cli
Jika dipasang secara lokal:
npm run cli
Tanggapan ChatGPT secara otomatis disalin ke papan klip Anda, sehingga Anda dapat menempelkannya ke aplikasi lain.
Seperti yang ditunjukkan pada contoh di atas, Anda dapat menyetel reverseProxyUrl
di opsi ChatGPTClient
untuk menggunakan server proksi terbalik, bukan API ChatGPT resmi. Untuk saat ini, ini adalah satu-satunya cara untuk menggunakan model dasar ChatGPT . Metode ini telah ditambal dan petunjuk di bawah ini tidak lagi relevan, namun 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
> proksi terbalik > server OpenAI. Server proxy terbalik melakukan keajaiban untuk mengakses model yang mendasarinya secara langsung melalui server OpenAI dan kemudian mengembalikan respons ke ChatGPTClient
.
Petunjuk disediakan di bawah ini.
accessToken
).reverseProxyUrl
ke https://chatgpt.hato.ai/completions
di settings.js > chatGptClient
atau opsi 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
bergantung pada model ChatGPT mana yang dapat diakses oleh akun Anda. Model harus berupa nama model ChatGPT, bukan nama model dasar, dan Anda tidak boleh menggunakan model yang tidak dapat diakses oleh akun Anda.stream: true
(API) atau onProgress
(klien) sebagai solusinya.accessToken
).reverseProxyUrl
ke https://chatgpt.pawan.krd/api/completions
di settings.js > chatGptClient
atau opsi 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
bergantung pada model ChatGPT mana yang dapat diakses oleh akun Anda. Model harus berupa nama model ChatGPT, bukan nama model dasar, dan Anda tidak boleh menggunakan model yang tidak dapat diakses oleh akun Anda.stream: true
(API) atau onProgress
(klien) sebagai solusinya. 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 dasar ChatGPT, saya harus melakukan yang terbaik untuk meniru cara situs web resmi ChatGPT menggunakannya. Ini berarti implementasi saya atau model yang mendasarinya mungkin tidak berperilaku sama persis dalam beberapa hal:
Jika Anda ingin berkontribusi pada proyek ini, silakan buat permintaan tarik dengan penjelasan rinci tentang perubahan Anda.
Proyek ini dilisensikan di bawah Lisensi MIT.