* fix(anthropic): Add response_format support for structured outputs
* only use from options
* use native way of response format
* ruff lint fix
* address comment; handle dict
* 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