22 lines
864 B
Python
22 lines
864 B
Python
from pydantic import BaseModel
|
|
from deep_research.backends.base import AgentBackend
|
|
|
|
|
|
class MockBackend(AgentBackend):
|
|
"""테스트 더블. label prefix -> 응답객체(또는 None) 매핑. 네트워크·subprocess 0.
|
|
|
|
responses 의 키는 label prefix. 가장 먼저 매칭되는 prefix 의 값을 반환.
|
|
값이 콜러블이면 (prompt, label) 로 호출해 동적 응답 가능."""
|
|
|
|
def __init__(self, responses: dict, default=None):
|
|
self.responses = responses
|
|
self.default = default
|
|
self.calls: list[str] = []
|
|
|
|
async def run_agent(self, prompt: str, schema: type[BaseModel], *, label: str):
|
|
self.calls.append(label)
|
|
for prefix, resp in self.responses.items():
|
|
if label.startswith(prefix):
|
|
return resp(prompt, label) if callable(resp) else resp
|
|
return self.default
|