diff --git a/app/main.py b/app/main.py index 6182397..bb455f3 100644 --- a/app/main.py +++ b/app/main.py @@ -44,6 +44,7 @@ from .http.tool_bridge import ( _anthropic_tool_result_block, _anthropic_tool_use_block, _extract_function_call_event_from_text, + _forced_tool_fallback_event, _json_string, _openai_forced_tool_name, _openai_tool_call, @@ -660,10 +661,17 @@ async def v1_chat_completions(req: ChatCompletionsRequest, request: Request): yield _text_payload(text) if buffered_text_parts and forced_tool_name and not saw_tool_call: + merged_text = "".join(buffered_text_parts) inferred = _extract_function_call_event_from_text( - "".join(buffered_text_parts), + merged_text, forced_tool_name=forced_tool_name, ) + if inferred is None: + inferred = _forced_tool_fallback_event( + merged_text, + forced_tool_name=forced_tool_name, + tools=req.tools, + ) if inferred is not None: tool_id = "call_inferred_0" tool_call_indexes[tool_id] = 0 @@ -805,6 +813,12 @@ async def v1_chat_completions(req: ChatCompletionsRequest, request: Request): message_content, forced_tool_name=forced_tool_name, ) + if inferred is None: + inferred = _forced_tool_fallback_event( + message_content, + forced_tool_name=forced_tool_name, + tools=req.tools, + ) if inferred is not None: tool_calls.append( _openai_tool_call(inferred, forced_id="call_inferred_0")