* Fix: Add system_instructions to ChatClient LLM span tracing
- Add system_instructions parameter to _capture_messages() calls in
_trace_get_response() and _trace_get_streaming_response()
- Extract instructions from chat_options in kwargs
- Add unit tests to verify system_instructions are captured correctly
When using ChatClient with ChatOptions.instructions, the OpenTelemetry
LLM span was missing system messages in gen_ai.input.messages and the
gen_ai.system_instructions attribute was not being set.
This fix aligns the ChatClient-level tracing with the Agent-level
tracing which already correctly passes system_instructions.
Fixes#3163
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add edge case tests for system_instructions
- Add test for empty string instructions (should not set attribute)
- Add test for list-type instructions (verify multiple items captured)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify: use options.get('instructions') directly instead of kwargs.get('chat_options')
Addresses reviewer feedback:
- Removed unnecessary chat_options variable from kwargs
- Directly access instructions from the options parameter
- Updated tests to use dict syntax for options (TypedDict convention)
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* added service thread support
* set service_thread_id to only supplied_thread_id
* uses raw_representation to extract the conversation_id
* removed accidental edit
* updated test to use raw_representation
* resolves copilot review feedback
* revert back StubAgent, since not used
* removed relative module import
* removed hasattr check per PR feedback
* Added provider implementation for Azure AI V1
* Small fixes
* Fixed OpenAPI example
* Fixed local MCP example
* Fixed hosted MCP example
* Fixed file search sample
* Small fixes
* Resolved comments
* Doc updates
* Group chat refactoring Part 1; Next: HIL and handoff
* Add agent approval flow; next samples
* WIP: samples
* WIP: HIL samples
* Group chat HIL working; next: handoff
* Fix group chat tool approval sample
* WIP: refactor handoff; next handoff handling
* Handoff done; next handoff samples and concurrent and sequential
* Handoff samples, concurrent, and sequential done; next Magentic
* WIP: magentic; next test with samples + HIL
* Magentic Working; next fix all samples and tests
* Fix handoff samples; next tests
* WIP: fixing tests; some orchestration as agent samples are failing
* Group chat unit tests done
* Handoff unit tests done
* Remove old orchestration_request_info and fix related tests
* Magentic unit tests done
* Fix samples
* Fix test
* Fix test 2
* mypy
* Address comments
* Update readme
* Address comments
* Address comments 2
* Replace display name
* removed display_name, renamed context_providers, middleware and AggregateContextProvider
* fixes
* fixed test
* testfix
* removed mistakenly put back test
* updated new test
* rename middlewares to middleware
* middleware fixes
Eduard van Valkenburg
·
2026-01-13 02:24:07 +00:00
* feat(ag-ui): Add Pydantic request model and OpenAPI tags support
- Add AGUIRequest Pydantic model in _types.py with field descriptions
- Update add_agent_framework_fastapi_endpoint() to accept tags parameter
- Use AGUIRequest model for automatic validation and OpenAPI schema generation
- Export AGUIRequest and DEFAULT_TAGS in __init__.py
- Update test_endpoint.py to expect 422 for invalid requests
- Add tests for OpenAPI schema, default tags, custom tags, and validation
Benefits:
- Better API documentation with complete request schema in Swagger UI
- Automatic request validation with Pydantic
- Organized endpoints under 'AG-UI' tag instead of 'default'
- Improved developer experience and type safety
Fixes #<issue-number>
* test(ag-ui): Add test for internal error handling to achieve 100% coverage
- Add test_endpoint_internal_error_handling() to cover exception handling code
- Mock copy.deepcopy to simulate internal error during default_state processing
- Add type: ignore for FastAPI tags parameter (known pyright compatibility issue)
- Achieves 100% test coverage for _endpoint.py (previously missing lines 103-105)
When processing `input_json_delta` events, the Anthropic client was
passing the tool name from the previous `tool_use` event. This caused
ag-ui's `_handle_function_call_content` to emit a `ToolCallStartEvent`
for every streaming chunk (since it triggers on `if content.name:`).
This fix changes the behavior to pass an empty string for `name` in
`input_json_delta` events, matching OpenAI's behavior where streaming
argument chunks have `name=""`. The initial `tool_use` event still
provides the tool name, so only one `ToolCallStartEvent` is emitted.
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
* fix Python: kwargs are not passed to _prepare_thread_and_messages in ChatAgent.run
Fixes#3118
* fix Python: [Bug]: model_id versus model_deployment_name is confusing in Azure AI Agents
Fixes#3147
* add types
* fixed type and docstring
Eduard van Valkenburg
·
2026-01-12 01:01:41 +00:00
* fix(ag-ui): execute tools after approval in human-in-the-loop flow
* Fix shared state bug
* Bug fix finalized
* Refactoring to clean up code
* Code cleanup
* More fixes
* More code cleanup
* Add version detection in __init__.py to ruff ignore list
* Improve DevUI, add Context Inspector view as new tab under traces
* fix mypy errors
* fix: Handle stale MCP connections in DevUI executor
MCP tools can become stale when HTTP streaming responses end - the underlying
stdio streams close but `is_connected` remains True. This causes subsequent
requests to fail with `ClosedResourceError`.
Add `_ensure_mcp_connections()` to detect and reconnect stale MCP tools before
agent execution. This is a workaround for an upstream Agent Framework issue
where connection state isn't properly tracked.
Fixes MCP tools failing on second HTTP request in DevUI.
fixes #1476#1515#2865
* fix#1572 report import dependency errors more clearly
* Ensure there is streaming toggle where users can select streaming vs non streaming mode in devui . Fixes .NET: [Python] DevUI tool call rendering in non-streaming mode?
* remove unused dead code
* improve ux - workflows with agents show a chat component in execution timelien, also ensure magentic final output shows correctly
* update ui build
* update devui to use instrumentation instead of tracing, other instrumentation and type/instance check fixes