fix: improve OpenAI forced tool-call fallback parsing
This commit is contained in:
16
app/main.py
16
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")
|
||||
|
||||
Reference in New Issue
Block a user