1907 Commits

Author SHA1 Message Date
Vladimir Blagojevic
890f3a5519
Merge branch 'main' into component_tool_state_validation 2025-12-17 14:37:00 +01:00
Vladimir Blagojevic
ceb87b372a Fixes 2025-12-17 12:40:16 +01:00
Vladimir Blagojevic
979a534a7a Simplify 2025-12-17 11:29:06 +01:00
Vladimir Blagojevic
ab1ce33ea2 Move validation to Tool superclass, allow subclasses to hook into verification 2025-12-17 11:17:23 +01:00
Vladimir Blagojevic
ace6bea34b Add ComponentTool state validation 2025-12-17 10:55:20 +01:00
Sebastian Husch Lee
99d506b3eb
refactor: Refactor agent breakpoint logic (#10222)
* No longer pass down parent_snapshot to Agent and break point trigger moved to Pipeline._run_component

* Some cleanup since parent_snapshot is no longer passed down

* linting and typing

* Refactor chat generator break point in Agent to use triggering mechanism of Pipeline._run_component

* small changes

* Refactor so tool invoker break point uses the break_point param of Pipeline._run_component

* edits

* Further reduce duplicate code

* Further reduce duplicate code

* Add break_point as property to BreakpointException

* Fix

* Fix mypy and PR comments

* PR comments
2025-12-17 08:05:57 +00:00
Stefano Fiorucci
e22c208232
test: improve some tests + retry others (#10239) 2025-12-15 09:41:36 +01:00
Vladimir Blagojevic
0c214c1f9a
feat: Update HuggingFaceLocalChatGenerator default model to Qwen/Qwen3-0.6B (#10176)
* Update HuggingFaceLocalChatGenerator default model to Qwen/Qwen3-0.6B

* Add enable_thinking init parameter

* Pydoc wording

* Format test

* Add tests for enable_thinking flag

* Add reno note for HuggingFaceLocalChatGenerator updates

* Update haystack/components/generators/chat/hugging_face_local.py

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>

* Update release notes for HuggingFaceLocalChatGenerator

Updated the release notes to reflect changes in the HuggingFaceLocalChatGenerator, including the new default model and the addition of the enable_thinking parameter.

* Simplify test_live_run with/out enable_thinking flag

* Test shuffle

---------

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>
2025-12-11 12:20:23 +01:00
David S. Batista
ca9c8a5ae6
fix: _handle_async_stream_response() in OpenAIChatGenerator handles asyncio.CancelledError closing the response stream (#10175)
* adding tests + fixing a test on openai_responses tests

* adding release notes

* fixing license header

* fixing license header

* Update releasenotes/notes/fix-OpenAIChatGenerator-handles-asyncio.CancelledError-closing-response-stream-37e1e85255e1dc41.yaml

Co-authored-by: Michele Pangrazzi <xmikex83@gmail.com>

---------

Co-authored-by: Michele Pangrazzi <xmikex83@gmail.com>
2025-12-10 13:06:51 +01:00
Sebastian Husch Lee
277f697a00
feat: Have components auto run warm_up on first use instead of erroring when not pre-warmed up (#10181)
* refactor

* Update tests

* Add reno

* Fix types

* fix type

* Fix test

* fix unit tests

* Add asserts to make mypy happy

* Fix unit test

* Update releasenotes/notes/refactor-warm-up-components-c2777fef28a70b61.yaml

Co-authored-by: David S. Batista <dsbatista@gmail.com>

* start getting rid of asserts

* remove more asserts

* remove last assert

* Remove assert

---------

Co-authored-by: David S. Batista <dsbatista@gmail.com>
2025-12-10 10:38:36 +01:00
Vladimir Blagojevic
7daefb8a15
fix: Improve error messages for non-string templates in ConditionalRouter (#10189)
* Improve error messages for non-string templates in ConditionalRouter

* Add reno note

* Minor test fix
2025-12-10 10:36:24 +01:00
Sebastian Husch Lee
6191203693
fix: Fix variable extraction in Jinja2 templates returning set variables (#10093)
* Fixes

* Add reno

* Update tests

* Move util function to existing file

* Updating tests

* Fix docstrings and update reno

* Improve tests

* Add test to conditional router

* PR comments

---------

Co-authored-by: Vladimir Blagojevic <dovlex@gmail.com>
2025-12-08 09:55:08 +01:00
OscarPindaro
bad2937aee
feat: add run async filter and automerging retriever (#9897)
* added run_async to filter retriever. implementation identical to run

* created a test for the FilterRetriever, with the same logic of the original sync test

* AutoMergingRetriever has now a run_async method identical to run, but with an async call on the document_store

* added async test, which contains async version of original run tests. discovered incorrect async await call in my previous commit

* modified documentation to specify that the method is asyncronous

* added patch file

* fixing typing error for filter_documents_async

* updating release notes

* fixing unit test

---------

Co-authored-by: Amna Mubashar <amnahkhan.ak@gmail.com>
Co-authored-by: David S. Batista <dsbatista@gmail.com>
2025-12-03 16:18:35 +01:00
Vladimir Blagojevic
dfd678eff4
Improve flaky tool invocation integration test (#10187) 2025-12-03 15:42:26 +01:00
Vladimir Blagojevic
152a16c82b
Fix flaky parallel tool test with stronger model (#10183)
Co-authored-by: David S. Batista <dsbatista@gmail.com>
2025-12-03 13:29:27 +00:00
Vladimir Blagojevic
adcd4ae361
chore: Update Azure default model to gpt-4.1-mini (#10167)
* Update Azure default model to gpt-4.1-mini

* Add version

* Version updates

* Experiment

* Update experiment with 2024-12-01-preview

* Fix test

* Add reno note

* Fix typo
2025-12-03 14:13:49 +01:00
David S. Batista
eb98e06497
fix: RegexTextExtractor bool var to change output from { } to {"captured_text": ""} (#10152)
* wip

* wip

* updating warning

* adding release notes

* cleaning up + PR comments
2025-12-02 15:01:03 +00:00
Vladimir Blagojevic
ad5c242081
fix: Ensure ToolInvoker refreshes tool registry after warmup (#10171)
* Fix ToolInvoker refreshing tool registry after warmup for lazy-initialized toolsets

* PR feedback, convert integration to unit test
2025-12-02 10:25:16 +01:00
Amna Mubashar
050c25cee4
fix: serialization of pipeline_outputs in pipeline snapshot (#10096)
* Serialize pipeline outputs

* Add release notes

* Fix tests

* Update fix-pipeline-output-ser-7f7867b32ca5eda3.yaml

* Make the deserialization backward compatible

* Add a test

* Update fix-pipeline-output-ser-7f7867b32ca5eda3.yaml

* Update fix-pipeline-output-ser-7f7867b32ca5eda3.yaml

* Update release notes
2025-12-01 20:01:43 +05:00
Vladimir Blagojevic
3ebe9b2df2
chore: Update default OpenAI model to gpt-5-mini (#10144)
* Update default OpenAI model to gpt-5-mini

* Update tests

* Fix tool invoker tests

* Update integration tests

* Update fragile test

* More robust tests

* Harden test

* More test improvements

* Better prompting, to trigger tools

* Simplify

* Simplify more

* Simplify even more, less maintenance in the future

* Mark two integration tests flaky

* Fixing fine details

* Add release note for OpenAI default model update to gpt-5-mini

* Add upgrade section to OpenAI default model release note
2025-12-01 13:55:53 +01:00
Amna Mubashar
248b5a81a1
chore: increase test coverage for OpenAIResponsesChatGenerator (#10154)
* Update tests

* Add new tests

* Fix tests

* Small fixes

* Update openai_responses.py

---------

Co-authored-by: David S. Batista <dsbatista@gmail.com>
2025-11-29 04:11:38 +05:00
Stefano Fiorucci
af75774c3f
chore: rename docs directory and other adjustments (#10157)
* chore: rename docs directory and other adjustments

* fixes
2025-11-28 08:41:35 +01:00
Stefano Fiorucci
82d249fa0a
test: fix docs URL in LinkContentFetcher tests (#10150) 2025-11-27 12:33:15 +00:00
Stefano Fiorucci
0ca05a60d3
fix: avoid big tracing payloads by using string placeholders (#10142)
* draft implementation

* placeholder param, tests

* relnote

* fmt
2025-11-26 17:43:46 +01:00
Jonathan Gallon
a46bc60b56
fix: ensure that headers keys are unique in link_content (#10111)
* fix: ensure that headers keys are unique in link_content

* Add release note

* Fix mypy issue

* Rename variable

* Add unit tests + improve release note

* Revert mypy issue
2025-11-26 17:22:27 +01:00
David S. Batista
763174ede6
feat: adding QueryExpander, MultiQueryEmbeddingRetriever and MultiQueryTextRetriever (#10126)
* importing files from experimental

* linting + tests

* fixing integrations tests

* adding release notes

* fixing imports

* adding query component

* adding docs to docusaurus

* Update docs/pydoc/config_docusaurus/query_api.yml

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>

* Update haystack/components/query/query_expander.py

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>

* Update releasenotes/notes/adding-QueryExpander-MultiQueryRetriever-88c4847894ea1fd0.yaml

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>

* fixing code examples

* adding extra unit tests to assert deduplication is working

* fixing and increasing QueryExpander tets

---------

Co-authored-by: Stefano Fiorucci <stefanofiorucci@gmail.com>
2025-11-25 10:22:42 +01:00
Matthias Richter
5aeec2aa4d
fix: include components with consumed outputs in pipeline results (#10065)
* include components with consumed outputs in pipeline results

* update test

* update test

* release notes

* Add async pipeline test and update more checks in async pipeline

---------

Co-authored-by: Sebastian Husch Lee <sjrl423@gmail.com>
2025-11-13 09:11:04 +00:00
Amna Mubashar
538e483068
feat: return logprobs in OpenAIChatGenerator and OpenAIResponsesChatGenerator (#10035)
* Return logprobs

* Add log probs in responses

* Get logprobs from streaming

* Fix linting

* Update tests

* Fix formatting

* Update

* Fix tests

* Loosen up tests

* updates

* Update logprobs

* linting

* Fix test
2025-11-11 13:16:36 +01:00
Amna Mubashar
564780b768
fix: to_dict in OpenAIResponsesChatGenerator and json_schema for structured outputs (#10043)
* Fix to dict and json schema support

* Update Azure Responses

* Add tests

* Fix tests

* Fix tests

* remove print

* Change model

* Add a new test

* Loosen tests
2025-11-11 12:16:52 +01:00
Sebastian Husch Lee
4e19612a54
fix: Fix conversion of streaming chunks to chat message when handling reasoning content in OpenAIResponsesChatGenerator (#10036)
* Update information in streaming chunks and fix convert streaming chunks to chat message when handling reasoning content

* Fix unit test

* fix mypy

* try to make integration test more reliable

* Remove unused imports
2025-11-10 10:57:51 +01:00
Sebastian Husch Lee
bd927da680
feat: Add AzureOpenAIResponsesChatGenerator (#10019)
* Add working ChatGenerator

* rename

* Improve and add live tests

* Updates

* Update the tests

* Fix errors

* Add release notes

* Add support for openai tools

* Remove openai tools test that times out

* fix tool calls

* Update release notes

* PR comments

* remove edits to chat message

* Add a test

* PR comments

* Send back reasoning to model

* Fix reasoning support

* Add reasoning support

* Fix tests

* Refactor

* Simplify methods

* Fix mypy

* Stream responses, tool calls etc

* Update docstrings

* Fix errors while using in Agent

* Fix call_id and fc_id

* Update tests

* Updates

* Add extra in ToolCall and ToolCallDelta

* Update streaming chunk

* Fix tests and linting

* Update api key resolve

* PR comments

* PR comments

* Updates

* some type fixes and also make sure to use flatten_tools_or_toolsets

* fix docs

* Fix streaming chunks so assistant header is properly captured

* Add finish_reason and update test

* Skip streaming + pydantic model test b/c of known issue in openai python sdk https://github.com/openai/openai-python/issues/2305

* Fix pylint

* Initial commit adding AzureOpenAIResponsesChatGenerator support

* fix unit test

* Starting to refactor to use new recommended way to connect to Azure OpenAI

* Updates

* Fix tests

* More tests

* fix integration tests

* Add to docs

* Don't need warm_up method anymore

* fix unit test

* Fix pylint

* fix docstrings

* fix mypy typing

* fix reno

* Add another unit test

---------

Co-authored-by: Amna Mubashar <amnahkhan.ak@gmail.com>
2025-11-06 14:27:10 +01:00
Amna Mubashar
2a0a6f1bc6
feat: Add Chat Generator supporting OpenAI Responses API (#9808)
* Add working ChatGenerator

* rename

* Improve and add live tests

* Updates

* Update the tests

* Fix errors

* Add release notes

* Add support for openai tools

* Remove openai tools test that times out

* fix tool calls

* Update release notes

* PR comments

* remove edits to chat message

* Add a test

* PR comments

* Send back reasoning to model

* Fix reasoning support

* Add reasoning support

* Fix tests

* Refactor

* Simplify methods

* Fix mypy

* Stream responses, tool calls etc

* Update docstrings

* Fix errors while using in Agent

* Fix call_id and fc_id

* Update tests

* Updates

* Add extra in ToolCall and ToolCallDelta

* Update streaming chunk

* Fix tests and linting

* Update api key resolve

* PR comments

* PR comments

* Updates

* some type fixes and also make sure to use flatten_tools_or_toolsets

* fix docs

* Fix streaming chunks so assistant header is properly captured

* Add finish_reason and update test

* Skip streaming + pydantic model test b/c of known issue in openai python sdk https://github.com/openai/openai-python/issues/2305

* Fix pylint

---------

Co-authored-by: Sebastian Husch Lee <sjrl423@gmail.com>
2025-11-06 12:55:18 +01:00
Sebastian Husch Lee
21502f4970
fix: Use deepcopy with exceptions instead of deepcopy (#10029)
* Fix deepcopy issue

* Update test

* Fix spelling
2025-11-06 11:45:34 +00:00
Amna Mubashar
071d2f18b9
feat: Add extra field in ToolCall and ToolCallDelta (#10018)
* Add extra to Toolcall

* Add release notes

* Update tests
2025-11-05 13:35:32 +01:00
Swapnil Gusani
2ecddff284
feat: add revision parameter to Sentence Transformers embedder components (#10003)
* Add revision argument to sentence transformer components

* Use revision as last argument in sentence transformer
Add release notes
2025-11-05 09:03:46 +00:00
HamidOna
e7fb4f5ac5
fix: warm up individual tools inside Toolsets in warm_up_tools() (#10002)
* fix: warm up individual tools inside Toolsets in warm_up_tools()

Related Issues:

* Follows up on PR #9942 (feat: Add warm_up() method to ChatGenerators)

* Addresses bug discovered during implementation of PR #9942 for issue #9907

Proposed Changes:

The warm_up_tools() utility function was only calling warm_up() on

Toolset objects themselves, but not on the individual Tool instances

contained within them. This meant tools inside a Toolset were not

properly initialized before use.

This PR modifies warm_up_tools() to iterate through Toolsets and call

warm_up() on each individual tool, in addition to calling warm_up() on

the Toolset itself.

Changes:

- Modified warm_up_tools() in haystack/tools/utils.py to iterate through

  Toolsets when encountered (both as single argument and within lists)

- Added iteration to call warm_up() on each individual Tool inside Toolsets

- Added comprehensive test class TestWarmUpTools with 7 test cases

How did you test it:

- Added 7 comprehensive unit tests in test/tools/test_tools_utils.py:

  * test_warm_up_tools_with_none - handles None input

  * test_warm_up_tools_with_single_tool - single tool in list

  * test_warm_up_tools_with_single_toolset - KEY TEST: verifies both

    Toolset and individual tools are warmed

  * test_warm_up_tools_with_list_containing_toolset - toolset within list

  * test_warm_up_tools_with_multiple_toolsets - multiple toolsets

  * test_warm_up_tools_with_mixed_tools_and_toolsets - mixed scenarios

  * test_warm_up_tools_idempotency - safe to call multiple times

Notes for the reviewer:

I discovered this bug while implementing PR #9942 (for issue #9907).

When a Toolset object is passed to a component's tools parameter, the

warm_up_tools() function only calls Toolset.warm_up(), which is a no-op.

It doesn't iterate through the individual tools inside the Toolset to

warm them up.

 acknowledged by @vblagoje and @sjrl

This implementation:

- Modified warm_up_tools() to iterate through Toolsets and call warm_up() on each individual tool

 - Added comprehensive tests for Toolset warming behavior

- Verified both the Toolset and its contained tools are warmed up

Checklist:

I have read the contributors guidelines and the code of conduct

I have updated the related issue with new insights and changes

I added unit tests and updated the docstrings

I've used one of the conventional commit types for my PR title: fix:

I documented my code

I ran pre-commit hooks and fixed any issue

* added release note

* refactor: move tool warm-up iteration to Toolset.warm_up()

Addresses architectural feedback - moved iteration logic from warm_up_tools()
to base Toolset.warm_up() for better encapsulation. Subclasses can now
override warm_up() to customize initialization without breaking the contract.

- Toolset.warm_up() now iterates and warms tools by default
- warm_up_tools() simplified to delegate to warm_up()
- Updated tests and release notes

---------

Co-authored-by: HamidOna13 <abdulhamid.onawole@aizatron.com>
2025-11-05 09:59:23 +01:00
Sebastian Husch Lee
f3b180e398
feat: Add serialization and deserialization of pydantic BaseModels when creating a PipelineSnaphsot (#9973)
* Add pydantic model sede support

* Add reno

* Use model_validate
2025-11-03 14:52:14 +01:00
Sebastian Husch Lee
a3a622b41a
feat: Auto call warm up on components that take in ChatGenerators as input (#9987)
* Auto call warm up on components that take in ChatGenerators as input

* fix test
2025-10-31 10:16:47 +01:00
tstadel
74da3d1c8a
fix: Agent deserialization when state_schema=None (#9984)
* fix: agent deserialization when state_schema None

* add reno
2025-10-31 08:12:27 +01:00
Stefano Fiorucci
2a21e83f3e
chore: simplify Datadog log-trace correlation (#9974)
* fix ddtrace

* simplify

* simplify more

* relnote

* better relnote
2025-10-30 12:27:44 +01:00
Vladimir Blagojevic
08f6969351
fix: Add warm_up() calls to tests after ChatGenerator tool initialization changes (#9965)
* In tests call agent.warm_up() where needed

* Add reno

* Update wording in reno note

* Update reno note
2025-10-29 13:52:57 +01:00
HamidOna
6c78f1048c
feat: Add warm_up() method to ChatGenerators for tool initialization (#9942)
* Add warm_up() method to OpenAIChatGenerator

- Add warm_up() method that calls warm_up_tools()
- Add _is_warmed_up flag for idempotency
- Import warm_up_tools from haystack.tools
- Add comprehensive tests:
  - test_warm_up_with_tools: single tool case
  - test_warm_up_with_no_tools: no tools case
  - test_warm_up_with_multiple_tools: multiple tools case
- All tests passing

Part of issue #9907

* Add warm_up() method to AzureOpenAIChatGenerator

- Add warm_up() method that calls warm_up_tools()
- Add _is_warmed_up flag for idempotency
- Import warm_up_tools from haystack.tools
- Add comprehensive tests:
  - test_warm_up_with_tools: single tool case
  - test_warm_up_with_no_tools: no tools case
  - test_warm_up_with_multiple_tools: multiple tools case
- All tests passing

Part of issue #9907

* Add warm_up() method to HuggingFaceAPIChatGenerator

- Add warm_up() method that calls warm_up_tools()
- Add _is_warmed_up flag for idempotency
- Import warm_up_tools from haystack.tools
- Add comprehensive tests:
  - test_warm_up_with_tools: single tool case
  - test_warm_up_with_no_tools: no tools case
  - test_warm_up_with_multiple_tools: multiple tools case
- All tests passing

Part of issue #9907

* Enhance warm_up() method in HuggingFaceLocalChatGenerator

- Add warm_up_tools import from haystack.tools.utils
- Add _is_warmed_up flag for idempotency
- Enhance existing warm_up() to also warm up tools
- Preserve existing pipeline initialization logic
- Add comprehensive tests:
  - test_warm_up_with_tools: single tool case
  - test_warm_up_with_no_tools: no tools case
  - test_warm_up_with_multiple_tools: multiple tools case

Part of issue #9907

* Add warm_up() method to FallbackChatGenerator

- Add warm_up() method that delegates to underlying generators
- Uses hasattr check to gracefully handle generators without warm_up
- Add comprehensive tests:
  - test_warm_up_delegates_to_generators: verify delegation works
  - test_warm_up_with_no_warm_up_method: handle missing warm_up gracefully
  - test_warm_up_mixed_generators: mix of generators with/without warm_up
- All tests passing

Part of issue #9907

* docs: Add release notes for warm_up() feature

---------

Co-authored-by: HamidOna13 <abdulhamid.onawole@aizatron.com>
2025-10-29 11:06:55 +01:00
Jan Beitner
6e12368177
feat: Add generation_kwargs to run methods of Agent (#9616)
* add generation_kwargs to run methods of Agent

* include test generation_kwargs in agent unit tests

* fix typo

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Update haystack/components/agents/agent.py

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Update haystack/components/agents/agent.py

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* create separate unit test for generation kwargs with agent

* fix formatting

* add back generation_kwargs

* add release notes

---------

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>
2025-10-28 09:02:51 +00:00
Stefano Fiorucci
cba9f60be1
chore: remove unused images (#9935) 2025-10-24 14:51:32 +02:00
Stefano Fiorucci
35fb6c6f01
feat: improve AnswerBuilder to support showing RAG references (#9933)
* draft

* improve

* refactor

* improvs + usage ex

* relnote

* pipeline test fix
2025-10-24 12:47:16 +02:00
Charles-Meldhine Madi Mnemoi
47c3a2bc88
feat: SentenceWindowRetriever now supports run_async (#9895)
* feat: `SentenceWindowRetriever` now supports `run_async`

* refactor: Reduce duplicated code

* refactor: Remove unused import

* docs: Add release notes

* style: ignore type error from missing `run_async` in `DocumentStore` protocol

* docs: Precise the ignored mypy error and add a comment explaining why

* style: update mypy ignore type for filter_documents_async in SentenceWindowRetriever

---------

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>
2025-10-21 11:41:43 +02:00
Vladimir Blagojevic
9bc59c3806
Add Tools warm_up (#9856)
* Tools warmup initial

* Fix lint

* Improve pydocs for warm_up

* Further improve pydocs for warm_up

* No need to warm_up tools in Agent as they are warmed up by ToolInvoker

* Simplify Toolset __add__ logic

* Simplify _ToolsetWrapper

* Add unit tests

* ToolInvoker warm_up

* Improve Tool pydoc

* Resurrect serde_utils.py

* Update tests

* Call ToolInvoker warm_up in agent warm_up

* Lint

* Move warm_up tests to ToolInvoker

* Update tests

* Remove tests

* Pydoc nit

* PR feedback

* ToolInvoker's warm_up is idempotent

* Add reno note

* Update releasenotes/notes/tools-warm-up-support-e16cc043fed3653f.yaml

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Make ComponentTool warm_up idempotent

* Update warm_up_tools to use ToolsType

* Linting

* Add warm up test for mixed list of Tool/Toolset instances

---------

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>
2025-10-20 12:11:34 +02:00
Sebastian Husch Lee
4cb4854057
don't name something test if it's not a test (#9900) 2025-10-20 09:23:43 +00:00
Vladimir Blagojevic
8098e9c6f6
feat: Update tools param to Optional[Union[list[Union[Tool, Toolset]], Toolset]] (#9886)
* Update tools param to Optional[Union[list[Union[Tool, Toolset]], Toolset]]

* Exclude tools from schema generation

* Different approach

* Lint

* Use ToolsType

* Fixes

* Reno note

* Update haystack/tools/utils.py

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Update haystack/tools/serde_utils.py

Co-authored-by: tstadel <60758086+tstadel@users.noreply.github.com>

* Revert "Update haystack/tools/utils.py"

This reverts commit ebdec9115d46276b57a7459e566fd06c388ba51b.

* PR feedback

* Improve serde tests

* Update releasenotes/notes/mixed-tools-toolsets-support-d944c5770e2e6e7b.yaml

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Pydoc polish

* Update FallbackChatGenerator for new ToolsType

---------

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>
Co-authored-by: tstadel <60758086+tstadel@users.noreply.github.com>
2025-10-20 09:26:22 +02:00
Vladimir Blagojevic
90edcdacee
feat: Add FallbackChatGenerator (#9859)
* Add FallbackChatGenerator

* Update licence files

* Use typing.Optional/Union for Python 3.9 compat

* Use the right logger

* Lint fix

* PR review

* Rewrite release note

* Add FallbackChatGenerator to docs

* Update haystack/components/generators/chat/fallback.py

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>

* Rename generator -> chat_generators

* Lint

* Rename generators -> chat_generators in meta, docs, tests

* Update haystack/components/generators/chat/fallback.py

Co-authored-by: Amna Mubashar <amnahkhan.ak@gmail.com>

* Update pydocs

* Minor pydocs fix

---------

Co-authored-by: Sebastian Husch Lee <10526848+sjrl@users.noreply.github.com>
Co-authored-by: Amna Mubashar <amnahkhan.ak@gmail.com>
2025-10-17 15:46:31 +02:00