diff --git a/package.json b/package.json index 69e3ff33..5f9d1f17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "chatgpt", - "version": "5.2.2", + "name": "@tzzack/chatgpt", + "version": "1.0.0", "description": "Node.js client for the official ChatGPT API.", "author": "Travis Fischer ", "repository": "transitive-bullshit/chatgpt-api", diff --git a/src/chatgpt-api.ts b/src/chatgpt-api.ts index 2165956b..7aaa276c 100644 --- a/src/chatgpt-api.ts +++ b/src/chatgpt-api.ts @@ -181,7 +181,8 @@ export class ChatGPTAPI { const responseP = new Promise( async (resolve, reject) => { - const url = `${this._apiBaseUrl}/chat/completions` + const model = completionParams.model + let url = `${this._apiBaseUrl}/chat/completions` const headers = { 'Content-Type': 'application/json', Authorization: `Bearer ${this._apiKey}` @@ -193,6 +194,20 @@ export class ChatGPTAPI { messages, stream } + const isGpt = [ + 'gpt-4', + 'gpt-4-0314', + 'gpt-4-32k', + 'gpt-4-32k-0314', + 'gpt-3.5-turbo', + 'gpt-3.5-turbo-0301' + ].includes(model) + if (!isGpt) { + url = `${this._apiBaseUrl}/completions` + // @ts-ignore + body.prompt = messages[messages.length - 1].content + delete body.messages + } // Support multiple organizations // See https://platform.openai.com/docs/api-reference/authentication @@ -227,12 +242,18 @@ export class ChatGPTAPI { } if (response.choices?.length) { - const delta = response.choices[0].delta - result.delta = delta.content - if (delta?.content) result.text += delta.content + if (isGpt) { + const delta = response.choices[0].delta + result.delta = delta.content + if (delta?.content) result.text += delta.content - if (delta.role) { - result.role = delta.role + if (delta.role) { + result.role = delta.role + } + } else { + // @ts-ignore + const text = response.choices[0].text + result.text += text } result.detail = response