Commit Graph
476 Commits
Author SHA1 Message Date
Dmytro StrukandGitHub d7434d59ce Python: Added custom args and thread object to ai_function kwargs (#2769)
* Added an example of using kwargs in ai_function

* Added thread object to ai_function kwargs

* Updated docs

* Small fix

* Added thread parameter filtering
2025-12-12 01:53:04 +00:00
Evan MattsonandGitHub 3481914981 Capture file IDs from code interpreter in streaming responses (#2741) 2025-12-11 07:30:19 +00:00
Tao ChenandGitHub 191779ce80 Python: Add factory pattern to concurrent orchestration builder (#2738)
* Add factory pattern to concurrent orchestration builder

* Update readme

* Address AI comments

* Fix unit tests

* Fix import

* Prevent multiple calls to set participants or factories

* Add comments

* Mitigate warnings

* Fix mypy

* Address comments

* Address Copilot comments

* Fix tests
2025-12-11 01:23:28 +00:00
Tao ChenandGitHub 523305ac62 Python: Add factory pattern to sequential orchestration builder (#2710)
* Add factory pattern to sequential orchestration builder

* Use temp list to avoid override

* Add sample and some other fixes

* Fix comments

* Small fix

* Update readme
2025-12-10 18:16:10 +00:00
Evan MattsonandGitHub b378ca75d1 Python: extend HITL support for all orchestration patterns (#2620)
* Support HITL for orchestration patterns

* Cleanup around naming

* Fix typing issues

* Clean up

* Naming clean up

* Updates to HITL to make it cleaner

* Rename human input hook to orchestration request info

* Clean up per PR feedback
2025-12-10 15:59:29 +00:00
2f0b2db12a fix: Standardize OpenAI API key environment variable naming (#1001) (#2629)
- Replace OPENAI_APIKEY with OPENAI_API_KEY across all samples
- Replace AZURE_FOUNDRY_OPENAI_APIKEY with AZURE_FOUNDRY_OPENAI_API_KEY
- Ensures consistency with OpenAI's standard naming convention
- Applies to .NET and Python samples

Fixes #1001

Co-authored-by: Alexander Zarei <alzarei@users.noreply.github.com>
2025-12-10 10:33:35 +00:00
Giles OdigweandGitHub b55095f0fb azureai image gen sample update (#2709) 2025-12-09 13:50:04 +00:00
Laveesh RohraandGitHub 71d9d268dd Python: Fix DurableState schema serializations (#2670)
* Fix created at

* Add pattern matching
2025-12-08 22:38:45 +00:00
d7ca96923b Python: Update fan in fan out sample to show concurrency (#2705)
* Update fan in fan out sample to show concurrency

* Update python/samples/getting_started/workflows/parallelism/fan_out_fan_in_edges.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Victor Dibia <chuvidi2003@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-08 19:53:37 +00:00
Victor DibiaandGitHub 0675000f4b fixes Python: DevUI fails when uploading Pdf file (tested on Python Foundry Agent) (#2675)
Fixes #2652
2025-12-08 17:00:57 +00:00
551219cb55 Python: Feature/fix context provider lifecycle agentic mode (#2650)
* refactor KB for index creation logic

* add user agent header for tracking

* fix mypy issues

* fix agentic mode bug for search context provider

---------

Co-authored-by: farzad528 <farzad528@users.noreply.github.com>
2025-12-08 09:52:18 +00:00
Evan MattsonandGitHub c34af002b8 Improve sample logging (#2692) 2025-12-08 06:56:45 +00:00
Dmytro StrukandGitHub cfcb71334a Renamed async_credential to credential (#2648) 2025-12-08 01:21:18 +00:00
Giles OdigweandGitHub f5f909f2e2 Python: Added Azure OpenAI Responses File Search sample + Integration test update (#2645)
* added azure responses file search sample + int test update

* sample update to use token credential
2025-12-05 19:01:48 +00:00
Evan MattsonandGitHub b78a2b6d2e Python: Support an autonomous handoff flow (#2497)
* Support an autonomous handoff flow.

* Simplify public API

* Address feedback
2025-12-05 07:13:22 +00:00
Tao ChenandGitHub f2ed5b55f6 Python: WorkflowBuilder registry (#2486)
* Add workflow builder factory pattern

* Add internal edge groups to registered executors; next samples

* Update samples: Part 1

* register -> register_executor

* update hil samples

* Update other samples

* Update agent  samples

* Update doc string

* Add new sample

* Fix mypy

* Address comments

* Fix mypy
2025-12-05 05:26:10 +00:00
Giles OdigweandGitHub 365e438981 Python: AzureAI Local MCP Sample (#2616)
* added azure ai local mcp sample

* small fix

* handling for local mcp

* remove redundant local mcp handling
2025-12-04 19:10:00 +00:00
Evan MattsonandGitHub 19ac6e57c0 Python [BREAKING]: support magentic agent tool call approvals and plan stalling HITL behavior (#2569)
* Provide way for HITL with magentic

* support tool call approvals and hitl stall replan

* human plan intervention sample

* Clean up

* Improve loging

* updates
2025-12-04 05:13:27 +00:00
Evan MattsonandGitHub f7a9005235 Python: Add executor I/O data to ExecutorInvokedEvent and ExecutorCompletedEvent (#2591)
* Add executor I/O data to ExecutorInvokedEvent and ExecutorCompletedEvent

* Sample cleanup
2025-12-04 01:41:40 +00:00
d774b64df0 Python: added inline yaml sample (#2582)
* added inline yaml sample

* fixed some typos and added intro comment

* added description params and pass through to client

* add azure assistants

* fix tests

* observabiltiy mypy fix

* for some reason mypy doesn't accept a subclass

---------

Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
2025-12-04 01:30:56 +00:00
Victor DibiaandGitHub 42ffe59592 Python: Document ChatKit frontend requirements and air-gapped limitations (#2587)
- Add "Requirements and Limitations" section to chatkit package README
- Add "Network Requirements" and "Limitations" sections to chatkit-integration sample README
- Add explanatory comments in frontend code for CDN dependency and domain key configuration

Fixes #2347
2025-12-04 01:19:14 +00:00
b5595f6f70 Python: Enable Agentic Mode to Use Existing Knowledge Bases Without index_name (#2464)
* refactor KB for index creation logic

* add user agent header for tracking

* fix mypy issues

---------

Co-authored-by: farzad528 <farzad528@users.noreply.github.com>
2025-12-03 16:00:59 +00:00
David WuandGitHub e9ab514696 Python: Replace Eval SDK with AI Projects SDK in evaluation sample (#2540)
* Replace Eval SDK with AI Projects SDK

* Update per PR review suggestions
2025-12-02 20:28:52 +00:00
Evan MattsonandGitHub e3b700ad9f Python: Add sample to show handoff as agent with HITL (#2534)
* Add sample to show handoff as agent with HITL

* Update uv.lock with latest pkg versions. Fix lint error.

* Upgrade grpcio to 1.76.0

* Handle grpcio versions

* Case insensitive compare for declarative
2025-12-02 00:50:13 +00:00
Laveesh RohraandGitHub 306c81aef8 Python: [Breaking] Python: Respond with AgentRunResponse with serialized structured output (#2285)
* Respond with AgentRunResponse

* Fix response_Format type

* Address comments

* Fix tests

* Fix log

* Addressed comments

* Code cleanup

* Use AgentTask vs Generator

* Address comments

* use lazy logging

* fix mypy errors
2025-11-26 18:44:28 +00:00
Evan MattsonandGitHub 907d79ab3c [BREAKING] Python: Standardize orchestration outputs as list of ChatMessage. Allow agent as group chat manager. (#2291)
* Standardize orchestration outputs as list of chatmessage. Add chat options to group chat prompt manager

* refactor group chat

* Improve group chat manager

* README Update

* Cleanup

* Add comment

* More cleanup

* Standardize termination condition for group chat

* Improvements on termination logic

* Fix tests

* Fix new line

* PR feedback

* Update ChatKit based on OpenAI type change

* Raise error if response format is not expected type

* Only one starting executor required. Add tests.

* Add magentic start executor test
2025-11-26 07:51:04 +00:00
5d8be5836c Python: Added support for application endpoints in Azure AI client (#2460)
* Added support for application endpoints in Azure AI client

* Fixed tests

* Update python/samples/getting_started/agents/azure_ai/azure_ai_with_application_endpoint.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Addressed comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-25 19:32:55 +00:00
b1c210c9d8 Python: Added MCP tool support for azure functions package. (#2385)
* Python: Add Scaffolding for Durable AzureFunctions package to Agent Framework (#1823)

* Add scafolding

* update readme

* add code owners and label

* update owners

* .NET: Durable extension: initial src and unit tests (#1900)

* Python: Add Durable Agent Wrapper code (#1913)

* add initial changes

* Move code and add single sample

* Update logger

* Remove unused code

* address PR comments

* cleanup code and address comments

---------

Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>

* Azure Functions .NET samples (#1939)

* Python: Add Unit tests for Azurefunctions package (#1976)

* Add Unit tests for Azurefunctions

* remove duplicate import

* .NET: [Feature Branch] Migrate state schema updates and support for agents as MCP tools (#1979)

* Python: Add more samples for Azure Functions (#1980)

* Move all samples

* fix comments

* remove dead lines

* Make samples simpler

* Agents as MCP tools

* Removed unused files and updated sample

* .NET: [Feature Branch] Durable Task extension integration tests (#2017)

* .NET: [Feature Branch] Update OpenAI config for integration tests (#2063)

* Python: Add Integration tests for AzureFunctions  (#2020)

* Add Integration tests

* Remove DTS extension

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add pyi file for type safety

* Add samples in readme

* Updated all readme instructions

* Address comments

* Update readmes

* Fix requirements

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Addressed copilot feedback

* Minor refactoring and added tests

* Updated mcp sample

* Fixed broken link in readme

* Addressed copilot comments

* Addressed feedback

* Updated property to enable_mcp_tool_trigger

---------

Co-authored-by: Laveesh Rohra <larohra@microsoft.com>
Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
Co-authored-by: Chris Gillum <cgillum@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-25 18:50:02 +00:00
Dmytro StrukandGitHub b8260ae24c Python: [BREAKING] Removed default "store" value (#2443)
* Removed default store value

* Small fix
2025-11-25 17:53:08 +00:00
27b3a517eb [BREAKING] Python: Adjust magentic event types raised. No need for custom events. (#2215)
* Adjust magentic event types raised. No need for custom events.

* Cleanup

* Fix test

* Update python/packages/core/agent_framework/_workflows/_magentic.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-25 08:24:08 +00:00
Eduard van ValkenburgandGitHub 1b4103dce3 Python: fix for logging setup (#2371)
* fix for logging setup

* typo fixes

* fix text
2025-11-25 08:19:34 +00:00
Evan MattsonandGitHub 2a4802eac3 Python: Fix runtime response format for responses client (#2440)
* Fix runtime response format for responses client

* Handle run time schema for Azure AI Client.
2025-11-25 07:50:20 +00:00
Giles OdigweandGitHub e303cc963d Python: AzureAI OpenAPI + Memory Search Samples (#2390)
* openapi + memory search samples

* readme update

* memory store name fix
2025-11-25 01:17:14 +00:00
Eduard van ValkenburgandGitHub 9f43108ef1 Python: renamed ai search and cleanup of samples and unified import logic (#2369)
* renamed ai search and cleanup of samples and unified import logic

* fixed error messages

* fixed folder name

* remove old samples from readme
2025-11-24 17:06:22 +00:00
Giles OdigweandGitHub ec08ee541d a2a sample update (#2391) 2025-11-24 10:57:00 +00:00
ee8936d514 Python: Integration tests for Azure AI client and fixes in samples (#2387)
* Added integration tests

* Update python/packages/azure-ai/tests/test_azure_ai_client.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Small fixes in samples

* Small fix

* Small fix

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-22 00:31:57 +00:00
4c529037b8 Python: Use Foundry evaluators to evaluate agent workflows (#2322)
* Create workflow evaluation with Foundry demo

* Upgrade syntax

* Add copyright line

* import fix

* import fix

* address pr comments

* Python: Workflow eval sample - print evaluator names

* Python: Workflow eval - address PR comments

* Update samples readme

---------

Co-authored-by: Salma Elshafey <selshafey@microsoft.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
2025-11-21 09:51:44 +00:00
1bf926bfc9 Python: Fix the example of multi-tier handoff workflow with specialist-to-specialist routing (#2332)
* Fix the example (1) to send only one initial message (2) to end conversation after trigger the last response as the comment describes

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* changed the hard-coded user query

---------

Co-authored-by: tsuting.kao <tsu.kao@microsoft.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-21 09:36:35 +00:00
d18ce24bf8 Python: feat(mcp): add full _meta field support for CallToolResult objects (#2286)
* feat(mcp): add full _meta field support for CallToolResult objects

- Extract and preserve complete _meta field from MCP CallToolResult responses
- Merge metadata into additional_properties of converted content items
- Handle isError field for proper error state integration
- Support arbitrary metadata like token usage, costs, and performance metrics
- Maintain backward compatibility with existing tool execution workflows
- Add comprehensive test coverage for all metadata scenarios including edge cases
- Update documentation with metadata handling examples and patterns

Fixes protocol compliance violation where _meta fields were being dropped,
enables proper monitoring and cost tracking of MCP tool usage.

* Update python/packages/core/agent_framework/_mcp.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Clarify MCP _meta field test to use generic example metadata

- Updated test_mcp_call_tool_result_with_meta_arbitrary_data to use arbitrary metadata fields
- Added comments to emphasize that _meta structure is server-specific and not standardized

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-21 08:43:24 +00:00
0781d4b459 Python: Add Handoff + tool approval + checkpointing sample (#2346)
* Handoff sample

* handoff with tool approval

* add Hanoff sample with tool approval and checkpointing

* Add to README

* Remove unnecessary files

* Update python/samples/getting_started/workflows/checkpoint/handoff_with_tool_approval_checkpoint_resume.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix comment

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-21 13:13:27 +09:00
Evan MattsonandGitHub 5bdf8a774a Sample to show passing in JSON schema for structured outputs (#2362) 2025-11-21 01:42:46 +00:00
Tao ChenandGitHub 5353b9a2f0 Update Workflow Viz sample comments (#2361) 2025-11-20 23:34:27 +00:00
Farzad SunavalaGitHubClaudeFarzad Sunavala <farzad.sunavala.enovate.ai>farzad528
04e711cd55 Python: Feature/azure ai search agentic rag (search as separate package) (#2328)
* Python: Fix pyright errors and move search provider to core (#1546)

* address pablo coments

* update azure ai search pypi version to latest prev

* init update

* Fix MyPy type annotation errors in search provider

- Add type annotation to DEFAULT_CONTEXT_PROMPT
- Add type annotation to vectorizable_fields
- Add union type annotation to vector_queries

* Fix DEFAULT_CONTEXT_PROMPT MyPy error and update test

- Rename DEFAULT_CONTEXT_PROMPT to _DEFAULT_SEARCH_CONTEXT_PROMPT to avoid conflict with base class Final variable
- Update test to use new constant name
- All core package tests passing (1123 passed)

* Python: Move Azure AI Search to separate package per PR feedback

Addresses reviewer feedback from PR #1546 by isolating the beta dependency
(azure-search-documents==11.7.0b2) into a new agent-framework-aisearch package.

Changes:
- Created new agent-framework-aisearch package with complete structure
- Moved AzureAISearchContextProvider from core to aisearch package
- Added AzureAISearchSettings class for environment variable auto-loading
- Added support for direct API key string (auto-converts to AzureKeyCredential)
- Added azure_openai_api_key parameter for Knowledge Base authentication
- Updated embedding_function type to Callable[[str], Awaitable[list[float]]]
- Moved Role import to top-level imports
- Maintained lazy loading through agent_framework.azure module
- Removed beta dependency from core package
- Updated all tests to use new package location
- All quality checks pass: ruff format/lint, pyright, mypy (0 errors)
- All 21 unit tests pass with 59% coverage

Semantic search mode verified working with both API key and managed identity authentication.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Python: Clarify top_k parameter only applies to semantic mode

Updated documentation to clarify that the top_k parameter only affects
semantic search mode. In agentic mode, the server-side Knowledge Base
determines retrieval based on query complexity and reasoning effort.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Python: Add Knowledge Base output mode and retrieval reasoning effort parameters

Added support for configurable Knowledge Base behavior in agentic mode:

- knowledge_base_output_mode: "extractive_data" (default) or "answer_synthesis"
  Some knowledge sources require answer_synthesis mode for proper functionality.

- retrieval_reasoning_effort: "minimal" (default), "medium", or "low"
  Controls query planning complexity and multi-hop reasoning depth.

These parameters give users fine-grained control over Knowledge Base behavior
and enable support for knowledge sources that require answer synthesis.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* effort and outputmode query params

* Address PR review feedback for Azure AI Search context provider

* comments eduward

* ed latest comments

---------

Co-authored-by: Farzad Sunavala <farzad.sunavala.enovate.ai>
Co-authored-by: farzad528 <farzad528@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 22:34:46 +00:00
Tao ChenandGitHub 02af2bc0ef Python: Remove duplicated workflow observability sample (#2357)
* Remove duplicated workflow observability sample

* Fix link
2025-11-20 21:06:12 +00:00
David WuandGitHub e5b63a1041 Python: Move evaluation folders to under evaluations (#2355)
* Move evaluation folders to under evaluations

* Change folder path
2025-11-20 20:50:23 +00:00
Evan MattsonandGitHub 61dbacd6f8 Improve exception handling (#2337) 2025-11-20 09:25:09 +00:00
David WuandGitHub c7a8c12296 Python: Move red teaming files to its own folder (#2333)
* Move red teaming files to its own folder

* Update file path

* Updated folder names

* Updated reference names
2025-11-20 08:28:22 +00:00
Evan MattsonandGitHub 4fcc5a4b7d Python: propagate as_tool() kwargs. Add sample for runtime context with as_tool kwargs and middleware. (#2311)
* as tool kwargs

* simplify
2025-11-20 00:53:44 +00:00
79bb87061b Python: Clean up imports (#2318)
* chore: tidy imports

* Update python/packages/azurefunctions/agent_framework_azurefunctions/_errors.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/packages/azurefunctions/agent_framework_azurefunctions/_callbacks.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: revert stub file change

* chore: trigger pre-commit hook, re-add `annotations` import

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-19 23:41:01 +00:00
b3e96b80ae Python: Use AI Foundry evaluators for self-reflection (#2250)
* First working version

* Simplify the implementations

* Remove unused env var

* Update Python syntax

* Address feedbacks

* Fix a typo

* Update names as review suggestions

* Citation for self-reflection

* Move to independent folder

* Update python/samples/getting_started/evaluation/azure_ai_foundry/evaluation/README.md

Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>

* Updated from parquet to JSONL and hide the default environment variables

* As review feedback, remove the purpose of using `run_self_reflection_batch` as a library, only use it as sample code

* Update python/samples/getting_started/evaluation/azure_ai_foundry/evaluation/self_reflection.py

Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>

---------

Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
2025-11-19 18:41:21 +00:00