Home / File/ test_fake_chat_model.py — langchain Source File

test_fake_chat_model.py — langchain Source File

Architecture documentation for test_fake_chat_model.py, a python file in the langchain codebase. 9 imports, 0 dependents.

File python CoreAbstractions MessageSchema 9 imports 5 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  3060b45b_972c_0f85_6806_0f295df4d7ef["test_fake_chat_model.py"]
  436f77bc_653d_0edb_555c_c2679d5a59ac["itertools"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 436f77bc_653d_0edb_555c_c2679d5a59ac
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  8dfa0cac_d802_3ccd_f710_43a5e70da3a5["uuid"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 8dfa0cac_d802_3ccd_f710_43a5e70da3a5
  7e64d143_ea36_1c73_4897_1d0ae1757b5b["langchain_core.callbacks.base"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 7e64d143_ea36_1c73_4897_1d0ae1757b5b
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> d758344f_537f_649e_f467_b9d7442e86df
  ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> ac2a9b92_4484_491e_1b48_ec85e71e1d58
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 91721f45_4909_e489_8c1f_084f8bd87145
  28442c0b_15db_9749_e71f_8fb95692f0f9["tests.unit_tests.llms.fake_chat_model"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 28442c0b_15db_9749_e71f_8fb95692f0f9
  976459c4_64fe_1c12_ea56_0f244a6a8dbc["tests.unit_tests.stubs"]
  3060b45b_972c_0f85_6806_0f295df4d7ef --> 976459c4_64fe_1c12_ea56_0f244a6a8dbc
  style 3060b45b_972c_0f85_6806_0f295df4d7ef fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Tests for verifying that testing utility code works as expected."""

from itertools import cycle
from typing import Any
from uuid import UUID

from langchain_core.callbacks.base import AsyncCallbackHandler
from langchain_core.messages import AIMessage, AIMessageChunk, BaseMessage
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk
from typing_extensions import override

from tests.unit_tests.llms.fake_chat_model import GenericFakeChatModel
from tests.unit_tests.stubs import _AnyIdAIMessage, _AnyIdAIMessageChunk


def test_generic_fake_chat_model_invoke() -> None:
    # Will alternate between responding with hello and goodbye
    infinite_cycle = cycle([AIMessage(content="hello"), AIMessage(content="goodbye")])
    model = GenericFakeChatModel(messages=infinite_cycle)
    response = model.invoke("meow")
    assert response == _AnyIdAIMessage(content="hello")
    response = model.invoke("kitty")
    assert response == _AnyIdAIMessage(content="goodbye")
    response = model.invoke("meow")
    assert response == _AnyIdAIMessage(content="hello")


async def test_generic_fake_chat_model_ainvoke() -> None:
    # Will alternate between responding with hello and goodbye
    infinite_cycle = cycle([AIMessage(content="hello"), AIMessage(content="goodbye")])
    model = GenericFakeChatModel(messages=infinite_cycle)
    response = await model.ainvoke("meow")
    assert response == _AnyIdAIMessage(content="hello")
    response = await model.ainvoke("kitty")
    assert response == _AnyIdAIMessage(content="goodbye")
    response = await model.ainvoke("meow")
    assert response == _AnyIdAIMessage(content="hello")


async def test_generic_fake_chat_model_stream() -> None:
    """Test streaming."""
    infinite_cycle = cycle(
        [
            AIMessage(content="hello goodbye"),
        ],
    )
    model = GenericFakeChatModel(messages=infinite_cycle)
    chunks = [chunk async for chunk in model.astream("meow")]
    assert chunks == [
        _AnyIdAIMessageChunk(content="hello"),
        _AnyIdAIMessageChunk(content=" "),
        _AnyIdAIMessageChunk(content="goodbye", chunk_position="last"),
    ]

    chunks = list(model.stream("meow"))
    assert chunks == [
        _AnyIdAIMessageChunk(content="hello"),
        _AnyIdAIMessageChunk(content=" "),
        _AnyIdAIMessageChunk(content="goodbye", chunk_position="last"),
    ]
// ... (147 more lines)

Subdomains

Dependencies

  • itertools
  • langchain_core.callbacks.base
  • langchain_core.messages
  • langchain_core.outputs
  • tests.unit_tests.llms.fake_chat_model
  • tests.unit_tests.stubs
  • typing
  • typing_extensions
  • uuid

Frequently Asked Questions

What does test_fake_chat_model.py do?
test_fake_chat_model.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in test_fake_chat_model.py?
test_fake_chat_model.py defines 5 function(s): test_callback_handlers, test_generic_fake_chat_model_ainvoke, test_generic_fake_chat_model_astream_log, test_generic_fake_chat_model_invoke, test_generic_fake_chat_model_stream.
What does test_fake_chat_model.py depend on?
test_fake_chat_model.py imports 9 module(s): itertools, langchain_core.callbacks.base, langchain_core.messages, langchain_core.outputs, tests.unit_tests.llms.fake_chat_model, tests.unit_tests.stubs, typing, typing_extensions, and 1 more.
Where is test_fake_chat_model.py in the architecture?
test_fake_chat_model.py is located at libs/langchain/tests/unit_tests/llms/test_fake_chat_model.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/langchain/tests/unit_tests/llms).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free