fix(server): token calculate (#12667)

This commit is contained in:
darkskygit
2025-06-04 07:09:33 +00:00
parent f54bc0c047
commit 13fa4f922a
7 changed files with 105 additions and 203 deletions

View File

@@ -19,7 +19,6 @@ import { ChatMessageCache } from './message';
import { PromptService } from './prompt';
import { PromptMessage, PromptParams } from './providers';
import {
AvailableModel,
ChatHistory,
ChatMessage,
ChatMessageSchema,
@@ -38,7 +37,7 @@ export class ChatSession implements AsyncDisposable {
private readonly messageCache: ChatMessageCache,
private readonly state: ChatSessionState,
private readonly dispose?: (state: ChatSessionState) => Promise<void>,
private readonly maxTokenSize = 3840
private readonly maxTokenSize = state.prompt.config?.maxTokens || 128 * 1024
) {}
get model() {
@@ -297,8 +296,8 @@ export class ChatSessionService {
messageCost: { increment: userMessages.length },
tokenCost: {
increment: this.calculateTokenSize(
userMessages,
state.prompt.model as AvailableModel
state.messages,
state.prompt.model
),
},
},
@@ -402,10 +401,7 @@ export class ChatSessionService {
});
}
private calculateTokenSize(
messages: PromptMessage[],
model: AvailableModel
): number {
private calculateTokenSize(messages: PromptMessage[], model: string): number {
const encoder = getTokenEncoder(model);
return messages
.map(m => encoder?.count(m.content) ?? 0)