Files
ailine/backend/app/utils/logging.py

58 lines
1.7 KiB
Python
Raw Normal View History

2026-04-21 11:02:16 +08:00
"""
LangGraph 节点日志工具模块
提供状态流转追踪和 LLM 输入输出打印功能
"""
from typing import Any
2026-05-06 01:15:52 +08:00
from backend.app.config import ENABLE_GRAPH_TRACE
from backend.app.logger import debug, info
2026-04-21 11:02:16 +08:00
def log_state_change(node_name: str, state: Any, prefix: str = "进入"):
2026-04-21 11:02:16 +08:00
"""
记录状态变化日志
2026-04-21 11:02:16 +08:00
Args:
node_name: 节点名称
state: 当前状态
2026-04-21 11:02:16 +08:00
prefix: 日志前缀"进入" "离开"
"""
2026-05-05 23:17:00 +08:00
from backend.app.logger import info
messages = state.messages
2026-04-21 11:02:16 +08:00
msg_count = len(messages)
last_msg = messages[-1] if messages else None
last_info = ""
if last_msg:
content_preview = str(last_msg.content)[:10].replace("\n", " ")
msg_type = getattr(last_msg, 'type', 'unknown')
2026-04-21 11:02:16 +08:00
last_info = f"{msg_type.upper()}: {content_preview}"
info(f"🔄 [{node_name}] {prefix} | 消息数:{msg_count} | 最后一条:{last_info}")
def print_llm_input(prompt_value):
"""
RunnableLambda 回调函数打印格式化后发送给 LLM 的完整消息
Args:
prompt_value: ChatPromptValue 对象包含格式化后的消息列表
2026-04-21 11:02:16 +08:00
Returns:
原样返回 prompt_value不影响链式调用
"""
if not ENABLE_GRAPH_TRACE:
return prompt_value
messages = prompt_value.messages # ChatPromptValue 提供 .messages 属性
debug("\n" + "="*80)
debug("📥 [LLM输入] 格式化后发送给大模型的完整消息:")
2026-04-21 11:02:16 +08:00
debug(f" 总消息数: {len(messages)}")
debug("-"*80)
2026-04-21 11:02:16 +08:00
for i, msg in enumerate(messages):
content_preview = str(msg.content) # 完整输出
debug(f" [{i}] {msg.type.upper():10s}: {content_preview}")
debug("\n" + "="*80 + "\n")
return prompt_value