Skip to content

Commit 5aa454b

Browse files
authored
chore: update ChatGenerators with deserialize_tools_or_toolset_inplace (#1623)
* chore: update ChatGenerators with deserialize_tools_or_toolset_inplace * fix type * Trigger Build * ollama lint
1 parent c56f798 commit 5aa454b

8 files changed

Lines changed: 67 additions & 16 deletions

File tree

  • integrations
    • amazon_bedrock/src/haystack_integrations/components/generators/amazon_bedrock/chat
    • anthropic/src/haystack_integrations/components/generators/anthropic/chat
    • cohere/src/haystack_integrations/components/generators/cohere/chat
    • google_ai/src/haystack_integrations/components/generators/google_ai/chat
    • google_vertex/src/haystack_integrations/components/generators/google_vertex/chat
    • llama_cpp/src/haystack_integrations/components/generators/llama_cpp/chat
    • ollama/src/haystack_integrations/components/generators/ollama/chat

integrations/amazon_bedrock/src/haystack_integrations/components/generators/amazon_bedrock/chat/chat_generator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
from botocore.exceptions import ClientError
66
from haystack import component, default_from_dict, default_to_dict, logging
77
from haystack.dataclasses import ChatMessage, StreamingCallbackT, select_streaming_callback
8-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
8+
from haystack.tools import Tool, _check_duplicate_tool_names
99
from haystack.utils.auth import Secret, deserialize_secrets_inplace
1010
from haystack.utils.callable_serialization import deserialize_callable, serialize_callable
1111

12+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
13+
try:
14+
from haystack.tools import deserialize_tools_or_toolset_inplace
15+
except ImportError:
16+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
17+
1218
from haystack_integrations.common.amazon_bedrock.errors import (
1319
AmazonBedrockConfigurationError,
1420
AmazonBedrockInferenceError,
@@ -287,7 +293,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "AmazonBedrockChatGenerator":
287293
data["init_parameters"],
288294
["aws_access_key_id", "aws_secret_access_key", "aws_session_token", "aws_region_name", "aws_profile_name"],
289295
)
290-
deserialize_tools_inplace(data["init_parameters"], key="tools")
296+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
291297
return default_from_dict(cls, data)
292298

293299
def _prepare_request_params(

integrations/anthropic/src/haystack_integrations/components/generators/anthropic/chat/chat_generator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@
1212
ToolCallResult,
1313
select_streaming_callback,
1414
)
15-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
15+
from haystack.tools import Tool, _check_duplicate_tool_names
1616
from haystack.utils import Secret, deserialize_callable, deserialize_secrets_inplace, serialize_callable
1717

18+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
19+
try:
20+
from haystack.tools import deserialize_tools_or_toolset_inplace
21+
except ImportError:
22+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
23+
1824
from anthropic import Anthropic, AsyncAnthropic
1925

2026
logger = logging.getLogger(__name__)
@@ -256,7 +262,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "AnthropicChatGenerator":
256262
The deserialized component instance.
257263
"""
258264
deserialize_secrets_inplace(data["init_parameters"], keys=["api_key"])
259-
deserialize_tools_inplace(data["init_parameters"], key="tools")
265+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
260266
init_params = data.get("init_parameters", {})
261267
serialized_callback_handler = init_params.get("streaming_callback")
262268
if serialized_callback_handler:

integrations/anthropic/src/haystack_integrations/components/generators/anthropic/chat/vertex_chat_generator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33

44
from haystack import component, default_from_dict, default_to_dict, logging
55
from haystack.dataclasses import StreamingChunk
6-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
6+
from haystack.tools import Tool, _check_duplicate_tool_names
77
from haystack.utils import deserialize_callable, serialize_callable
88

9+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
10+
try:
11+
from haystack.tools import deserialize_tools_or_toolset_inplace
12+
except ImportError:
13+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
14+
915
from anthropic import AnthropicVertex
1016

1117
from .chat_generator import AnthropicChatGenerator
@@ -136,7 +142,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "AnthropicVertexChatGenerator":
136142
:returns:
137143
The deserialized component instance.
138144
"""
139-
deserialize_tools_inplace(data["init_parameters"], key="tools")
145+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
140146
init_params = data.get("init_parameters", {})
141147
serialized_callback_handler = init_params.get("streaming_callback")
142148
if serialized_callback_handler:

integrations/cohere/src/haystack_integrations/components/generators/cohere/chat/chat_generator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
from haystack import component, default_from_dict, default_to_dict, logging
55
from haystack.dataclasses import ChatMessage, StreamingChunk, ToolCall
66
from haystack.lazy_imports import LazyImport
7-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
7+
from haystack.tools import Tool, _check_duplicate_tool_names
88
from haystack.utils import Secret, deserialize_secrets_inplace
99
from haystack.utils.callable_serialization import deserialize_callable, serialize_callable
1010

11+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
12+
try:
13+
from haystack.tools import deserialize_tools_or_toolset_inplace
14+
except ImportError:
15+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
16+
1117
from cohere import ChatResponse
1218

1319
with LazyImport(message="Run 'pip install cohere'") as cohere_import:
@@ -374,7 +380,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "CohereChatGenerator":
374380
"""
375381
init_params = data.get("init_parameters", {})
376382
deserialize_secrets_inplace(init_params, ["api_key"])
377-
deserialize_tools_inplace(init_params, key="tools")
383+
deserialize_tools_or_toolset_inplace(init_params, key="tools")
378384
serialized_callback_handler = init_params.get("streaming_callback")
379385
if serialized_callback_handler:
380386
data["init_parameters"]["streaming_callback"] = deserialize_callable(serialized_callback_handler)

integrations/google_ai/src/haystack_integrations/components/generators/google_ai/chat/gemini.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@
1818
from haystack.core.serialization import default_from_dict, default_to_dict
1919
from haystack.dataclasses import AsyncStreamingCallbackT, StreamingCallbackT, StreamingChunk, select_streaming_callback
2020
from haystack.dataclasses.chat_message import ChatMessage, ChatRole, ToolCall
21-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
21+
from haystack.tools import Tool, _check_duplicate_tool_names
2222
from haystack.utils import Secret, deserialize_callable, deserialize_secrets_inplace, serialize_callable
2323

24+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
25+
try:
26+
from haystack.tools import deserialize_tools_or_toolset_inplace
27+
except ImportError:
28+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
29+
2430
logger = logging.getLogger(__name__)
2531

2632

@@ -217,7 +223,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "GoogleAIGeminiChatGenerator":
217223
Deserialized component.
218224
"""
219225
deserialize_secrets_inplace(data["init_parameters"], keys=["api_key"])
220-
deserialize_tools_inplace(data["init_parameters"], key="tools")
226+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
221227
if (generation_config := data["init_parameters"].get("generation_config")) is not None:
222228
data["init_parameters"]["generation_config"] = GenerationConfig(**generation_config)
223229
if (safety_settings := data["init_parameters"].get("safety_settings")) is not None:

integrations/google_vertex/src/haystack_integrations/components/generators/google_vertex/chat/gemini.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,15 @@
66
from haystack.core.serialization import default_from_dict, default_to_dict
77
from haystack.dataclasses import StreamingChunk
88
from haystack.dataclasses.chat_message import ChatMessage, ChatRole, ToolCall
9-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
9+
from haystack.tools import Tool, _check_duplicate_tool_names
1010
from haystack.utils import deserialize_callable, serialize_callable
11+
12+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
13+
try:
14+
from haystack.tools import deserialize_tools_or_toolset_inplace
15+
except ImportError:
16+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
17+
1118
from vertexai import init as vertexai_init
1219
from vertexai.generative_models import (
1320
Content,
@@ -258,7 +265,7 @@ def _tool_config_from_dict(config_dict: Dict[str, Any]) -> ToolConfig:
258265
)
259266
)
260267

261-
deserialize_tools_inplace(data["init_parameters"], key="tools")
268+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
262269
if (generation_config := data["init_parameters"].get("generation_config")) is not None:
263270
data["init_parameters"]["generation_config"] = GenerationConfig.from_dict(generation_config)
264271
if (tool_config := data["init_parameters"].get("tool_config")) is not None:

integrations/llama_cpp/src/haystack_integrations/components/generators/llama_cpp/chat/chat_generator.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33

44
from haystack import component, default_from_dict, default_to_dict, logging
55
from haystack.dataclasses import ChatMessage, ToolCall
6-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
6+
from haystack.tools import Tool, _check_duplicate_tool_names
7+
8+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
9+
try:
10+
from haystack.tools import deserialize_tools_or_toolset_inplace
11+
except ImportError:
12+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
13+
714
from llama_cpp import ChatCompletionResponseChoice, CreateChatCompletionResponse, Llama
815
from llama_cpp.llama_tokenizer import LlamaHFTokenizer
916

@@ -161,7 +168,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "LlamaCppChatGenerator":
161168
:returns:
162169
Deserialized component.
163170
"""
164-
deserialize_tools_inplace(data["init_parameters"], key="tools")
171+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
165172
return default_from_dict(cls, data)
166173

167174
@component.output_types(replies=List[ChatMessage])

integrations/ollama/src/haystack_integrations/components/generators/ollama/chat/chat_generator.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@
22

33
from haystack import component, default_from_dict, default_to_dict
44
from haystack.dataclasses import ChatMessage, StreamingChunk, ToolCall
5-
from haystack.tools import Tool, _check_duplicate_tool_names, deserialize_tools_inplace
5+
from haystack.tools import Tool, _check_duplicate_tool_names
66
from haystack.utils.callable_serialization import deserialize_callable, serialize_callable
7+
8+
# Compatibility with Haystack 2.12.0 and 2.13.0 - remove after 2.13.0 is released
9+
try:
10+
from haystack.tools import deserialize_tools_or_toolset_inplace
11+
except ImportError:
12+
from haystack.tools import deserialize_tools_inplace as deserialize_tools_or_toolset_inplace
13+
714
from pydantic.json_schema import JsonSchemaValue
815

916
from ollama import ChatResponse, Client
@@ -230,7 +237,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "OllamaChatGenerator":
230237
:returns:
231238
Deserialized component.
232239
"""
233-
deserialize_tools_inplace(data["init_parameters"], key="tools")
240+
deserialize_tools_or_toolset_inplace(data["init_parameters"], key="tools")
234241

235242
init_params = data.get("init_parameters", {})
236243

0 commit comments

Comments
 (0)