fix(token): include assistant reasoning token estimates and params

This commit is contained in:
GeorgeDong32 2025-11-07 23:28:15 +08:00
parent e268e69597
commit 49320936f8

View File

@ -26,15 +26,32 @@ async function getFileContent(file: FileMetadata) {
return '' return ''
} }
/**
* token统计的消息项数组
*
*
* @param message -
* @returns role和content
*/
async function getMessageParam(message: Message): Promise<MessageItem[]> { async function getMessageParam(message: Message): Promise<MessageItem[]> {
const param: MessageItem[] = [] const param: MessageItem[] = []
const content = getMainTextContent(message) const content = getMainTextContent(message)
const files = findFileBlocks(message) const files = findFileBlocks(message)
// 对于助手消息,需要包含思考内容以匹配实际发送给模型的内容,与 convertMessageToAssistantModelMessage 的逻辑保持一致
let messageContent = content
if (message.role === 'assistant') {
const reasoningContent = getThinkingContent(message)
if (reasoningContent) {
// 将思考内容追加到主文本内容
messageContent = [content, reasoningContent].filter((s) => s !== undefined && s !== '').join(' ')
}
}
param.push({ param.push({
role: message.role, role: message.role,
content content: messageContent
}) })
if (files.length > 0) { if (files.length > 0) {
@ -165,6 +182,22 @@ export async function estimateMessagesUsage({
} as Usage } as Usage
} }
/**
* token
*
* token数量
* - assistant.prompt
* -
* - reasoning content
* -
*
* usage 使 token
* usage getMessageParam token
*
* @param assistant -
* @param msgs -
* @returns token
*/
export async function estimateHistoryTokens(assistant: Assistant, msgs: Message[]) { export async function estimateHistoryTokens(assistant: Assistant, msgs: Message[]) {
const { contextCount } = getAssistantSettings(assistant) const { contextCount } = getAssistantSettings(assistant)
const maxContextCount = contextCount const maxContextCount = contextCount