fix(converter): 清理OpenAI消息转换中的空白字符
final assistant content cannot end with trailing whitespace 移除消息内容中的前后空白字符,包括普通消息和最后一条assistant消息的尾部空白,确保转换后的数据更整洁
This commit is contained in:
parent
ee1f89552b
commit
8252d45f89
1 changed files with 18 additions and 2 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue