mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
fix(mistralai): handle null content in tool call responses (#34268)
This commit is contained in:
@@ -148,7 +148,8 @@ def _convert_mistral_chat_message_to_message(
|
||||
if role != "assistant":
|
||||
msg = f"Expected role to be 'assistant', got {role}"
|
||||
raise ValueError(msg)
|
||||
content = cast("str", _message["content"])
|
||||
# Mistral returns None for tool invocations
|
||||
content = _message.get("content", "") or ""
|
||||
|
||||
additional_kwargs: dict = {}
|
||||
tool_calls = []
|
||||
|
||||
@@ -238,6 +238,58 @@ def test__convert_dict_to_message_tool_call() -> None:
|
||||
assert _convert_message_to_mistral_chat_message(expected_output) == message
|
||||
|
||||
|
||||
def test__convert_dict_to_message_tool_call_with_null_content() -> None:
|
||||
raw_tool_call = {
|
||||
"id": "ssAbar4Dr",
|
||||
"function": {
|
||||
"arguments": '{"name": "Sally", "hair_color": "green"}',
|
||||
"name": "GenerateUsername",
|
||||
},
|
||||
}
|
||||
message = {"role": "assistant", "content": None, "tool_calls": [raw_tool_call]}
|
||||
result = _convert_mistral_chat_message_to_message(message)
|
||||
expected_output = AIMessage(
|
||||
content="",
|
||||
additional_kwargs={"tool_calls": [raw_tool_call]},
|
||||
tool_calls=[
|
||||
ToolCall(
|
||||
name="GenerateUsername",
|
||||
args={"name": "Sally", "hair_color": "green"},
|
||||
id="ssAbar4Dr",
|
||||
type="tool_call",
|
||||
)
|
||||
],
|
||||
response_metadata={"model_provider": "mistralai"},
|
||||
)
|
||||
assert result == expected_output
|
||||
|
||||
|
||||
def test__convert_dict_to_message_with_missing_content() -> None:
|
||||
raw_tool_call = {
|
||||
"id": "ssAbar4Dr",
|
||||
"function": {
|
||||
"arguments": '{"query": "test search"}',
|
||||
"name": "search",
|
||||
},
|
||||
}
|
||||
message = {"role": "assistant", "tool_calls": [raw_tool_call]}
|
||||
result = _convert_mistral_chat_message_to_message(message)
|
||||
expected_output = AIMessage(
|
||||
content="",
|
||||
additional_kwargs={"tool_calls": [raw_tool_call]},
|
||||
tool_calls=[
|
||||
ToolCall(
|
||||
name="search",
|
||||
args={"query": "test search"},
|
||||
id="ssAbar4Dr",
|
||||
type="tool_call",
|
||||
)
|
||||
],
|
||||
response_metadata={"model_provider": "mistralai"},
|
||||
)
|
||||
assert result == expected_output
|
||||
|
||||
|
||||
def test_custom_token_counting() -> None:
|
||||
def token_encoder(text: str) -> list[int]:
|
||||
return [1, 2, 3]
|
||||
|
||||
Reference in New Issue
Block a user