mirror of
https://github.com/hwchase17/langchain
synced 2024-11-11 19:11:02 +00:00
74c7198906
resolves https://github.com/langchain-ai/langchain/issues/23911 When an AIMessageChunk is instantiated, we attempt to parse tool calls off of the tool_call_chunks. Here we add a special-case to this parsing, where `""` will be parsed as `{}`. This is a reaction to how Anthropic streams tool calls in the case where a function has no arguments: ``` {'id': 'toolu_01J8CgKcuUVrMqfTQWPYh64r', 'input': {}, 'name': 'magic_function', 'type': 'tool_use', 'index': 1} {'partial_json': '', 'type': 'tool_use', 'index': 1} ``` The `partial_json` does not accumulate to a valid json string-- most other providers tend to emit `"{}"` in this case.
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
"""Standard LangChain interface tests"""
|
|
|
|
from typing import Type
|
|
|
|
import pytest
|
|
from langchain_core.language_models import BaseChatModel
|
|
from langchain_standard_tests.integration_tests import ( # type: ignore[import-not-found]
|
|
ChatModelIntegrationTests, # type: ignore[import-not-found]
|
|
)
|
|
|
|
from langchain_groq import ChatGroq
|
|
|
|
|
|
class BaseTestGroq(ChatModelIntegrationTests):
|
|
@property
|
|
def chat_model_class(self) -> Type[BaseChatModel]:
|
|
return ChatGroq
|
|
|
|
@pytest.mark.xfail(reason="Not yet implemented.")
|
|
def test_tool_message_histories_list_content(self, model: BaseChatModel) -> None:
|
|
super().test_tool_message_histories_list_content(model)
|
|
|
|
|
|
class TestGroqMixtral(BaseTestGroq):
|
|
@property
|
|
def chat_model_params(self) -> dict:
|
|
return {
|
|
"temperature": 0,
|
|
}
|
|
|
|
@pytest.mark.xfail(
|
|
reason=("Fails with 'Failed to call a function. Please adjust your prompt.'")
|
|
)
|
|
def test_structured_output(self, model: BaseChatModel) -> None:
|
|
super().test_structured_output(model)
|
|
|
|
@pytest.mark.xfail(
|
|
reason=("May pass arguments: {'properties': {}, 'type': 'object'}")
|
|
)
|
|
def test_tool_calling_with_no_arguments(self, model: BaseChatModel) -> None:
|
|
super().test_tool_calling_with_no_arguments(model)
|
|
|
|
|
|
class TestGroqLlama(BaseTestGroq):
|
|
@property
|
|
def chat_model_params(self) -> dict:
|
|
return {
|
|
"model": "llama3-8b-8192",
|
|
"temperature": 0,
|
|
}
|
|
|
|
@pytest.mark.xfail(
|
|
reason=("Fails with 'Failed to call a function. Please adjust your prompt.'")
|
|
)
|
|
def test_tool_message_histories_string_content(self, model: BaseChatModel) -> None:
|
|
super().test_tool_message_histories_string_content(model)
|