Skip to content

Commit ea36026

Browse files
anakin87dfokina
andauthored
feat!: new ChatMessage (#8640)
* draft * del HF token in tests * adaptations * progress * fix type * import sorting * more control on deserialization * release note * improvements * support name field * fix chatpromptbuilder test * Update chat_message.py --------- Co-authored-by: Daria Fokina <[email protected]>
1 parent a5b57f4 commit ea36026

File tree

12 files changed

+560
-157
lines changed

12 files changed

+560
-157
lines changed

haystack/components/builders/chat_prompt_builder.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from jinja2.sandbox import SandboxedEnvironment
1010

1111
from haystack import component, default_from_dict, default_to_dict, logging
12-
from haystack.dataclasses.chat_message import ChatMessage, ChatRole
12+
from haystack.dataclasses.chat_message import ChatMessage, ChatRole, TextContent
1313

1414
logger = logging.getLogger(__name__)
1515

@@ -197,10 +197,10 @@ def run(
197197
if message.text is None:
198198
raise ValueError(f"The provided ChatMessage has no text. ChatMessage: {message}")
199199
compiled_template = self._env.from_string(message.text)
200-
rendered_content = compiled_template.render(template_variables_combined)
200+
rendered_text = compiled_template.render(template_variables_combined)
201201
# deep copy the message to avoid modifying the original message
202202
rendered_message: ChatMessage = deepcopy(message)
203-
rendered_message.content = rendered_content
203+
rendered_message._content = [TextContent(text=rendered_text)]
204204
processed_messages.append(rendered_message)
205205
else:
206206
processed_messages.append(message)

haystack/components/generators/chat/hugging_face_api.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@ def _convert_message_to_hfapi_format(message: ChatMessage) -> Dict[str, str]:
2525
:returns: A dictionary with the following keys:
2626
- `role`
2727
- `content`
28-
- `name` (optional)
2928
"""
30-
formatted_msg = {"role": message.role.value, "content": message.content}
31-
if message.name:
32-
formatted_msg["name"] = message.name
33-
34-
return formatted_msg
29+
return {"role": message.role.value, "content": message.text or ""}
3530

3631

3732
@component

haystack/components/generators/openai_utils.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,11 @@ def _convert_message_to_openai_format(message: ChatMessage) -> Dict[str, str]:
1313
1414
See the [API reference](https://platform.openai.com/docs/api-reference/chat/create) for details.
1515
16-
:returns: A dictionary with the following key:
16+
:returns: A dictionary with the following keys:
1717
- `role`
1818
- `content`
19-
- `name` (optional)
2019
"""
2120
if message.text is None:
2221
raise ValueError(f"The provided ChatMessage has no text. ChatMessage: {message}")
2322

24-
openai_msg = {"role": message.role.value, "content": message.text}
25-
if message.name:
26-
openai_msg["name"] = message.name
27-
28-
return openai_msg
23+
return {"role": message.role.value, "content": message.text}

haystack/dataclasses/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from haystack.dataclasses.answer import Answer, ExtractedAnswer, GeneratedAnswer
66
from haystack.dataclasses.byte_stream import ByteStream
7-
from haystack.dataclasses.chat_message import ChatMessage, ChatRole
7+
from haystack.dataclasses.chat_message import ChatMessage, ChatRole, TextContent, ToolCall, ToolCallResult
88
from haystack.dataclasses.document import Document
99
from haystack.dataclasses.sparse_embedding import SparseEmbedding
1010
from haystack.dataclasses.streaming_chunk import StreamingChunk
@@ -17,6 +17,9 @@
1717
"ByteStream",
1818
"ChatMessage",
1919
"ChatRole",
20+
"ToolCall",
21+
"ToolCallResult",
22+
"TextContent",
2023
"StreamingChunk",
2124
"SparseEmbedding",
2225
]

0 commit comments

Comments
 (0)