fix: custom API's trailing space and empty tool id issues (#326)

* fix: generate random tool call id when serving API does not have one

* tmp
This commit is contained in:
Fan
2025-08-14 21:18:52 +08:00
committed by GitHub
parent 2403061bab
commit 51207043d0

View File

@@ -563,7 +563,7 @@ export class OpenAIContentGenerator implements ContentGenerator {
// Add combined text if any // Add combined text if any
if (combinedText) { if (combinedText) {
combinedParts.push({ text: combinedText }); combinedParts.push({ text: combinedText.trimEnd() });
} }
// Add function calls // Add function calls
@@ -1164,7 +1164,11 @@ export class OpenAIContentGenerator implements ContentGenerator {
// Handle text content // Handle text content
if (choice.message.content) { if (choice.message.content) {
parts.push({ text: choice.message.content }); if (typeof choice.message.content === 'string') {
parts.push({ text: choice.message.content.trimEnd() });
} else {
parts.push({ text: choice.message.content });
}
} }
// Handle tool calls // Handle tool calls
@@ -1249,7 +1253,11 @@ export class OpenAIContentGenerator implements ContentGenerator {
// Handle text content // Handle text content
if (choice.delta?.content) { if (choice.delta?.content) {
parts.push({ text: choice.delta.content }); if (typeof choice.delta.content === 'string') {
parts.push({ text: choice.delta.content.trimEnd() });
} else {
parts.push({ text: choice.delta.content });
}
} }
// Handle tool calls - only accumulate during streaming, emit when complete // Handle tool calls - only accumulate during streaming, emit when complete
@@ -1290,7 +1298,9 @@ export class OpenAIContentGenerator implements ContentGenerator {
parts.push({ parts.push({
functionCall: { functionCall: {
id: accumulatedCall.id, id:
accumulatedCall.id ||
`call_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`,
name: accumulatedCall.name, name: accumulatedCall.name,
args, args,
}, },
@@ -1766,7 +1776,7 @@ export class OpenAIContentGenerator implements ContentGenerator {
} }
} }
messageContent = textParts.join(''); messageContent = textParts.join('').trimEnd();
} }
const choice: OpenAIChoice = { const choice: OpenAIChoice = {