Просмотр исходного кода

feat: Python侧画像prompt注入(4个graph+nutrition端点)

iwt 2 месяцев назад
Родитель
Сommit
783499e615

+ 9 - 0
cfc-langgraph/app/graphs/chat_graph.py

@@ -13,6 +13,8 @@ from app.tools.product_tools import (
 from app.memory.store import MemoryManager
 from app.config import settings
 from app.prompt_service import get_prompt
+from app.portrait_service import get_user_portrait_text
+from app.tools.java_client import JavaClient
 import logging
 
 logger = logging.getLogger(__name__)
@@ -60,6 +62,7 @@ def create_chat_graph():
     from app.rag.embeddings import get_embeddings
     embeddings = get_embeddings()
     memory_mgr = MemoryManager(embeddings)
+    java = JavaClient()
 
     llm_with_tools = llm.bind_tools([
         search_product_by_keyword,
@@ -87,6 +90,12 @@ def create_chat_graph():
         chat_prompt = await get_prompt("chat_assistant") or DEFAULT_CHAT_PROMPT
         messages = [SystemMessage(content=chat_prompt)]
 
+        # 画像注入
+        member_id = state.get("child_id")
+        portrait_text = await get_user_portrait_text(java, state["user_id"], member_id)
+        if portrait_text:
+            messages.insert(1, SystemMessage(content=portrait_text))
+
         # 注入家庭上下文 + 用户健康现状
         ctx = state.get("context", {})
         if isinstance(ctx, dict):

+ 7 - 0
cfc-langgraph/app/graphs/health_butler_graph.py

@@ -11,6 +11,7 @@ from app.tools.product_tools import (
 from app.memory.store import MemoryManager
 from app.config import settings
 from app.prompt_service import get_prompt
+from app.portrait_service import get_user_portrait_text
 import logging
 import json
 
@@ -139,6 +140,12 @@ def create_health_butler_graph():
         """阶段3: LLM 生成个性化健康建议"""
         messages = [SystemMessage(content=await get_prompt("health_butler") or DEFAULT_BUTLER_PROMPT)]
 
+        # 画像注入
+        member_id = state.get("child_id")
+        portrait_text = await get_user_portrait_text(java, state["user_id"], member_id)
+        if portrait_text:
+            messages.insert(1, SystemMessage(content=portrait_text))
+
         # 注入健康知识库上下文
         kb_ctx = state.get("kb_context", {})
         knowledge_results = state.get("knowledge_results", [])

+ 9 - 0
cfc-langgraph/app/graphs/health_coach_graph.py

@@ -11,6 +11,8 @@ from app.rag.retriever import RagRetriever
 from app.memory.store import MemoryManager
 from app.config import settings
 from app.prompt_service import get_prompt
+from app.portrait_service import get_user_portrait_text
+from app.tools.java_client import JavaClient
 import logging
 
 logger = logging.getLogger(__name__)
@@ -70,6 +72,7 @@ def create_health_coach_graph():
     embeddings = get_embeddings()
     retriever = RagRetriever(collection_name="health_knowledge")
     memory_mgr = MemoryManager(embeddings)
+    java = JavaClient()
 
     # 带工具的 LLM(健康知识库检索)
     async def health_retrieve(query: str, user_id: int) -> list[dict]:
@@ -95,6 +98,12 @@ def create_health_coach_graph():
         _base_prompt = await get_prompt("health_coach")
         messages = [SystemMessage(content=_persona_prompt or _base_prompt or DEFAULT_COACH_PROMPT)]
 
+        # 画像注入
+        member_id = _ctx.get("child_id")
+        portrait_text = await get_user_portrait_text(java, state["user_id"], member_id)
+        if portrait_text:
+            messages.insert(1, SystemMessage(content=portrait_text))
+
         # 家庭上下文
         ctx = state.get("context") or {}
         if ctx: