mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-02 01:23:07 +00:00
fix issue with streaming tool calls
This commit is contained in:
parent
e3febdd2ef
commit
929e9a56e9
@ -499,7 +499,10 @@ def _convert_to_message_v1(message: MessageLikeRepresentation) -> MessageV1:
|
|||||||
ValueError: if the message dict does not contain the required keys.
|
ValueError: if the message dict does not contain the required keys.
|
||||||
"""
|
"""
|
||||||
if isinstance(message, MessageV1Types):
|
if isinstance(message, MessageV1Types):
|
||||||
message_ = message
|
if isinstance(message, AIMessageChunkV1):
|
||||||
|
message_ = message.to_message()
|
||||||
|
else:
|
||||||
|
message_ = message
|
||||||
elif isinstance(message, str):
|
elif isinstance(message, str):
|
||||||
message_ = _create_message_from_message_type_v1("human", message)
|
message_ = _create_message_from_message_type_v1("human", message)
|
||||||
elif isinstance(message, Sequence) and len(message) == 2:
|
elif isinstance(message, Sequence) and len(message) == 2:
|
||||||
|
@ -34,6 +34,7 @@ from langchain_core.messages.content_blocks import KNOWN_BLOCK_TYPES
|
|||||||
from langchain_core.messages.tool import invalid_tool_call as create_invalid_tool_call
|
from langchain_core.messages.tool import invalid_tool_call as create_invalid_tool_call
|
||||||
from langchain_core.messages.tool import tool_call as create_tool_call
|
from langchain_core.messages.tool import tool_call as create_tool_call
|
||||||
from langchain_core.messages.tool import tool_call_chunk as create_tool_call_chunk
|
from langchain_core.messages.tool import tool_call_chunk as create_tool_call_chunk
|
||||||
|
from langchain_core.messages.v1 import AIMessage as AIMessageV1
|
||||||
from langchain_core.messages.v1 import AIMessageChunk as AIMessageChunkV1
|
from langchain_core.messages.v1 import AIMessageChunk as AIMessageChunkV1
|
||||||
from langchain_core.utils._merge import merge_lists
|
from langchain_core.utils._merge import merge_lists
|
||||||
|
|
||||||
@ -197,7 +198,7 @@ def test_message_chunks() -> None:
|
|||||||
assert (meaningful_id + default_id).id == "msg_def456"
|
assert (meaningful_id + default_id).id == "msg_def456"
|
||||||
|
|
||||||
|
|
||||||
def test_message_chunks_v2() -> None:
|
def test_message_chunks_v1() -> None:
|
||||||
left = AIMessageChunkV1("foo ", id="abc")
|
left = AIMessageChunkV1("foo ", id="abc")
|
||||||
right = AIMessageChunkV1("bar")
|
right = AIMessageChunkV1("bar")
|
||||||
expected = AIMessageChunkV1("foo bar", id="abc")
|
expected = AIMessageChunkV1("foo bar", id="abc")
|
||||||
@ -230,7 +231,19 @@ def test_message_chunks_v2() -> None:
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
assert one + two + three == expected
|
result = one + two + three
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
assert result.to_message() == AIMessageV1(
|
||||||
|
content=[
|
||||||
|
{
|
||||||
|
"name": "tool1",
|
||||||
|
"args": {"arg1": "value}"},
|
||||||
|
"id": "1",
|
||||||
|
"type": "tool_call",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
AIMessageChunkV1(
|
AIMessageChunkV1(
|
||||||
@ -1326,6 +1339,7 @@ def test_known_block_types() -> None:
|
|||||||
"text",
|
"text",
|
||||||
"text-plain",
|
"text-plain",
|
||||||
"tool_call",
|
"tool_call",
|
||||||
|
"invalid_tool_call",
|
||||||
"reasoning",
|
"reasoning",
|
||||||
"non_standard",
|
"non_standard",
|
||||||
"image",
|
"image",
|
||||||
|
Loading…
Reference in New Issue
Block a user