feat(llm): migrate model calls to LangChain ChatOpenAI
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import asyncio
|
||||
from contextlib import aclosing
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock
|
||||
from unittest.mock import AsyncMock, Mock
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -69,16 +69,16 @@ async def test_timeout_covers_whole_attempt_and_retries_are_bounded(stream):
|
||||
async def generate(self):
|
||||
await asyncio.Future()
|
||||
yield None
|
||||
async def close(self): self.closed = True
|
||||
async def create(**kwargs):
|
||||
if stream:
|
||||
response = HangingResponse()
|
||||
responses.append(response)
|
||||
return response
|
||||
async def aclose(self): self.closed = True
|
||||
async def invoke(*args, **kwargs):
|
||||
await asyncio.Future()
|
||||
def create_stream(*args, **kwargs):
|
||||
response = HangingResponse()
|
||||
responses.append(response)
|
||||
return response
|
||||
llm = OpenAILLMService(model='m', api_key='audit', timeout_seconds=0.01, max_retries=2)
|
||||
call = AsyncMock(side_effect=create)
|
||||
llm._client = SimpleNamespace(chat=SimpleNamespace(completions=SimpleNamespace(create=call)))
|
||||
call = Mock(side_effect=create_stream) if stream else AsyncMock(side_effect=invoke)
|
||||
llm._client = SimpleNamespace(astream=call) if stream else SimpleNamespace(ainvoke=call)
|
||||
llm._retry_delay = AsyncMock()
|
||||
# 先加载 SDK 错误类;外层看门狗不测模块惰性导入耗时。
|
||||
assert llm._retryable(TimeoutError())
|
||||
@@ -89,6 +89,6 @@ async def test_timeout_covers_whole_attempt_and_retries_are_bounded(stream):
|
||||
async for _ in llm.stream_tokens('system', 'user'): pass
|
||||
else:
|
||||
await llm.complete('system', 'user')
|
||||
assert call.await_count == 3
|
||||
assert call.call_count == 3
|
||||
assert llm._retry_delay.await_count == 2
|
||||
assert all(response.closed for response in responses)
|
||||
|
||||
Reference in New Issue
Block a user