Files
Mutual_Fund/service/customer_agent/runtime.py

68 lines
1.8 KiB
Python

"""Dependency assembly for the anonymous customer-service Agent."""
from __future__ import annotations
from types import SimpleNamespace
from agent.customer_agent.context import RedisConversationContext
from agent.customer_agent.session import AnonymousSessionService
from rag.embedding import embed_texts
from rag.generation import generate_answer
from rag.intent import intent_recognize
from rag.retrieve import rag_retrieve
from service.customer_agent.chat import AnonymousCustomerAgent
def build_anonymous_runtime(
*,
redis,
milvus_client,
llm_client,
config_getter,
audit_writer,
):
session_service = AnonymousSessionService(
redis, config_getter=config_getter
)
context = RedisConversationContext(
redis, config_getter=config_getter
)
async def retrieve(query, customer_id):
return await rag_retrieve(
query,
None,
milvus_client=milvus_client,
embedder=lambda texts: embed_texts(texts, client=llm_client),
config_getter=config_getter,
)
async def recognize(query, history=None):
return await intent_recognize(
query,
llm_client=llm_client,
history=history,
config_getter=config_getter,
)
async def generate(messages):
return await generate_answer(
messages,
llm_client=llm_client,
config_getter=config_getter,
)
agent = AnonymousCustomerAgent(
context=context,
rag_retrieve=retrieve,
intent_recognize=recognize,
generate_answer=generate,
audit_writer=audit_writer,
config_getter=config_getter,
)
return SimpleNamespace(
redis=redis,
session_service=session_service,
context=context,
agent=agent,
)