chore: update gitignore; feat: 新增customer_agent业务模块与api路由
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""LLM answer generation with the客服 Agent fallback chain."""
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from inspect import isawaitable
|
||||
|
||||
|
||||
logger = logging.getLogger("rag.generation")
|
||||
|
||||
|
||||
async def _config(config_getter, key: str, default=None):
|
||||
value = config_getter(key, default)
|
||||
if isawaitable(value):
|
||||
value = await value
|
||||
return value
|
||||
|
||||
|
||||
async def generate_answer(
|
||||
messages: list[dict],
|
||||
*,
|
||||
llm_client,
|
||||
config_getter,
|
||||
primary_model: str | None = None,
|
||||
) -> str:
|
||||
fallback_model = await _config(
|
||||
config_getter, "agent.customer.llm.fallback_model", ""
|
||||
)
|
||||
template = await _config(
|
||||
config_getter, "agent.customer.template.system_busy", None
|
||||
)
|
||||
models = [primary_model] if primary_model else [None]
|
||||
if fallback_model and fallback_model not in models:
|
||||
models.append(fallback_model)
|
||||
for model in models:
|
||||
try:
|
||||
kwargs = {} if model is None else {"model": model}
|
||||
return await llm_client.chat(messages, **kwargs)
|
||||
except Exception:
|
||||
logger.exception("LLM generation failed for model=%s", model or "default")
|
||||
if not template:
|
||||
raise RuntimeError("system busy template is not configured")
|
||||
return template
|
||||
Reference in New Issue
Block a user