Chat Completions replay emits an invalid sequence for two messages in one tool-call turn
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 70/100
Direzione di ricerca
The merge logic lives in Converter.items_to_messages in agents/models/chatcmpl_converter.py, and the SDK comment the report quotes about the rejected sequence sits near it. Start by running the repro snippet from the issue to see the current [assistant(tool_calls), assistant, tool] output. Done means that consecutive same-turn messages fold into the tool-call assistant, the tool result follows immediately, and a later assistant turn stays separate. The existing single-message case should still convert as it does now.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Please read this first
- Have you read the docs? Yes.
- Have you searched for related issues? Yes. #4727 was fixed for a single message following a streamed tool call by #4728; this reports the remaining multi-message case.
Describe the bug
When replaying a Responses-format history ordered as [function_call, message, message, function_call_output], Converter.items_to_messages merges only the first message into the assistant with tool_calls. The second message becomes a separate assistant message before the tool result. The Chat Completions request therefore contains [assistant(tool_calls), assistant, tool]. The SDK's own comment says this sequence is rejected by the API. A message after a refusal in the same tool turn has the same problem.
The malformed payload was observed in a direct converter probe and in the payload passed by Runner.run to a local mocked chat.completions.create. A live HTTP 400 was not measured; the rejection is inferred from the documented Chat Completions tool-call ordering contract and the error shown in #4727.
Debug information
- Agents SDK version: 0.23.1 (also reproduced on
mainat125efa029b4bfd84238bd2c4fd69c3406f802663). - Related library versions: none required for the direct probe.
- Python version: 3.12.
- Operating system: Windows.
- Model and model provider: Chat Completions adapter; local mock client, no paid API call.
- Does the issue reproduce with the latest Agents SDK release? Yes, v0.23.1.
- Does the issue occur consistently or intermittently? Consistently for this input order.
Relevant observed roles:
user
assistant(content='Let me check the weather.', tool_calls=[call_1])
assistant(content='One moment.')
tool(tool_call_id='call_1', content='sunny')
Repro steps
from agents.models.chatcmpl_converter import Converter
items = [
{"role": "user", "content": "What is the weather?"},
{"id": "fc_1", "call_id": "call_1", "name": "get_weather", "arguments": "{}", "type": "function_call"},
{"id": "msg_1", "type": "message", "role": "assistant", "status": "completed", "content": [{"type": "output_text", "text": "Let me check the weather.", "annotations": []}]},
{"id": "msg_2", "type": "message", "role": "assistant", "status": "completed", "content": [{"type": "output_text", "text": "One moment.", "annotations": []}]},
{"type": "function_call_output", "call_id": "call_1", "output": "sunny"},
]
for message in Converter.items_to_messages(items):
print(message)
On v0.23.1, the second assistant message separates the tool-call assistant from its tool result. A control history with just one assistant message between function_call and function_call_output converts correctly.
Expected behavior
The two same-turn text messages should be merged into a single assistant message with the declared tool_calls, immediately followed by the tool result. A later assistant turn after the tool result should stay separate.
- Lingua principale
- Python
- Stelle
- 30k
- Fork
- 4.9k
- Merge medio
- 18h 13m
- PR unite (30g)
- 215
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openai/openai-agents-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
openai/openai-agents-python#5348 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
openai/openai-agents-python#5353 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
openai/openai-agents-python#5336 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
openai/openai-agents-python#5322 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openai/openai-agents-python
Issue simili
-
customer-reported question
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Azure/azure-sdk-for-python#49548 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
btclib-org/btclib-wallet#409 ·
I maintainer di solito rispondono entro 1 giorno
-
Phase 2 PSA Capability & Career Profile
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
bcgov/digital-journeys#2310 ·
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
fastmachinelearning/hls4ml#1582 ·
I maintainer di solito rispondono entro 3 giorni
-
Sort modelsApertaenhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno