haystack-experimental 0.15.1__py3-none-any.whl → 0.16.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- haystack_experimental/chat_message_stores/in_memory.py +3 -3
- haystack_experimental/chat_message_stores/types.py +2 -2
- haystack_experimental/components/agents/agent.py +174 -119
- haystack_experimental/components/agents/human_in_the_loop/breakpoint.py +3 -1
- haystack_experimental/components/agents/human_in_the_loop/dataclasses.py +6 -6
- haystack_experimental/components/agents/human_in_the_loop/errors.py +1 -5
- haystack_experimental/components/agents/human_in_the_loop/strategies.py +10 -10
- haystack_experimental/components/agents/human_in_the_loop/types.py +5 -5
- haystack_experimental/components/agents/human_in_the_loop/user_interfaces.py +2 -2
- haystack_experimental/components/generators/chat/openai.py +11 -11
- haystack_experimental/components/preprocessors/__init__.py +1 -3
- haystack_experimental/components/retrievers/chat_message_retriever.py +4 -4
- haystack_experimental/components/retrievers/types/protocol.py +3 -3
- haystack_experimental/components/summarizers/llm_summarizer.py +7 -7
- haystack_experimental/core/pipeline/breakpoint.py +6 -6
- haystack_experimental/dataclasses/breakpoints.py +2 -2
- haystack_experimental/utils/hallucination_risk_calculator/dataclasses.py +9 -9
- haystack_experimental/utils/hallucination_risk_calculator/openai_planner.py +4 -4
- haystack_experimental/utils/hallucination_risk_calculator/skeletonization.py +5 -5
- {haystack_experimental-0.15.1.dist-info → haystack_experimental-0.16.0.dist-info}/METADATA +6 -10
- {haystack_experimental-0.15.1.dist-info → haystack_experimental-0.16.0.dist-info}/RECORD +24 -25
- haystack_experimental/components/preprocessors/embedding_based_document_splitter.py +0 -430
- {haystack_experimental-0.15.1.dist-info → haystack_experimental-0.16.0.dist-info}/WHEEL +0 -0
- {haystack_experimental-0.15.1.dist-info → haystack_experimental-0.16.0.dist-info}/licenses/LICENSE +0 -0
- {haystack_experimental-0.15.1.dist-info → haystack_experimental-0.16.0.dist-info}/licenses/LICENSE-MIT.txt +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, Protocol
|
|
6
6
|
|
|
7
7
|
from haystack.core.serialization import default_from_dict, default_to_dict
|
|
8
8
|
|
|
@@ -67,8 +67,8 @@ class ConfirmationStrategy(Protocol):
|
|
|
67
67
|
tool_name: str,
|
|
68
68
|
tool_description: str,
|
|
69
69
|
tool_params: dict[str, Any],
|
|
70
|
-
tool_call_id:
|
|
71
|
-
**kwargs:
|
|
70
|
+
tool_call_id: str | None = None,
|
|
71
|
+
**kwargs: dict[str, Any] | None,
|
|
72
72
|
) -> ToolExecutionDecision:
|
|
73
73
|
"""
|
|
74
74
|
Run the confirmation strategy for a given tool and its parameters.
|
|
@@ -92,8 +92,8 @@ class ConfirmationStrategy(Protocol):
|
|
|
92
92
|
tool_name: str,
|
|
93
93
|
tool_description: str,
|
|
94
94
|
tool_params: dict[str, Any],
|
|
95
|
-
tool_call_id:
|
|
96
|
-
**kwargs:
|
|
95
|
+
tool_call_id: str | None = None,
|
|
96
|
+
**kwargs: dict[str, Any] | None,
|
|
97
97
|
) -> ToolExecutionDecision:
|
|
98
98
|
"""
|
|
99
99
|
Async version of run. Run the confirmation strategy for a given tool and its parameters.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import json
|
|
6
6
|
from threading import Lock
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
from haystack.core.serialization import default_to_dict
|
|
10
10
|
from rich.console import Console
|
|
@@ -20,7 +20,7 @@ _ui_lock = Lock()
|
|
|
20
20
|
class RichConsoleUI(ConfirmationUI):
|
|
21
21
|
"""Rich console interface for user interaction."""
|
|
22
22
|
|
|
23
|
-
def __init__(self, console:
|
|
23
|
+
def __init__(self, console: Console | None = None):
|
|
24
24
|
self.console = console or Console()
|
|
25
25
|
|
|
26
26
|
def get_user_confirmation(
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
5
|
from dataclasses import replace
|
|
6
|
-
from typing import Any
|
|
6
|
+
from typing import Any
|
|
7
7
|
|
|
8
8
|
from haystack import component
|
|
9
9
|
from haystack.components.generators.chat.openai import OpenAIChatGenerator as BaseOpenAIChatGenerator
|
|
@@ -56,12 +56,12 @@ class OpenAIChatGenerator(BaseOpenAIChatGenerator):
|
|
|
56
56
|
def run(
|
|
57
57
|
self,
|
|
58
58
|
messages: list[ChatMessage],
|
|
59
|
-
streaming_callback:
|
|
60
|
-
generation_kwargs:
|
|
59
|
+
streaming_callback: StreamingCallbackT | None = None,
|
|
60
|
+
generation_kwargs: dict[str, Any] | None = None,
|
|
61
61
|
*,
|
|
62
|
-
tools:
|
|
63
|
-
tools_strict:
|
|
64
|
-
hallucination_score_config:
|
|
62
|
+
tools: ToolsType | None = None,
|
|
63
|
+
tools_strict: bool | None = None,
|
|
64
|
+
hallucination_score_config: HallucinationScoreConfig | None = None,
|
|
65
65
|
) -> dict[str, list[ChatMessage]]:
|
|
66
66
|
"""
|
|
67
67
|
Invokes chat completion based on the provided messages and generation parameters.
|
|
@@ -123,12 +123,12 @@ class OpenAIChatGenerator(BaseOpenAIChatGenerator):
|
|
|
123
123
|
async def run_async(
|
|
124
124
|
self,
|
|
125
125
|
messages: list[ChatMessage],
|
|
126
|
-
streaming_callback:
|
|
127
|
-
generation_kwargs:
|
|
126
|
+
streaming_callback: StreamingCallbackT | None = None,
|
|
127
|
+
generation_kwargs: dict[str, Any] | None = None,
|
|
128
128
|
*,
|
|
129
|
-
tools:
|
|
130
|
-
tools_strict:
|
|
131
|
-
hallucination_score_config:
|
|
129
|
+
tools: ToolsType | None = None,
|
|
130
|
+
tools_strict: bool | None = None,
|
|
131
|
+
hallucination_score_config: HallucinationScoreConfig | None = None,
|
|
132
132
|
) -> dict[str, list[ChatMessage]]:
|
|
133
133
|
"""
|
|
134
134
|
Asynchronously invokes chat completion based on the provided messages and generation parameters.
|
|
@@ -8,13 +8,11 @@ from typing import TYPE_CHECKING
|
|
|
8
8
|
from lazy_imports import LazyImporter
|
|
9
9
|
|
|
10
10
|
_import_structure = {
|
|
11
|
-
"embedding_based_document_splitter": ["EmbeddingBasedDocumentSplitter"],
|
|
12
11
|
"md_header_level_inferrer": ["MarkdownHeaderLevelInferrer"],
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
if TYPE_CHECKING:
|
|
16
|
-
from .
|
|
17
|
-
from .md_header_level_inferrer import MarkdownHeaderLevelInferrer
|
|
15
|
+
from .md_header_level_inferrer import MarkdownHeaderLevelInferrer as MarkdownHeaderLevelInferrer
|
|
18
16
|
|
|
19
17
|
else:
|
|
20
18
|
sys.modules[__name__] = LazyImporter(name=__name__, module_file=__file__, import_structure=_import_structure)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
from haystack import DeserializationError, component, default_from_dict, default_to_dict, logging
|
|
8
8
|
from haystack.core.serialization import import_class_by_name
|
|
@@ -39,7 +39,7 @@ class ChatMessageRetriever:
|
|
|
39
39
|
```
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
|
-
def __init__(self, chat_message_store: ChatMessageStore, last_k:
|
|
42
|
+
def __init__(self, chat_message_store: ChatMessageStore, last_k: int | None = 10):
|
|
43
43
|
"""
|
|
44
44
|
Create the ChatMessageRetriever component.
|
|
45
45
|
|
|
@@ -94,8 +94,8 @@ class ChatMessageRetriever:
|
|
|
94
94
|
self,
|
|
95
95
|
chat_history_id: str,
|
|
96
96
|
*,
|
|
97
|
-
last_k:
|
|
98
|
-
current_messages:
|
|
97
|
+
last_k: int | None = None,
|
|
98
|
+
current_messages: list[ChatMessage] | None = None,
|
|
99
99
|
) -> dict[str, list[ChatMessage]]:
|
|
100
100
|
"""
|
|
101
101
|
Run the ChatMessageRetriever
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, Protocol
|
|
6
6
|
|
|
7
7
|
# Ellipsis are needed to define the Protocol but pylint complains. See https://github.com/pylint-dev/pylint/issues/9319.
|
|
8
8
|
# pylint: disable=unnecessary-ellipsis
|
|
@@ -16,7 +16,7 @@ class TextRetriever(Protocol):
|
|
|
16
16
|
store or other data source. They return a dictionary with a list of Document objects.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
def run(self, query: str, filters:
|
|
19
|
+
def run(self, query: str, filters: dict[str, Any] | None = None, top_k: int | None = None) -> dict[str, Any]:
|
|
20
20
|
"""
|
|
21
21
|
Retrieve documents that are relevant to the query.
|
|
22
22
|
|
|
@@ -42,7 +42,7 @@ class EmbeddingRetriever(Protocol):
|
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
44
|
def run(
|
|
45
|
-
self, query_embedding: list[float], filters:
|
|
45
|
+
self, query_embedding: list[float], filters: dict[str, Any] | None = None, top_k: int | None = None
|
|
46
46
|
) -> dict[str, Any]:
|
|
47
47
|
"""
|
|
48
48
|
Retrieve documents that are relevant to the query.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
from haystack import Document, component, default_from_dict, default_to_dict, logging
|
|
8
8
|
from haystack.components.generators.chat.types import ChatGenerator
|
|
@@ -49,9 +49,9 @@ class LLMSummarizer:
|
|
|
49
49
|
def __init__( # pylint: disable=too-many-positional-arguments
|
|
50
50
|
self,
|
|
51
51
|
chat_generator: ChatGenerator,
|
|
52
|
-
system_prompt:
|
|
52
|
+
system_prompt: str | None = "Rewrite this text in summarized form.",
|
|
53
53
|
summary_detail: float = 0,
|
|
54
|
-
minimum_chunk_size:
|
|
54
|
+
minimum_chunk_size: int | None = 500,
|
|
55
55
|
chunk_delimiter: str = ".",
|
|
56
56
|
summarize_recursively: bool = False,
|
|
57
57
|
split_overlap: int = 0,
|
|
@@ -274,10 +274,10 @@ class LLMSummarizer:
|
|
|
274
274
|
self,
|
|
275
275
|
*,
|
|
276
276
|
documents: list[Document],
|
|
277
|
-
detail:
|
|
278
|
-
minimum_chunk_size:
|
|
279
|
-
summarize_recursively:
|
|
280
|
-
system_prompt:
|
|
277
|
+
detail: float | None = None,
|
|
278
|
+
minimum_chunk_size: int | None = None,
|
|
279
|
+
summarize_recursively: bool | None = None,
|
|
280
|
+
system_prompt: str | None = None,
|
|
281
281
|
) -> dict[str, list[Document]]:
|
|
282
282
|
"""
|
|
283
283
|
Run the summarizer on a list of documents.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from dataclasses import replace
|
|
6
6
|
from datetime import datetime
|
|
7
|
-
from typing import TYPE_CHECKING, Any
|
|
7
|
+
from typing import TYPE_CHECKING, Any
|
|
8
8
|
|
|
9
9
|
from haystack import logging
|
|
10
10
|
from haystack.core.pipeline.utils import _deepcopy_with_exceptions
|
|
@@ -27,7 +27,7 @@ def _create_agent_snapshot(
|
|
|
27
27
|
component_visits: dict[str, int],
|
|
28
28
|
agent_breakpoint: AgentBreakpoint,
|
|
29
29
|
component_inputs: dict[str, Any],
|
|
30
|
-
tool_execution_decisions:
|
|
30
|
+
tool_execution_decisions: list["ToolExecutionDecision"] | None = None,
|
|
31
31
|
) -> AgentSnapshot:
|
|
32
32
|
"""
|
|
33
33
|
Create a snapshot of the agent's state.
|
|
@@ -59,10 +59,10 @@ def _create_agent_snapshot(
|
|
|
59
59
|
def _create_pipeline_snapshot_from_tool_invoker(
|
|
60
60
|
*,
|
|
61
61
|
execution_context: "_ExecutionContext",
|
|
62
|
-
tool_name:
|
|
63
|
-
agent_name:
|
|
64
|
-
break_point:
|
|
65
|
-
parent_snapshot:
|
|
62
|
+
tool_name: str | None = None,
|
|
63
|
+
agent_name: str | None = None,
|
|
64
|
+
break_point: AgentBreakpoint | None = None,
|
|
65
|
+
parent_snapshot: PipelineSnapshot | None = None,
|
|
66
66
|
) -> PipelineSnapshot:
|
|
67
67
|
"""
|
|
68
68
|
Create a pipeline snapshot when a tool invoker breakpoint is raised or an exception during execution occurs.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from datetime import datetime
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
from haystack.dataclasses.breakpoints import AgentBreakpoint
|
|
10
10
|
from haystack.dataclasses.breakpoints import AgentSnapshot as HaystackAgentSnapshot
|
|
@@ -14,7 +14,7 @@ from haystack_experimental.components.agents.human_in_the_loop.dataclasses impor
|
|
|
14
14
|
|
|
15
15
|
@dataclass
|
|
16
16
|
class AgentSnapshot(HaystackAgentSnapshot):
|
|
17
|
-
tool_execution_decisions:
|
|
17
|
+
tool_execution_decisions: list[ToolExecutionDecision] | None = None
|
|
18
18
|
|
|
19
19
|
def to_dict(self) -> dict[str, Any]:
|
|
20
20
|
"""
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Modified by deepset, 2025.
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE).
|
|
5
5
|
from dataclasses import dataclass
|
|
6
|
-
from typing import Literal
|
|
6
|
+
from typing import Literal
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
@dataclass
|
|
@@ -51,13 +51,13 @@ class OpenAIItem:
|
|
|
51
51
|
prompt: str
|
|
52
52
|
n_samples: int = 3
|
|
53
53
|
m: int = 6
|
|
54
|
-
seeds:
|
|
55
|
-
fields_to_erase:
|
|
54
|
+
seeds: list[int] | None = None
|
|
55
|
+
fields_to_erase: list[str] | None = None # evidence-based mode
|
|
56
56
|
mask_token: str = "[…]"
|
|
57
57
|
skeleton_policy: Literal["auto", "evidence_erase", "closed_book"] = "auto"
|
|
58
|
-
attempted:
|
|
59
|
-
answered_correctly:
|
|
60
|
-
meta:
|
|
58
|
+
attempted: bool | None = None
|
|
59
|
+
answered_correctly: bool | None = None
|
|
60
|
+
meta: dict | None = None
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
@dataclass
|
|
@@ -71,6 +71,6 @@ class ItemMetrics:
|
|
|
71
71
|
roh_bound: float
|
|
72
72
|
decision_answer: bool
|
|
73
73
|
rationale: str
|
|
74
|
-
attempted:
|
|
75
|
-
answered_correctly:
|
|
76
|
-
meta:
|
|
74
|
+
attempted: bool | None = None
|
|
75
|
+
answered_correctly: bool | None = None
|
|
76
|
+
meta: dict | None = None
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import json
|
|
6
6
|
import re
|
|
7
7
|
import time
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, Sequence
|
|
9
9
|
|
|
10
10
|
from haystack.components.generators.chat.openai import OpenAIChatGenerator
|
|
11
11
|
from openai.types.chat import ChatCompletionSystemMessageParam, ChatCompletionUserMessageParam
|
|
@@ -24,7 +24,7 @@ _DECISION_ALLOWED = ("answer", "refuse")
|
|
|
24
24
|
|
|
25
25
|
def _decision_messages_closed_book(
|
|
26
26
|
user_prompt: str,
|
|
27
|
-
) -> list[
|
|
27
|
+
) -> list[ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam]:
|
|
28
28
|
system = (
|
|
29
29
|
"You are a safety-critical QA assistant operating **without external evidence**. "
|
|
30
30
|
"Decide whether to answer based on your pretrained knowledge and the prompt alone. "
|
|
@@ -36,7 +36,7 @@ def _decision_messages_closed_book(
|
|
|
36
36
|
|
|
37
37
|
def _decision_messages_evidence(
|
|
38
38
|
user_prompt: str,
|
|
39
|
-
) -> list[
|
|
39
|
+
) -> list[ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam]:
|
|
40
40
|
system = (
|
|
41
41
|
"You are a safety-critical QA assistant. Decide whether to answer based on the "
|
|
42
42
|
"provided prompt and its internal evidence/context. If evidence is insufficient or "
|
|
@@ -160,7 +160,7 @@ class OpenAIPlanner:
|
|
|
160
160
|
backend: OpenAIChatGenerator,
|
|
161
161
|
temperature: float = 0.5,
|
|
162
162
|
max_tokens_decision: int = 8,
|
|
163
|
-
q_floor:
|
|
163
|
+
q_floor: float | None = None,
|
|
164
164
|
) -> None:
|
|
165
165
|
"""
|
|
166
166
|
Initialize OpenAIPlanner with given parameters.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE).
|
|
5
5
|
import random
|
|
6
6
|
import re
|
|
7
|
-
from typing import
|
|
7
|
+
from typing import Sequence
|
|
8
8
|
|
|
9
9
|
_ERASE_DEFAULT_FIELDS = ["Evidence", "Context", "Citations", "References", "Notes", "Passage", "Snippet"]
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ _NUMBER = re.compile(r"\b\d+(?:\.\d+)?\b")
|
|
|
14
14
|
_QUOTED = re.compile(r"([“\"'])(.+?)\1")
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def _skeletonize_prompt(text: str, fields_to_erase:
|
|
17
|
+
def _skeletonize_prompt(text: str, fields_to_erase: Sequence[str] | None = None, mask_token: str = "[…]") -> str:
|
|
18
18
|
fields = list(fields_to_erase) if fields_to_erase else list(_ERASE_DEFAULT_FIELDS)
|
|
19
19
|
out = text
|
|
20
20
|
for field in fields:
|
|
@@ -105,7 +105,7 @@ def _make_skeletons_evidence_erase(
|
|
|
105
105
|
text: str,
|
|
106
106
|
m: int,
|
|
107
107
|
seeds: Sequence[int],
|
|
108
|
-
fields_to_erase:
|
|
108
|
+
fields_to_erase: Sequence[str] | None = None,
|
|
109
109
|
mask_token: str = "[…]",
|
|
110
110
|
preserve_roles: bool = True,
|
|
111
111
|
) -> list[str]:
|
|
@@ -130,8 +130,8 @@ def _make_skeleton_ensemble_auto(
|
|
|
130
130
|
*,
|
|
131
131
|
text: str,
|
|
132
132
|
m: int = 6,
|
|
133
|
-
seeds:
|
|
134
|
-
fields_to_erase:
|
|
133
|
+
seeds: Sequence[int] | None = None,
|
|
134
|
+
fields_to_erase: Sequence[str] | None = None,
|
|
135
135
|
mask_token: str = "[…]",
|
|
136
136
|
skeleton_policy: str = "auto",
|
|
137
137
|
) -> list[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: haystack-experimental
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.0
|
|
4
4
|
Summary: Experimental components and features for the Haystack LLM framework.
|
|
5
5
|
Project-URL: CI: GitHub, https://github.com/deepset-ai/haystack-experimental/actions
|
|
6
6
|
Project-URL: GitHub: issues, https://github.com/deepset-ai/haystack-experimental/issues
|
|
@@ -17,13 +17,12 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
17
17
|
Classifier: Operating System :: OS Independent
|
|
18
18
|
Classifier: Programming Language :: Python
|
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
24
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
26
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.10
|
|
27
26
|
Requires-Dist: haystack-ai
|
|
28
27
|
Requires-Dist: rich
|
|
29
28
|
Description-Content-Type: text/markdown
|
|
@@ -73,7 +72,6 @@ that includes it. Once it reaches the end of its lifespan, the experiment will b
|
|
|
73
72
|
|
|
74
73
|
| Name | Type | Expected End Date | Dependencies | Cookbook | Discussion |
|
|
75
74
|
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|-------------------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
|
|
76
|
-
| [`EmbeddingBasedDocumentSplitter`][8] | EmbeddingBasedDocumentSplitter | August 2025 | None | None | [Discuss][7] |
|
|
77
75
|
| [`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] |
|
|
78
76
|
| [`MarkdownHeaderLevelInferrer`][15] | Preprocessor | January 2025 | None | None | [Discuss][16] |
|
|
79
77
|
| [`Agent`][17]; [Confirmation Policies][18]; [ConfirmationUIs][19]; [ConfirmationStrategies][20]; [`ConfirmationUIResult` and `ToolExecutionDecision`][21] [HITLBreakpointException][22] | Human in the Loop | December 2025 | rich | None | [Discuss][23] |
|
|
@@ -84,8 +82,6 @@ that includes it. Once it reaches the end of its lifespan, the experiment will b
|
|
|
84
82
|
[2]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/retrievers/chat_message_retriever.py
|
|
85
83
|
[3]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/writers/chat_message_writer.py
|
|
86
84
|
[4]: https://github.com/deepset-ai/haystack-experimental/discussions/75
|
|
87
|
-
[7]: https://github.com/deepset-ai/haystack-experimental/discussions/356
|
|
88
|
-
[8]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/preprocessors/embedding_based_document_splitter.py
|
|
89
85
|
[9]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/generators/chat/openai.py
|
|
90
86
|
[10]: https://github.com/deepset-ai/haystack-experimental/discussions/361
|
|
91
87
|
[15]: https://github.com/deepset-ai/haystack-experimental/blob/main/haystack_experimental/components/preprocessors/md_header_level_inferrer.py
|
|
@@ -111,10 +107,10 @@ that includes it. Once it reaches the end of its lifespan, the experiment will b
|
|
|
111
107
|
| `SuperComponent` | Simplify Pipeline development | 0.8.0 |
|
|
112
108
|
| `Pipeline` | Pipeline breakpoints for debugging | 0.12.0 |
|
|
113
109
|
| `ImageContent`; Image Converters; multimodal support in `OpenAIChatGenerator` and `AmazonBedrockChatGenerator`; `ChatPromptBuilder` refactoring; `SentenceTransformersDocumentImageEmbedder`; `LLMDocumentContentExtractor`; new `Routers` | Multimodality | 0.12.0 |
|
|
114
|
-
| `QueryExpander` | Query Expansion Component | 0.14.3
|
|
115
|
-
| `MultiQueryEmbeddingRetriever` | MultiQueryEmbeddingRetriever | 0.14.3
|
|
116
|
-
| `MultiQueryTextRetriever` | MultiQueryTextRetriever | 0.14.3
|
|
117
|
-
|
|
110
|
+
| `QueryExpander` | Query Expansion Component | 0.14.3 |
|
|
111
|
+
| `MultiQueryEmbeddingRetriever` | MultiQueryEmbeddingRetriever | 0.14.3 |
|
|
112
|
+
| `MultiQueryTextRetriever` | MultiQueryTextRetriever | 0.14.3 |
|
|
113
|
+
| `EmbeddingBasedDocumentSplitter` | Document Splitting | 0.15.2 |
|
|
118
114
|
|
|
119
115
|
### Discontinued experiments
|
|
120
116
|
|
|
@@ -1,48 +1,47 @@
|
|
|
1
1
|
haystack_experimental/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
2
2
|
haystack_experimental/chat_message_stores/__init__.py,sha256=zu1bbMQDv9xUbGadIKWrC8v-87w_Xxg6KQnTb6K0k-Q,240
|
|
3
|
-
haystack_experimental/chat_message_stores/in_memory.py,sha256=
|
|
4
|
-
haystack_experimental/chat_message_stores/types.py,sha256=
|
|
3
|
+
haystack_experimental/chat_message_stores/in_memory.py,sha256=Dw5N9l8qk-RONEVVJbJWjjDpZ5DUlHr5l_UMZlpVNVU,8672
|
|
4
|
+
haystack_experimental/chat_message_stores/types.py,sha256=BHpk36OesvAxMgu6iOOYt4gmqw_cIE4nFDVgiutCguA,2726
|
|
5
5
|
haystack_experimental/components/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
6
6
|
haystack_experimental/components/agents/__init__.py,sha256=Sxu9LxPpQ5cljgoTgUeNC0GY8CwUdiSy1JWkd_-RRJ4,414
|
|
7
|
-
haystack_experimental/components/agents/agent.py,sha256=
|
|
7
|
+
haystack_experimental/components/agents/agent.py,sha256=n76MmXq_P0TAuFxHwNe5FC1iBAIjKbs8xOoZioyaypY,45651
|
|
8
8
|
haystack_experimental/components/agents/human_in_the_loop/__init__.py,sha256=xLr1G9pNWMmCpKN9mbv6yqeFfwMcbZyaVfCkzlwMxhY,1674
|
|
9
|
-
haystack_experimental/components/agents/human_in_the_loop/breakpoint.py,sha256=
|
|
10
|
-
haystack_experimental/components/agents/human_in_the_loop/dataclasses.py,sha256=
|
|
11
|
-
haystack_experimental/components/agents/human_in_the_loop/errors.py,sha256=
|
|
9
|
+
haystack_experimental/components/agents/human_in_the_loop/breakpoint.py,sha256=K5rU61821uXjXkcXuXkN3p1_9Boq7FhJK1GOcAz7C0g,2939
|
|
10
|
+
haystack_experimental/components/agents/human_in_the_loop/dataclasses.py,sha256=qQG4yRlzzcNeBlWagnZpjeJKZ2v_n2_9V9W0ZvsgBn4,2538
|
|
11
|
+
haystack_experimental/components/agents/human_in_the_loop/errors.py,sha256=Mgn8HWx-3AqTFHu5ZY9PWWb_brMsO1xtdrOFzHzbXRI,1020
|
|
12
12
|
haystack_experimental/components/agents/human_in_the_loop/policies.py,sha256=nzblePptT4Fg2GFHa4_SDIK_d7hZ_70qPhkteZBRXWk,3172
|
|
13
|
-
haystack_experimental/components/agents/human_in_the_loop/strategies.py,sha256=
|
|
14
|
-
haystack_experimental/components/agents/human_in_the_loop/types.py,sha256=
|
|
15
|
-
haystack_experimental/components/agents/human_in_the_loop/user_interfaces.py,sha256=
|
|
13
|
+
haystack_experimental/components/agents/human_in_the_loop/strategies.py,sha256=b9oJgXJ805VMljm55i1S2j2wQ-2-bPxkn5oWG5Vx9RU,28608
|
|
14
|
+
haystack_experimental/components/agents/human_in_the_loop/types.py,sha256=Fu6LR67GOimGhzEgJOnpU4pb14zEfk1JtBrDFwTuLk8,4582
|
|
15
|
+
haystack_experimental/components/agents/human_in_the_loop/user_interfaces.py,sha256=LHHZc0JljvnzoQaNgFGiAoJyWDYFWeYFPE2khZ4z-x4,8694
|
|
16
16
|
haystack_experimental/components/embedders/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
17
17
|
haystack_experimental/components/embedders/types/__init__.py,sha256=HGR8aavwIEx7v-8nm5JxFIw47EWn7vAUmywhakTNDCo,182
|
|
18
18
|
haystack_experimental/components/embedders/types/protocol.py,sha256=nVMo2x_sFP9T_DN-q-_HKGrLRd3rj27m7ZLxtigY4UQ,1026
|
|
19
19
|
haystack_experimental/components/generators/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
20
20
|
haystack_experimental/components/generators/chat/__init__.py,sha256=LEKI1mMtltVbSiU40QgBfnWC-z3_660TWuV-cVHhdTw,465
|
|
21
|
-
haystack_experimental/components/generators/chat/openai.py,sha256=
|
|
22
|
-
haystack_experimental/components/preprocessors/__init__.py,sha256=
|
|
23
|
-
haystack_experimental/components/preprocessors/embedding_based_document_splitter.py,sha256=NLi9e-aVJkZEvwQVzeWduyvR74wlYRHe6ZviDBx2rTk,17604
|
|
21
|
+
haystack_experimental/components/generators/chat/openai.py,sha256=IqfnDop-H90zoiaTn7nwT98EYJRo2wBAolL7-Fgtutc,9815
|
|
22
|
+
haystack_experimental/components/preprocessors/__init__.py,sha256=Crqxbgw3E0uPZPLNQkDg4aBURFVp6fp_n1oTlLCfCRk,525
|
|
24
23
|
haystack_experimental/components/preprocessors/md_header_level_inferrer.py,sha256=vyJWAFN-uhBkb5nCuJm0p29H75gGeaomOlHolD-fj5Q,5604
|
|
25
24
|
haystack_experimental/components/retrievers/__init__.py,sha256=7NLOg-A7LmwxskDYebB_bDzawByCb7cXn67hVN_3e6I,245
|
|
26
|
-
haystack_experimental/components/retrievers/chat_message_retriever.py,sha256=
|
|
25
|
+
haystack_experimental/components/retrievers/chat_message_retriever.py,sha256=Dr9YAH0Miu399xoZ7SvCNjrt6kkfZIoPnQOB8uVJCTs,6027
|
|
27
26
|
haystack_experimental/components/retrievers/types/__init__.py,sha256=iOngs3gs5enY8y6AWGeyQANTB_9qpXQ0QHSFFDDeEGc,218
|
|
28
|
-
haystack_experimental/components/retrievers/types/protocol.py,sha256=
|
|
27
|
+
haystack_experimental/components/retrievers/types/protocol.py,sha256=kx9RFK66B863sK8JKoUtJsHTkc4q7f75taigOFOxR9Y,2353
|
|
29
28
|
haystack_experimental/components/summarizers/__init__.py,sha256=BqnfB0ZMb9ufYUjJ4qmmmRLPXa9FT8XKhMWW8G9Zg9Y,221
|
|
30
|
-
haystack_experimental/components/summarizers/llm_summarizer.py,sha256=
|
|
29
|
+
haystack_experimental/components/summarizers/llm_summarizer.py,sha256=ASvmmSCcyehvMLN5VcBVsz7leKWqW2I3LkxR54IMYuc,14364
|
|
31
30
|
haystack_experimental/components/writers/__init__.py,sha256=DNVIwIEUi6HKsGM5UcIUPjVH7P3I8Hzc8e4PO7tjoPM,235
|
|
32
31
|
haystack_experimental/components/writers/chat_message_writer.py,sha256=Mkv9nShsPFAw1PPC6cK-tyYmXjWydCOl62boPNr7KkU,4042
|
|
33
32
|
haystack_experimental/core/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
34
33
|
haystack_experimental/core/pipeline/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
35
|
-
haystack_experimental/core/pipeline/breakpoint.py,sha256=
|
|
34
|
+
haystack_experimental/core/pipeline/breakpoint.py,sha256=NcagwEJupIZ_Mp20YLmJyeqTZe8qwo6LfuB7OTXnlXk,5214
|
|
36
35
|
haystack_experimental/dataclasses/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
37
|
-
haystack_experimental/dataclasses/breakpoints.py,sha256=
|
|
36
|
+
haystack_experimental/dataclasses/breakpoints.py,sha256=JevVOYiUMAsdg0QmSGiF_6aPveO83q47U-v-8Vd4nd0,2082
|
|
38
37
|
haystack_experimental/utils/__init__.py,sha256=eHD7xrty2PCky_gG3ty19rpM4WfV32TyytM7gJODwl4,110
|
|
39
38
|
haystack_experimental/utils/hallucination_risk_calculator/__init__.py,sha256=kCd-qceud_T8P1XJHgRMaOnljyDjfFQ5UIdxEb5t6V0,219
|
|
40
39
|
haystack_experimental/utils/hallucination_risk_calculator/core_math.py,sha256=8XIa2gX1B7U400KutPgxfIUHrOggkBPAm9gIkwhF7UM,4079
|
|
41
|
-
haystack_experimental/utils/hallucination_risk_calculator/dataclasses.py,sha256=
|
|
42
|
-
haystack_experimental/utils/hallucination_risk_calculator/openai_planner.py,sha256
|
|
43
|
-
haystack_experimental/utils/hallucination_risk_calculator/skeletonization.py,sha256=
|
|
44
|
-
haystack_experimental-0.
|
|
45
|
-
haystack_experimental-0.
|
|
46
|
-
haystack_experimental-0.
|
|
47
|
-
haystack_experimental-0.
|
|
48
|
-
haystack_experimental-0.
|
|
40
|
+
haystack_experimental/utils/hallucination_risk_calculator/dataclasses.py,sha256=8HQL-ktwoog0WZlFz3-NQhhmVMjzMIrRjRoYuYXmorE,2284
|
|
41
|
+
haystack_experimental/utils/hallucination_risk_calculator/openai_planner.py,sha256=Vt0icGcrPtTRywh9L2YfwB62a7pDynrm5-qlKaLHLsA,11381
|
|
42
|
+
haystack_experimental/utils/hallucination_risk_calculator/skeletonization.py,sha256=KYdBDw5LcRtw8cmKW4aNGOKh3YrA17CPmcRE-FG6kSA,5466
|
|
43
|
+
haystack_experimental-0.16.0.dist-info/METADATA,sha256=C6Dzv_tSvCuvTNMBEgfvdX9nMiZ026jbgNU1AvzXx1w,17078
|
|
44
|
+
haystack_experimental-0.16.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
45
|
+
haystack_experimental-0.16.0.dist-info/licenses/LICENSE,sha256=93_5nS97uHxptHvK9E8BZgKxLGeIS-rBWT2swIv-X5Y,11368
|
|
46
|
+
haystack_experimental-0.16.0.dist-info/licenses/LICENSE-MIT.txt,sha256=knmLkIKj_6tTrTSVRg9Tq88Kww4UCPLt2I1RGXJv9sQ,1037
|
|
47
|
+
haystack_experimental-0.16.0.dist-info/RECORD,,
|