Merge pull request #507 from alxmiron/tokenize-response

pull/504/head^2
Travis Fischer 2023-04-02 11:23:00 -05:00 zatwierdzone przez GitHub
commit db6e5941ab
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 27 dodań i 4 usunięć

Wyświetl plik

@ -221,16 +221,17 @@ export class ChatGPTAPI {
result.id = response.id result.id = response.id
} }
if (response?.choices?.length) { if (response.choices?.length) {
const delta = response.choices[0].delta const delta = response.choices[0].delta
result.delta = delta.content result.delta = delta.content
if (delta?.content) result.text += delta.content if (delta?.content) result.text += delta.content
result.detail = response
if (delta.role) { if (delta.role) {
result.role = delta.role result.role = delta.role
} }
result.detail = response
onProgress?.(result) onProgress?.(result)
} }
} catch (err) { } catch (err) {
@ -296,7 +297,17 @@ export class ChatGPTAPI {
} }
} }
} }
).then((message) => { ).then(async (message) => {
if (message.detail && !message.detail.usage) {
const promptTokens = numTokens
const completionTokens = await this._getTokenCount(message.text)
message.detail.usage = {
prompt_tokens: promptTokens,
completion_tokens: completionTokens,
total_tokens: promptTokens + completionTokens,
estimated: true
}
}
return this._upsertMessage(message).then(() => message) return this._upsertMessage(message).then(() => message)
}) })

Wyświetl plik

@ -61,13 +61,25 @@ export type SendMessageBrowserOptions = {
abortSignal?: AbortSignal abortSignal?: AbortSignal
} }
interface CreateChatCompletionStreamResponse
extends openai.CreateChatCompletionDeltaResponse {
usage: CreateCompletionStreamResponseUsage
}
interface CreateCompletionStreamResponseUsage
extends openai.CreateCompletionResponseUsage {
estimated: true
}
export interface ChatMessage { export interface ChatMessage {
id: string id: string
text: string text: string
role: Role role: Role
name?: string name?: string
delta?: string delta?: string
detail?: any detail?:
| openai.CreateChatCompletionResponse
| CreateChatCompletionStreamResponse
// relevant for both ChatGPTAPI and ChatGPTUnofficialProxyAPI // relevant for both ChatGPTAPI and ChatGPTUnofficialProxyAPI
parentMessageId?: string parentMessageId?: string