fix(converter): 清理OpenAI消息转换中的空白字符

final assistant content cannot end with trailing whitespace

移除消息内容中的前后空白字符,包括普通消息和最后一条assistant消息的尾部空白,确保转换后的数据更整洁
This commit is contained in:
hex2077 2025-12-01 15:06:50 +08:00
parent ee1f89552b
commit 8252d45f89

View file

@ -138,7 +138,7 @@ export class OpenAIConverter extends BaseConverter {
// 普通消息
if (typeof message.content === 'string') {
if (message.content) {
content.push({ type: 'text', text: message.content });
content.push({ type: 'text', text: message.content.trim() });
}
} else if (Array.isArray(message.content)) {
message.content.forEach(item => {
@ -146,7 +146,7 @@ export class OpenAIConverter extends BaseConverter {
switch (item.type) {
case 'text':
if (item.text) {
content.push({ type: 'text', text: item.text });
content.push({ type: 'text', text: item.text.trim() });
}
break;
case 'image_url':
@ -205,6 +205,22 @@ export class OpenAIConverter extends BaseConverter {
}
}
// 清理最后一条 assistant 消息的尾部空白
if (mergedClaudeMessages.length > 0) {
const lastMessage = mergedClaudeMessages[mergedClaudeMessages.length - 1];
if (lastMessage.role === 'assistant' && Array.isArray(lastMessage.content)) {
// 从后往前找到最后一个 text 类型的内容块
for (let i = lastMessage.content.length - 1; i >= 0; i--) {
const contentBlock = lastMessage.content[i];
if (contentBlock.type === 'text' && contentBlock.text) {
// 移除尾部空白字符
contentBlock.text = contentBlock.text.trimEnd();
break;
}
}
}
}
const claudeRequest = {
model: openaiRequest.model,