63 lines
1.7 KiB
Python
63 lines
1.7 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):
|
||
|
|
return await intent_recognize(query, llm_client=llm_client)
|
||
|
|
|
||
|
|
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,
|
||
|
|
)
|