[azure-ai-agentserver-responses] Failed response inputs are replayed in conversation history
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
Línea de trabajo
Comienza con ResponseProviderProtocol y get_history_item_ids(), y luego sigue cómo los proveedores in-memory, de archivo y Foundry construyen el historial de conversaciones y de respuestas anteriores. Reproduce los casos de conversaciones fallidas y respuestas independientes, incluidos los modos de streaming y background. Se considera terminado cuando las entradas fallidas siguen disponibles mediante /responses/{id}/input_items, pero se excluyen del historial que se puede reproducir, mientras que el historial correcto permanece sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
- Package Name:
azure-ai-agentserver-responses - Package Version:
2.2.0b2on currentmain; originally observed throughagent-framework-foundry-hosting1.0.0b260730 - Operating System: Cross-platform; reproduced with a hosted Foundry agent and locally
- Python Version: 3.13.14 in the original report
Describe the bug
AgentServer persists a stored response and its input_items when it processes the initial response.created / in_progress event. If the handler later emits response.failed, update_response() updates the response envelope but does not change the stored input references.
get_history_item_ids() subsequently includes those input IDs:
- when resolving responses in a
conversation_id; and - when a failed standalone response is later chained through
previous_response_id.
As a result, invalid input that caused one request to fail is replayed into subsequent otherwise-valid requests, potentially poisoning the conversation indefinitely.
Original report and reproduction: https://github.com/microsoft/agent-framework/issues/7630
Agent Framework workaround under review: https://github.com/microsoft/agent-framework/pull/7637
That workaround has to buffer synchronous handler events so it knows the terminal status before AgentServer performs its initial create, and it wraps/mutates AgentServer's private providers. It cannot address streaming and background failures cleanly without delaying their streams.
To reproduce
- Create a conversation.
- Submit a response containing an unmatched
function_call_output:
response = client.responses.create(
conversation=conversation.id,
input=[
{"role": "user", "content": "Hello"},
{
"type": "function_call_output",
"call_id": "call_that_does_not_exist",
"output": "invalid output",
},
],
)
- Confirm the response fails because no matching function call exists.
- Submit a valid request to the same conversation:
response2 = client.responses.create(
conversation=conversation.id,
input="Hello, how are you?",
)
- Observe that the second request fails with the same unmatched-function-call error because the first request's input was included in resolved conversation history.
The equivalent issue occurs if step 2 creates a stored standalone failed response and step 4 uses previous_response_id=response.id.
Actual behavior
get_history_item_ids() includes the failed response's own input IDs, so subsequent handlers receive and replay the invalid input.
Expected behavior
Failed-response inputs should remain stored and retrievable through /responses/{id}/input_items for diagnostics, but should not be returned as replayable history for either conversation_id or previous_response_id. Successful-response history should remain unchanged.
Ownership rationale
This behavior is defined by azure-ai-agentserver-responses:
- its orchestrator decides when response inputs are persisted;
ResponseProviderProtocoldefines create, update, and history operations;- its in-memory and file providers build conversation and previous-response history; and
- its Foundry provider delegates to the hosted
history/item_idsstorage endpoint.
Fixing this only in Agent Framework's foundry_hosting adapter leaves other AgentServer hosts and streaming/background request modes with the same behavior.
Suggested direction
Define and enforce a provider invariant that a failed response's own input_item_ids are excluded from replayable history while the stored items remain available for diagnostic retrieval.
- Apply this before history-limit truncation.
- Update the in-memory and file providers.
- Apply the same behavior in the Foundry
history/item_idsbackend, or expose a supported server-side filter. - Add tests for failed conversation turns and failed standalone responses later chained with
previous_response_id, across synchronous, streaming, and background modes.
Related:
- Lenguaje dominante
- Python
- Estrellas
- 5.6k
- Forks
- 3.4k
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 202
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Azure/azure-sdk-for-python
-
Evaluation Service Attention
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Azure/azure-sdk-for-python#49190 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Update CODEOWNERSAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Azure/azure-sdk-for-python#49183 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Evaluation Service Attention
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Azure/azure-sdk-for-python#49153 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Search Service Attention
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Azure/azure-sdk-for-python#48555 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Azure.Core customer-reported feature-request needs-team-attention
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Azure/azure-sdk-for-python#47186 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Azure/azure-sdk-for-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
PedestrianDynamics/pyFDS-Evac#343 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
theskumar/python-dotenv#708 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días
-
Docs Timedelta
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pandas-dev/pandas#69919 ·
Los mantenedores suelen responder en 1 día
-
API documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
zephyrproject-rtos/west#1009 · 2 comentarios ·
Los mantenedores suelen responder en 3 días