Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
c0c7138
Initial commit
sjrl Sep 16, 2025
7868dca
Refactoring
sjrl Sep 16, 2025
0bc7f6f
Add more docstrings
sjrl Sep 16, 2025
796e1eb
Add agent example
sjrl Sep 16, 2025
575e035
doc strings
sjrl Sep 16, 2025
a364c17
Formatting
sjrl Sep 16, 2025
4315cd9
Linting and mypy
sjrl Sep 16, 2025
f0604c3
PR comments
sjrl Sep 17, 2025
956e8f3
Add missing header
sjrl Sep 18, 2025
0a4d78d
Formatting
sjrl Sep 18, 2025
1f84bdd
PR comments
sjrl Sep 22, 2025
336bc22
PR comments
sjrl Sep 22, 2025
8c31e2e
docstrings and refactoring
sjrl Sep 22, 2025
d539587
Cleaning up and moving some things to base classes instead of protocols
sjrl Sep 22, 2025
23223c0
Start adding pydoc files
sjrl Sep 22, 2025
4f28982
Start updating readme
sjrl Sep 22, 2025
27050d0
Add new example using multi-agent architecture and refactoring
sjrl Sep 24, 2025
9689c47
Refactoring
sjrl Sep 24, 2025
89741ce
More refactoring
sjrl Sep 24, 2025
a9a80e5
Make UIs threadsafe
sjrl Sep 24, 2025
51c6335
Update docs
sjrl Sep 24, 2025
afc5e40
formatting
sjrl Sep 24, 2025
b23e090
Formatting
sjrl Sep 24, 2025
6d9b0e8
linting
sjrl Sep 24, 2025
8ea8ca8
Update readme
sjrl Sep 24, 2025
db0aad6
Update pydoc
sjrl Sep 24, 2025
8f74f9e
Merge branch 'main' into hitl-alternative
sjrl Sep 24, 2025
64db94a
Fix docs
sjrl Sep 24, 2025
aa9f4f7
Merge branch 'hitl-alternative' of github.com:deepset-ai/haystack-exp…
sjrl Sep 24, 2025
573c808
Fix docs
sjrl Sep 25, 2025
6adce6d
Add update_after_confirmation function to allow better control of upd…
sjrl Sep 25, 2025
f26dcdf
PR comments
sjrl Sep 25, 2025
99cdfb3
update pydocs
sjrl Sep 25, 2025
fe5d1de
PR comments and starting to add tests
sjrl Sep 25, 2025
4f6f793
formatting
sjrl Sep 25, 2025
2630bae
PR comments and added new execute param to ToolExecutionDecision
sjrl Sep 25, 2025
6481fb8
Add docstrings, update how modify parameters works
sjrl Sep 25, 2025
4c7b4ca
Update parameter modification prompt
sjrl Sep 25, 2025
951b067
Make parameter modification more robust and user friendly
sjrl Sep 25, 2025
fbf99b5
Add more docstrings
sjrl Sep 25, 2025
79bb30a
Merge branch 'main' of github.com:deepset-ai/haystack-experimental in…
sjrl Sep 25, 2025
e0ba657
Add more tests
sjrl Sep 25, 2025
81291c0
Update tests
sjrl Sep 26, 2025
0617eb4
Remove file
sjrl Sep 26, 2025
0427efc
Refactor to make the policies, user interfaces and strategies to dire…
sjrl Sep 29, 2025
08225e4
Merge branch 'main' into hitl-alternative
sjrl Oct 6, 2025
4b98580
feat: Update HiTL confirmation strategies to work with Breakpoints (#…
sjrl Oct 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,17 @@ that includes it. Once it reaches the end of its lifespan, the experiment will b

### Active experiments

| Name | Type | Expected End Date | Dependencies | Cookbook | Discussion |
|---------------------------------------|--------------------------------|-------------------|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| [`InMemoryChatMessageStore`][1] | Memory Store | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`ChatMessageRetriever`][2] | Memory Component | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`ChatMessageWriter`][3] | Memory Component | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`QueryExpander`][5] | Query Expansion Component | October 2025 | None | None | [Discuss][6] |
| [`EmbeddingBasedDocumentSplitter`][8] | EmbeddingBasedDocumentSplitter | August 2025 | None | None | [Discuss][7] |
| [`MultiQueryEmbeddingRetriever`][13] | MultiQueryEmbeddingRetriever | November 2025 | None | None | [Discuss][11] |
| [`MultiQueryTextRetriever`][14] | MultiQueryTextRetriever | November 2025 | None | None | [Discuss][12] |
| [`OpenAIChatGenerator`][9] | Chat Generator Component | November 2025 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/hallucination_score_calculator.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][10] |
| Name | Type | Expected End Date | Dependencies | Cookbook | Discussion |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------|-------------------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| [`InMemoryChatMessageStore`][1] | Memory Store | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`ChatMessageRetriever`][2] | Memory Component | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`ChatMessageWriter`][3] | Memory Component | December 2024 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/conversational_rag_using_memory.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][4] |
| [`QueryExpander`][5] | Query Expansion Component | October 2025 | None | None | [Discuss][6] |
| [`EmbeddingBasedDocumentSplitter`][8] | EmbeddingBasedDocumentSplitter | August 2025 | None | None | [Discuss][7] |
| [`MultiQueryEmbeddingRetriever`][13] | MultiQueryEmbeddingRetriever | November 2025 | None | None | [Discuss][11] |
| [`MultiQueryTextRetriever`][14] | MultiQueryTextRetriever | November 2025 | None | None | [Discuss][12] |
| [`OpenAIChatGenerator`][9] | Chat Generator Component | November 2025 | None | <a href="https://colab.research.google.com/github/deepset-ai/haystack-cookbook/blob/main/notebooks/hallucination_score_calculator.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | [Discuss][10] |
| [`Agent`][15]; [Confirmation Policies][16]; [ConfirmationUIs][17]; [ConfirmationStrategies][18]; [`ConfirmationUIResult` and `ToolExecutionDecision`][19] [HITLBreakpointException][20] | Human in the Loop | December 2025 | rich | None | [Discuss][20] |

[1]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/chat_message_stores/in_memory.py
[2]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/retrievers/chat_message_retriever.py
Expand All @@ -66,6 +67,13 @@ that includes it. Once it reaches the end of its lifespan, the experiment will b
[12]: https://github.com/deepset-ai/haystack-experimental/discussions/364
[13]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/retrievers/multi_query_embedding_retriever.py
[14]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/retrievers/multi_query_text_retriever.py
[15]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/agent.py
[16]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/human_in_the_loop/policies.py
[17]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/human_in_the_loop/user_interfaces.py
[18]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/human_in_the_loop/strategies.py
[19]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/human_in_the_loop/dataclasses.py
[20]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/agents/human_in_the_loop/errors.py
[21]: https://github.com/deepset-ai/haystack-experimental/discussions/XXX

### Adopted experiments
| Name | Type | Final release |
Expand Down
36 changes: 36 additions & 0 deletions docs/pydoc/config/agents_api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
loaders:
- type: haystack_pydoc_tools.loaders.CustomPythonLoader
search_path: [../../../]
modules: [
"haystack_experimental.components.agents.agent",
"haystack_experimental.components.agents.human_in_the_loop.breakpoint",
"haystack_experimental.components.agents.human_in_the_loop.dataclasses",
"haystack_experimental.components.agents.human_in_the_loop.errors",
"haystack_experimental.components.agents.human_in_the_loop.policies",
"haystack_experimental.components.agents.human_in_the_loop.strategies",
"haystack_experimental.components.agents.human_in_the_loop.types",
"haystack_experimental.components.agents.human_in_the_loop.user_interfaces",
]
ignore_when_discovered: ["__init__"]
processors:
- type: filter
expression:
documented_only: true
do_not_filter_modules: false
skip_empty_modules: true
- type: smart
- type: crossref
renderer:
type: haystack_pydoc_tools.renderers.ReadmeCoreRenderer
excerpt: Tool-using agents with provider-agnostic chat model support.
category_slug: haystack-api
title: Agents
slug: experimental-agents-api
order: 2
markdown:
descriptive_class_title: false
classdef_code_block: false
descriptive_module_title: true
add_method_class_prefix: true
add_member_class_prefix: false
filename: experimental_agents_api.md
16 changes: 16 additions & 0 deletions haystack_experimental/components/agents/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# SPDX-FileCopyrightText: 2022-present deepset GmbH <[email protected]>
#
# SPDX-License-Identifier: Apache-2.0

import sys
from typing import TYPE_CHECKING

from lazy_imports import LazyImporter

_import_structure = {"agent": ["Agent"]}

if TYPE_CHECKING:
from .agent import Agent as Agent

else:
sys.modules[__name__] = LazyImporter(name=__name__, module_file=__file__, import_structure=_import_structure)
Loading