Files
deepset-ai--haystack/releasenotes/notes/agent-dynamic-tools-c5ffaeaa56572802.yaml
wehub-resource-sync c56bef871b
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
Docker image release / Build base image (push) Has been cancelled
Sync docs with Docusaurus / sync (push) Has been cancelled
Tests / Check if changed (push) Has been cancelled
Tests / format (push) Has been cancelled
Tests / check-imports (push) Has been cancelled
Tests / Unit / macos-latest (push) Has been cancelled
Tests / Unit / ubuntu-latest (push) Has been cancelled
Tests / Unit / windows-latest (push) Has been cancelled
Tests / mypy (push) Has been cancelled
Tests / Integration / ubuntu-latest (push) Has been cancelled
Tests / Integration / macos-latest (push) Has been cancelled
Tests / Integration / windows-latest (push) Has been cancelled
Tests / notify-slack-on-failure (push) Has been cancelled
Tests / Mark tests as completed (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:22:28 +08:00

29 lines
1.9 KiB
YAML

---
enhancements:
- |
Duplicate tool names are now detected at the start of each ``Agent`` step (before the chat generator call)
instead of only at tool execution, so the error surfaces earlier and the LLM is never sent duplicate tool schemas.
fixes:
- |
``Agent`` now correctly executes tools supplied only at runtime via ``run(tools=...)`` / ``run_async(tools=...)``
when no tools were provided at initialization. Previously the run stopped after the first LLM call because the
step guard checked the init-time tools instead of the tools resolved for the run.
- |
Initializing an ``Agent`` no longer warms up a ``SearchableToolset``. Previously construction could iterate the
tools, and ``SearchableToolset`` warms itself up when iterated, so it was warmed up too early. Its warm-up now
happens only via ``Agent.warm_up()`` or at run time.
- |
The ``haystack.agent.run`` tracing span's ``haystack.agent.tools`` tag now reflects the tools actually used for
the run. Previously it always reported the init-time tools, so it was inconsistent with the run when tools were
overridden at runtime via ``run(tools=...)`` / ``run_async(tools=...)``.
upgrade:
- |
``Agent`` no longer validates ``exit_conditions`` against tool names at initialization. Exit conditions are now
evaluated at runtime, so a condition naming a tool that is loaded later — e.g. a tool passed at runtime or one
discovered by ``SearchableToolset`` — works as expected. Consequently, an unknown exit-condition name no longer
raises a ``ValueError`` at construction.
- |
Tool support is now validated against the tools resolved for each run, not only the tools provided at
initialization. Passing tools at runtime via ``run(tools=...)`` to a chat generator that does not support tools
now raises a ``TypeError`` instead of silently ignoring them.