diff --git a/.changeset/heavy-yaks-mate.md b/.changeset/heavy-yaks-mate.md new file mode 100644 index 00000000..3094f31d --- /dev/null +++ b/.changeset/heavy-yaks-mate.md @@ -0,0 +1,5 @@ +--- +"@openai/agents-openai": patch +--- + +Handle function call messages with empty content in Chat Completions diff --git a/packages/agents-openai/src/openaiChatCompletionsModel.ts b/packages/agents-openai/src/openaiChatCompletionsModel.ts index 885eadaa..e4829f84 100644 --- a/packages/agents-openai/src/openaiChatCompletionsModel.ts +++ b/packages/agents-openai/src/openaiChatCompletionsModel.ts @@ -67,7 +67,13 @@ export class OpenAIChatCompletionsModel implements Model { const output: protocol.OutputModelItem[] = []; if (response.choices && response.choices[0]) { const message = response.choices[0].message; - if (message.content !== undefined && message.content !== null) { + + if ( + message.content !== undefined && + message.content !== null && + // Azure OpenAI returns empty string instead of null for tool calls, causing parser rejection + !(message.tool_calls && message.content === '') + ) { const { content, ...rest } = message; output.push({ id: response.id,