mirror of
https://github.com/hwchase17/langchain
synced 2024-11-06 03:20:49 +00:00
f506b4cfd2
- **Description:** - This PR introduces a significant enhancement to the LangChain project by integrating a new chat model powered by the third-generation base large model, ChatGLM3, via the zhipuai API. - This advanced model supports functionalities like function calls, code interpretation, and intelligent Agent capabilities. - The additions include the chat model itself, comprehensive documentation in the form of Python notebook docs, and thorough testing with both unit and integrated tests. - **Dependencies:** This update relies on the ZhipuAI package as a key dependency. - **Twitter handle:** If this PR receives spotlight attention, we would be honored to receive a mention for our integration of the advanced ChatGLM3 model via the ZhipuAI API. Kindly tag us at @kaiwu. To ensure quality and standards, we have performed extensive linting and testing. Commands such as make format, make lint, and make test have been run from the root of the modified package to ensure compliance with LangChain's coding standards. TO DO: Continue refining and enhancing both the unit tests and integrated tests. --------- Co-authored-by: jing <jingguo92@gmail.com> Co-authored-by: hyy1987 <779003812@qq.com> Co-authored-by: jianchuanqi <qijianchuan@hotmail.com> Co-authored-by: lirq <whuclarence@gmail.com> Co-authored-by: whucalrence <81530213+whucalrence@users.noreply.github.com> Co-authored-by: Jing Guo <48378126+JaneCrystall@users.noreply.github.com>
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
"""Test Alibaba Tongyi Chat Model."""
|
|
|
|
from langchain_core.callbacks import CallbackManager
|
|
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
|
|
from langchain_core.outputs import ChatGeneration, LLMResult
|
|
|
|
from langchain_community.chat_models.zhipuai import ChatZhipuAI
|
|
from tests.unit_tests.callbacks.fake_callback_handler import FakeCallbackHandler
|
|
|
|
|
|
def test_default_call() -> None:
|
|
"""Test default model call."""
|
|
chat = ChatZhipuAI()
|
|
response = chat(messages=[HumanMessage(content="Hello")])
|
|
assert isinstance(response, BaseMessage)
|
|
assert isinstance(response.content, str)
|
|
|
|
|
|
def test_model() -> None:
|
|
"""Test model kwarg works."""
|
|
chat = ChatZhipuAI(model="chatglm_turbo")
|
|
response = chat(messages=[HumanMessage(content="Hello")])
|
|
assert isinstance(response, BaseMessage)
|
|
assert isinstance(response.content, str)
|
|
|
|
|
|
def test_multiple_history() -> None:
|
|
"""Tests multiple history works."""
|
|
chat = ChatZhipuAI()
|
|
|
|
response = chat(
|
|
messages=[
|
|
HumanMessage(content="Hello."),
|
|
AIMessage(content="Hello!"),
|
|
HumanMessage(content="How are you doing?"),
|
|
]
|
|
)
|
|
assert isinstance(response, BaseMessage)
|
|
assert isinstance(response.content, str)
|
|
|
|
|
|
def test_stream() -> None:
|
|
"""Test that stream works."""
|
|
chat = ChatZhipuAI(streaming=True)
|
|
callback_handler = FakeCallbackHandler()
|
|
callback_manager = CallbackManager([callback_handler])
|
|
response = chat(
|
|
messages=[
|
|
HumanMessage(content="Hello."),
|
|
AIMessage(content="Hello!"),
|
|
HumanMessage(content="Who are you?"),
|
|
],
|
|
stream=True,
|
|
callbacks=callback_manager,
|
|
)
|
|
assert callback_handler.llm_streams > 0
|
|
assert isinstance(response.content, str)
|
|
|
|
|
|
def test_multiple_messages() -> None:
|
|
"""Tests multiple messages works."""
|
|
chat = ChatZhipuAI()
|
|
message = HumanMessage(content="Hi, how are you.")
|
|
response = chat.generate([[message], [message]])
|
|
|
|
assert isinstance(response, LLMResult)
|
|
assert len(response.generations) == 2
|
|
for generations in response.generations:
|
|
assert len(generations) == 1
|
|
for generation in generations:
|
|
assert isinstance(generation, ChatGeneration)
|
|
assert isinstance(generation.text, str)
|
|
assert generation.text == generation.message.content
|