SysOps: approved_backup — 2026-08-16 11:01 UTC
This commit is contained in:
@@ -120,18 +120,35 @@ def _agent_steps(delegated: list[str], routing_reason: str = "", extra: list[dic
|
||||
|
||||
|
||||
|
||||
async def _chat_via_llm_router(message: str, channel: str) -> dict[str, Any]:
|
||||
from app.services import llm_router
|
||||
async def _chat_via_llm_router(
|
||||
message: str,
|
||||
channel: str,
|
||||
*,
|
||||
username: str | None = None,
|
||||
role: str | None = None,
|
||||
) -> dict[str, Any]:
|
||||
from app.services import hermes_memory, llm_router
|
||||
|
||||
system = (
|
||||
"Je bent Herman, de AI-assistent van Foodlinkk B2B (halal vlees, export, CRM). "
|
||||
"Antwoord in het Nederlands, bondig, actiegericht. Geef concrete vervolgstappen waar nuttig."
|
||||
)
|
||||
messages = [
|
||||
{"role": "system", "content": system},
|
||||
{"role": "user", "content": message},
|
||||
]
|
||||
reply, meta = await llm_router.chat_messages(messages, timeout=120.0)
|
||||
hermes_user = hermes_memory.resolve_hermes_user(username=username, role=role, channel=channel)
|
||||
from app.config import settings as _settings
|
||||
display = "Aïssa" if str(hermes_user) == str(_settings.HERMES_CEO_CHAT_ID) else (username or "gebruiker")
|
||||
system = hermes_memory.continuity_system(hermes_user, display_name=display)
|
||||
|
||||
messages: list[dict[str, str]] = [{"role": "system", "content": system}]
|
||||
feed_items = await hermes_memory.fetch_recent_feed(hermes_user)
|
||||
hist = hermes_memory.feed_to_messages(feed_items)
|
||||
if hist:
|
||||
messages.append({
|
||||
"role": "system",
|
||||
"content": (
|
||||
f"Recente Telegram-geschiedenis voor chat_id={hermes_user} "
|
||||
f"({len(hist)} berichten, oud→nieuw). Behandel dit als jouw geheugencontext."
|
||||
),
|
||||
})
|
||||
messages.extend(hist)
|
||||
messages.append({"role": "user", "content": message})
|
||||
|
||||
reply, meta = await llm_router.chat_messages(messages, timeout=180.0, user=hermes_user)
|
||||
provider = meta.get("provider_label") or "LLM"
|
||||
model = meta.get("model") or ""
|
||||
await _log_event(
|
||||
@@ -139,7 +156,13 @@ async def _chat_via_llm_router(message: str, channel: str) -> dict[str, Any]:
|
||||
"llm_chat",
|
||||
f"Herman via {provider}",
|
||||
message[:2000],
|
||||
{"provider": meta, "channel": channel},
|
||||
{
|
||||
"provider": meta,
|
||||
"channel": channel,
|
||||
"hermes_user": hermes_user,
|
||||
"memory_messages": len(hist),
|
||||
"username": username,
|
||||
},
|
||||
channel=channel,
|
||||
)
|
||||
return {
|
||||
@@ -147,9 +170,16 @@ async def _chat_via_llm_router(message: str, channel: str) -> dict[str, Any]:
|
||||
"agent_label": f"Herman · {provider}",
|
||||
"reply": reply,
|
||||
"delegated_agents": ["herman"],
|
||||
"routing_reason": f"Cloud LLM · {provider}" + (f" · {model}" if model else ""),
|
||||
"agent_steps": _agent_steps([], f"Via {provider}"),
|
||||
"routing_reason": (
|
||||
f"Cloud LLM · {provider}"
|
||||
+ (f" · {model}" if model else "")
|
||||
+ f" · memory:{hermes_user}"
|
||||
+ (f" · feed:{len(hist)}" if hist else "")
|
||||
),
|
||||
"agent_steps": _agent_steps([], f"Via {provider} + Hermes memory"),
|
||||
"llm_provider": meta,
|
||||
"hermes_user": hermes_user,
|
||||
"memory_messages": len(hist),
|
||||
}
|
||||
|
||||
|
||||
@@ -158,6 +188,8 @@ async def chat(
|
||||
channel: str = "cockpit",
|
||||
session_id: str | None = None,
|
||||
confirm_action_id: str | None = None,
|
||||
username: str | None = None,
|
||||
role: str | None = None,
|
||||
) -> dict[str, Any]:
|
||||
use_voice_router = (
|
||||
channel in voice_export_actions.VOICE_CHANNELS
|
||||
@@ -382,7 +414,7 @@ async def chat(
|
||||
# Direct LLM backends (Hermes Agent API, OpenRouter, …) — skip offline orchestrator.
|
||||
if backend in ("hermes", "router", "openrouter", "llm"):
|
||||
try:
|
||||
return await _chat_via_llm_router(message, channel)
|
||||
return await _chat_via_llm_router(message, channel, username=username, role=role)
|
||||
except Exception as exc:
|
||||
hint = (
|
||||
"Controleer HERMES_API_KEY / Hermes Agent (:8642)."
|
||||
@@ -427,7 +459,7 @@ async def chat(
|
||||
except Exception as exc:
|
||||
if backend == "auto":
|
||||
try:
|
||||
return await _chat_via_llm_router(message, channel)
|
||||
return await _chat_via_llm_router(message, channel, username=username, role=role)
|
||||
except Exception as llm_exc:
|
||||
return {
|
||||
"agent": "herman",
|
||||
|
||||
Reference in New Issue
Block a user