Releases: mozilla-ai/any-agent
0.25.0
🚀 feat: Introduce any_agent/callbacks
. by @daavoo in #554
Check the docs: https://mozilla-ai.github.io/any-agent/agents/callbacks/
And cookbook: https://mozilla-ai.github.io/any-agent/cookbook/callbacks/
📖 docs(agents): Add batch processing example to documentation by @njbrake in #601
https://mozilla-ai.github.io/any-agent/agents/#batch-processing
🤖 📖 llms.txt and llms-full.txt by @njbrake in #620
Versions of the docs for LLM consumption:
https://mozilla-ai.github.io/any-agent/llms.txt
https://mozilla-ai.github.io/any-agent/llms-full.txt
Other changes
- docs: Reorder Agents-As-Tools by @daavoo in #582
- fix: Migrate structure output handling into any-agent by @njbrake in #573
- Delete docs/examples/evaluation_case.yaml by @njbrake in #588
- fix: typo in openai frameworks docstring by @njbrake in #589
- feat: pin a2a sdk version by @njbrake in #592
- feat: integration tests, consolidate model args and http_kwargs into single variables by @njbrake in #590
- feat: restrict taskstates to those that are used. by @njbrake in #591
- feat: unit tests for lanchain and tinyagent structured_output by @njbrake in #587
- Brake/remove ambiguity by @njbrake in #593
- Support for push notifications in non-streaming mode by @njbrake in #560
- feat(callbacks): Introduce default callbacks and convert ConsoleExpor… by @daavoo in #586
- fix(a2a): Bypass deepcopy of callbacks. by @daavoo in #596
- Feat: Use Mistral API for docs and tests instead of OpenAI API by @njbrake in #574
- feat: add task store configuration to A2A server by @njbrake in #594
- feat(callbacks): Implement
AddCostInfo
and include it in the defaul… by @daavoo in #597 - chore(a2a): Update a2a-sdk version and adjust push notification configuration to support new api by @njbrake in #602
- docs: add tip about async by @njbrake in #600
- feat: add any_agent.testing module by @njbrake in #599
- docs(callbacks): Add
SensitiveDataOffloader
example. by @daavoo in #603 - Enable A2A in mypy checks by @javiermtorres in #583
- chore: Vendor
langchain_litellm
. by @daavoo in #608 - Cache MyPy and Pre-Commit for faster lint by @njbrake in #611
- feat: add MCP timeout setting to google adk by @njbrake in #610
- docs: wider margin for main part of screen by @njbrake in #612
- feat: remove sync serving option by @njbrake in #606
- Update .gitignore by @njbrake in #617
- feat: smolagents support timeout parameter by @njbrake in #619
- feat(tracing): Add
any_agent/tracing/attributes
. by @daavoo in #614 - fix: consistent prompts and simplification of structured output prompt by @njbrake in #621
- Wrap structured output calls for langchain and tinyagent by @njbrake in #622
- chore: update trace assets by @njbrake in #625
- docs: more mkdocs features by @njbrake in #615
- pre-commit autoupdate by @github-actions[bot] in #627
Full Changelog: 0.24.0...0.25.0
0.24.0
Breaking Change 💣 feat(agent_judge): Return the evaluation trace instead of only the fi… by @daavoo in #576
Allows to access the full evaluation trace for further inspection (i.e. retrieve the cost of the evaluation run).
The previous output can still be accessed in the final_output
property:
Before | After |
from any_agent.evaluation import AgentJudge
from any_agent.evaluation.schemas import EvaluationOutput
agent_judge = AgentJudge(model_id="gpt-4.1-mini")
result: EvaluationOutput = agent_judge.run(
agent_trace, criteria) |
from any_agent import AgentTrace
from any_agent.evaluation import AgentJudge
from any_agent.evaluation.schemas import EvaluationOutput
agent_judge = AgentJudge(model_id="gpt-4.1-mini")
eval_trace: AgentTrace = agent_judge.run(
agent_trace, criteria)
result: EvaluationOutput = eval_trace.final_output |
📖 Initial docs for MCP serving usage by @javiermtorres in #544
https://mozilla-ai.github.io/any-agent/serving/#serving-via-mcp
📖 Add documentation showing how to use agents as tools by @javiermtorres in #557
https://mozilla-ai.github.io/any-agent/agents/tools/#using-an-agent-as-a-tool
📖 docs(tracing): Document CostInfo
and TokenUse
. by @daavoo in #553
https://mozilla-ai.github.io/any-agent/api/tracing/#any_agent.tracing.agent_trace.AgentTrace.cost
https://mozilla-ai.github.io/any-agent/api/tracing/#any_agent.tracing.agent_trace.AgentTrace.tokens
Other changes
- Unit test for LLM tool exceptions by @javiermtorres in #482
- Fix Agno instrumenters by @javiermtorres in #551
- Remove the Python protobuf env var by @javiermtorres in #513
- chore(deps): Fix agno pinning. by @daavoo in #555
- feat: more stable structured outputs in llama_index by @njbrake in #556
- Only make extra llm call if pydantic validation fails by @njbrake in #558
- Increase timeout for message sending in integration tests 🕒✨ by @njbrake in #561
- Upgrade to support new A2A Protocol by @njbrake in #568
- Avoid import errors in Python 3.11 by @javiermtorres in #567
- fix(agent_trace): Avoid creating
BaseModel
when loading a dumped tr… by @daavoo in #563 - fix: llamaindex should ask for usage stats explicitly by @njbrake in #571
- fix: response type message should not call tool by @njbrake in #575
- fix: isolate completion_params by @njbrake in #577
- Consolidate the model id into variables by @njbrake in #570
- pre-commit autoupdate by @github-actions in #580
Full Changelog: 0.23.1...0.24.0
0.23.1
0.23.0
This release of any-agent contains an improvement to async server handling, an update to maintain compatibility with the newest version of the OpenAI Agents SDK, and some miscellaneous bug fixes. Enjoy!
Breaking Changes
calling agent.serve_async()
now returns a ServerHandle
object for easier management of async server lifecycle! You can see the new API at https://mozilla-ai.github.io/any-agent/api/serving/
What's Changed
- fix(docs): Add
evaluation
tonav
and fix missing link. by @daavoo in #527 - Pin Agno by @njbrake in #535
- fix: need to create uuid by calling it by @njbrake in #540
- chore: Split A2A Serving and MCP serving into separate directories by @njbrake in #539
- Fix OpenAI breaking change by @njbrake in #547
- feat: Refactor server handling in A2A and MCP serving by @njbrake in #538
Full Changelog: 0.22.0...0.23.0
0.22.0
What's new
-
This release introduces the concept o AgentJudge as well as LlmJudge: easily evaluate your agent using an Agent-as-a-judge or LLM-as-a-judge! Check out the detailed description at https://mozilla-ai.github.io/any-agent/evaluation.
-
We also include prelminary support for serving your agent via MCP: full documentation and examples will be coming soon, tracked by #525
Breaking Changes
In this release, we introduce a major overhaul and simplification of our evaluation code. This is a breaking change from our previous API: please see the docs at https://mozilla-ai.github.io/any-agent/evaluation/ for a detailed description of how to use the new evaluation primitives.
What's Changed
- tests: Run more env variations. by @daavoo in #509
- feat: cleanup the output format of the A2A tool response by @njbrake in #504
- feat(evaluation): Add unique ID validation for checkpoints by @njbrake in #505
- fix: run mypy on tests, fix mypy errors by @njbrake in #512
- Initial otel cookbook by @javiermtorres in #499
- fix(smolagents): Use
ChatMessage
in_set_llm_input
. by @daavoo in #517 - Remove OTEL cookbook by @javiermtorres in #518
- feat: clean up and implement AgentJudge and LlmJudge evaluation primitives by @njbrake in #507
- fix: rename tracetool get_steps_taken by @njbrake in #521
- MCP serving by @javiermtorres in #469
- fix: enhance AgentRunError to be readable and include original exception details by @njbrake in #522
- feat: Organize Integration tests, consolidate a2a logic, simplify and clarify naming by @njbrake in #516
Full Changelog: 0.21.1...0.22.0
0.21.1
0.21.0
New Features
With version 0.21.0, we are excited to release support for multi-turn conversations in A2A! Using either an A2A Client or another agent, you can now have multiturn conversations with an agent. We don't yet have a cookbook available, but we have two comprehensive tests that are useful to understand how to build one yourself.
Check out file https://github.com/mozilla-ai/any-agent/blob/0.21.0/tests/integration/test_multiturn.py
Example of multiturn conversation using an A2AClient -> test_task_management_multi_turn_conversation
Example of multiturn conversation between two agents -> test_multi_turn_a2a_tool
What's Changed
- chore(deps): bump a2a-sdk from 0.2.6 to 0.2.8 by @dependabot in #483
- remove unused pytest asyncio mark by @njbrake in #485
- Address pydantic deprecation warning by @njbrake in #484
- feat(agent): Enhance final output handling with retry logic and JSON validation by @njbrake in #487
- feat(agent): Improve multi-turn functionality to running an agent by @njbrake in #468
- pre-commit autoupdate by @github-actions in #495
- Make any_agent.version attribute available by @HareeshBahuleyan in #491
- Include exception info on docs by @javiermtorres in #489
- feat(agent): A2A Served Agent Support for Multi-Turn by @njbrake in #494
- feat(agent): Agent is allowed to have multiturn conversation with another agent by @njbrake in #498
- fix(mcp/google): Update imports. by @daavoo in #501
- Improve reliability of a2a tool integration tests by @njbrake in #503
Full Changelog: 0.20.0...0.21.0
0.20.0
Breaking changes 💣
-
feat(tools): Wrap tool calls to catch exceptions by @daavoo in #463
Exceptions raised during tool calls will now be consistently catched and returned as a string with the error description.
This allows the Agent to try to recover from the tool failure (hoping that the exception provides some clear guidance on what went wrong).
What's Changed
- fix(tools): Drop outdated wrap in smolagents. by @daavoo in #464
- chore(tests): Remove reliance on
ANY_AGENT_INTEGRATION_TESTS
env by @njbrake in #466 - refactor(tests): No logs generated by tests by @njbrake in #465
- A2A Server passes back a task instead of a Message by @njbrake in #458
- fix(instrumentation/google): Properly uninstrument when original call… by @daavoo in #476
- Enable
test_no_instrument
. by @daavoo in #477 - refactor(tracing): Rename cache invalidation methods for clarity by @njbrake in #473
- bugfix: add default timeout for requests by @njbrake in #478
- refactor(agent): Simplify run_async and fix linting errors by @njbrake in #474
- tests: Use
nano
instead ofmini
. by @daavoo in #479 - feat(agent): Add async config recreation methods and enhance agent pr… by @njbrake in #480
- tests: Use
output_type
intest_load_and_run_agent.py
. by @daavoo in #481
Full Changelog: 0.19.1...0.20.0
0.19.1
What's Changed
- fix(test_unit_langchain): Update default
Generation
. by @daavoo in #460 - fix(evaluators): Don't instrument evaluation agent run.
Full Changelog: 0.19.0...0.19.1
0.19.0
Breaking changes 💣
-
feat(tinyagent): Refactor and return final_output. by @daavoo in #400
-
feat(tinyagent): Use built-in structured output setting from provider… by @njbrake in #450
-
Return spans in exception if the invocation fails by @javiermtorres in #432
-
refactor(tracing): Instrument at the instance level. by @daavoo in #435
There is no exposed
TracingConfig
anymore. See https://mozilla-ai.github.io/any-agent/api/tracing/#any_agent.tracing.disable_console_traces to apply the equivalent ofTracingConfig(console=False)
.
What's Changed
- Use an Agent as a tool via A2A Cookbook by @njbrake in #392
- refactor: Rename
_main_agent_tools
to_tools
by @njbrake in #407 - Fix issues in A2A integration tests by @javiermtorres in #384
- 408 A2A agentskills should be configurable by @njbrake in #429
- Add workflow step to check jupyter notebooks by @javiermtorres in #428
- Pin frozenlist by @njbrake in #433
- pre-commit autoupdate by @github-actions in #434
- Sync A2A Tool by @njbrake in #431
- feat: All frameworks support structured outputs, and new configuration parameter output_type enables custom Pydantic agent output schemas by @njbrake in #420
- fix(llama_index): Don't set
allowed_tools
to empty list. by @daavoo in #444 - Dynamic port assignment in async tests by @javiermtorres in #442
- Updates for
a2a-python>=0.2.6
by @daavoo in #455 - chore: unpin frozenlist by @njbrake in #454
Full Changelog: 0.18.3...0.19.0