Omit optional function_call id in Responses replay input
This commit is contained in:
parent
e63986b534
commit
47f16505d2
2 changed files with 5 additions and 16 deletions
11
run_agent.py
11
run_agent.py
|
|
@ -1323,16 +1323,6 @@ class AIAgent:
|
||||||
call_id = f"call_{uuid.uuid4().hex[:12]}"
|
call_id = f"call_{uuid.uuid4().hex[:12]}"
|
||||||
call_id = call_id.strip()
|
call_id = call_id.strip()
|
||||||
|
|
||||||
response_item_id = tc.get("response_item_id")
|
|
||||||
if not isinstance(response_item_id, str) or not response_item_id.strip():
|
|
||||||
response_item_id = tc.get("responses_item_id")
|
|
||||||
if not isinstance(response_item_id, str) or not response_item_id.strip():
|
|
||||||
response_item_id = embedded_response_item_id
|
|
||||||
response_item_id = self._derive_responses_function_call_id(
|
|
||||||
call_id,
|
|
||||||
response_item_id if isinstance(response_item_id, str) else None,
|
|
||||||
)
|
|
||||||
|
|
||||||
arguments = fn.get("arguments", "{}")
|
arguments = fn.get("arguments", "{}")
|
||||||
if isinstance(arguments, dict):
|
if isinstance(arguments, dict):
|
||||||
arguments = json.dumps(arguments, ensure_ascii=False)
|
arguments = json.dumps(arguments, ensure_ascii=False)
|
||||||
|
|
@ -1342,7 +1332,6 @@ class AIAgent:
|
||||||
|
|
||||||
items.append({
|
items.append({
|
||||||
"type": "function_call",
|
"type": "function_call",
|
||||||
"id": response_item_id,
|
|
||||||
"call_id": call_id,
|
"call_id": call_id,
|
||||||
"name": fn_name,
|
"name": fn_name,
|
||||||
"arguments": arguments,
|
"arguments": arguments,
|
||||||
|
|
|
||||||
|
|
@ -300,7 +300,7 @@ def test_run_conversation_codex_tool_round_trip(monkeypatch):
|
||||||
assert any(msg.get("role") == "tool" and msg.get("tool_call_id") == "call_1" for msg in result["messages"])
|
assert any(msg.get("role") == "tool" and msg.get("tool_call_id") == "call_1" for msg in result["messages"])
|
||||||
|
|
||||||
|
|
||||||
def test_chat_messages_to_responses_input_uses_fc_id_for_function_call(monkeypatch):
|
def test_chat_messages_to_responses_input_uses_call_id_for_function_call(monkeypatch):
|
||||||
agent = _build_agent(monkeypatch)
|
agent = _build_agent(monkeypatch)
|
||||||
items = agent._chat_messages_to_responses_input(
|
items = agent._chat_messages_to_responses_input(
|
||||||
[
|
[
|
||||||
|
|
@ -324,7 +324,7 @@ def test_chat_messages_to_responses_input_uses_fc_id_for_function_call(monkeypat
|
||||||
function_output = next(item for item in items if item.get("type") == "function_call_output")
|
function_output = next(item for item in items if item.get("type") == "function_call_output")
|
||||||
|
|
||||||
assert function_call["call_id"] == "call_abc123"
|
assert function_call["call_id"] == "call_abc123"
|
||||||
assert function_call["id"] == "fc_abc123"
|
assert "id" not in function_call
|
||||||
assert function_output["call_id"] == "call_abc123"
|
assert function_output["call_id"] == "call_abc123"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -352,11 +352,11 @@ def test_chat_messages_to_responses_input_accepts_call_pipe_fc_ids(monkeypatch):
|
||||||
function_output = next(item for item in items if item.get("type") == "function_call_output")
|
function_output = next(item for item in items if item.get("type") == "function_call_output")
|
||||||
|
|
||||||
assert function_call["call_id"] == "call_pair123"
|
assert function_call["call_id"] == "call_pair123"
|
||||||
assert function_call["id"] == "fc_pair123"
|
assert "id" not in function_call
|
||||||
assert function_output["call_id"] == "call_pair123"
|
assert function_output["call_id"] == "call_pair123"
|
||||||
|
|
||||||
|
|
||||||
def test_run_conversation_codex_replay_payload_keeps_call_id_and_fc_id(monkeypatch):
|
def test_run_conversation_codex_replay_payload_keeps_call_id(monkeypatch):
|
||||||
agent = _build_agent(monkeypatch)
|
agent = _build_agent(monkeypatch)
|
||||||
responses = [_codex_tool_call_response(), _codex_message_response("done")]
|
responses = [_codex_tool_call_response(), _codex_message_response("done")]
|
||||||
requests = []
|
requests = []
|
||||||
|
|
@ -389,7 +389,7 @@ def test_run_conversation_codex_replay_payload_keeps_call_id_and_fc_id(monkeypat
|
||||||
function_call = next(item for item in replay_input if item.get("type") == "function_call")
|
function_call = next(item for item in replay_input if item.get("type") == "function_call")
|
||||||
function_output = next(item for item in replay_input if item.get("type") == "function_call_output")
|
function_output = next(item for item in replay_input if item.get("type") == "function_call_output")
|
||||||
assert function_call["call_id"] == "call_1"
|
assert function_call["call_id"] == "call_1"
|
||||||
assert function_call["id"] == "fc_1"
|
assert "id" not in function_call
|
||||||
assert function_output["call_id"] == "call_1"
|
assert function_output["call_id"] == "call_1"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue