| 1234567891011121314151617181920212223242526272829303132333435 |
- from typing import Optional
- from app.tools.java_client import JavaClient
- import logging
- logger = logging.getLogger(__name__)
- class ChatAgent:
- """家庭聊天 Agent: 包装业务逻辑, 被 StateGraph 节点调用"""
- def __init__(self):
- self.java = JavaClient()
- async def load_context(self, user_id: int, child_id: Optional[int] = None) -> dict:
- """从 Java 侧加载用户上下文"""
- params = {}
- if child_id:
- params["childId"] = child_id
- return await self.java.get_user_context(user_id, params)
- async def extract_tasks(self, answer: str, user_id: int, conv_id: str) -> list[dict]:
- """从 AI 回答中解析 [TASK] 标记"""
- import re
- tasks = []
- pattern = r'\[TASK:\s*\{([^}]+)\}\]'
- matches = re.findall(pattern, answer)
- for match in matches:
- task_info = {}
- for kv in match.split(","):
- if ":" in kv:
- k, v = kv.split(":", 1)
- task_info[k.strip()] = v.strip().strip('"').strip("'")
- if task_info.get("title"):
- tasks.append(task_info)
- return tasks
|