Skip to content

Commit 427d2d6

Browse files
fix(core): implement sleep delay in FakeMessagesListChatModel _generate (#32014)
implement sleep delay in FakeMessagesListChatModel._generate so the sleep parameter is respected, matching the documented behavior. This adds artificial latency between responses for testing purposes. Issue: closes [#31974](#31974) following [docs](https://python.langchain.com/api_reference/core/language_models/langchain_core.language_models.fake_chat_models.FakeMessagesListChatModel.html#langchain_core.language_models.fake_chat_models.FakeMessagesListChatModel.sleep) Dependencies: none Twitter handle: [@siddarthreddyg2](https://x.com/siddarthreddyg2) --------- Signed-off-by: Siddarthreddygsr <[email protected]>
1 parent 50a12a7 commit 427d2d6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

libs/core/langchain_core/language_models/fake_chat_models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ def _generate(
3636
run_manager: Optional[CallbackManagerForLLMRun] = None,
3737
**kwargs: Any,
3838
) -> ChatResult:
39+
if self.sleep is not None:
40+
time.sleep(self.sleep)
3941
response = self.responses[self.i]
4042
if self.i < len(self.responses) - 1:
4143
self.i += 1

libs/core/tests/unit_tests/fake/test_fake_chat_model.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Tests for verifying that testing utility code works as expected."""
22

3+
import time
34
from itertools import cycle
45
from typing import Any, Optional, Union
56
from uuid import UUID
@@ -9,10 +10,11 @@
910
from langchain_core.callbacks.base import AsyncCallbackHandler
1011
from langchain_core.language_models import (
1112
FakeListChatModel,
13+
FakeMessagesListChatModel,
1214
GenericFakeChatModel,
1315
ParrotFakeChatModel,
1416
)
15-
from langchain_core.messages import AIMessage, AIMessageChunk, BaseMessage
17+
from langchain_core.messages import AIMessage, AIMessageChunk, BaseMessage, HumanMessage
1618
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk
1719
from tests.unit_tests.stubs import (
1820
_any_id_ai_message,
@@ -230,3 +232,18 @@ def test_fake_list_chat_model_batch() -> None:
230232
fake = FakeListChatModel(responses=["a", "b", "c"])
231233
resp = fake.batch(["1", "2", "3"])
232234
assert resp == expected
235+
236+
237+
def test_fake_messages_list_chat_model_sleep_delay() -> None:
238+
sleep_time = 0.1
239+
model = FakeMessagesListChatModel(
240+
responses=[AIMessage(content="A"), AIMessage(content="B")],
241+
sleep=sleep_time,
242+
)
243+
messages = [HumanMessage(content="C")]
244+
245+
start = time.time()
246+
model.invoke(messages)
247+
elapsed = time.time() - start
248+
249+
assert elapsed >= sleep_time

0 commit comments

Comments
 (0)