graph LR
A[用户输入] --> B{意图识别}
B -->|咨询类| C[知识库查询]
B -->|操作类| D[API调用]
C --> E[生成回复]
D --> E
E --> F{是否完成}
F -->|否| B
bash# 安装核心组件
pip install -U langgraph langchain_anthropic
# 可选组件(监控与调试)
pip install langsmith
pythonimport os
from getpass import getpass
def secure_config(keys):
"""安全配置环境密钥"""
for key in keys:
if not os.environ.get(key):
os.environ[key] = getpass(f"请输入{key}: ")
required_keys = ["ANTHROPIC_API_KEY", "LANGSMITH_API_KEY"]
secure_config(required_keys)
# 启用运行监控
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "智能客服系统"
pythonfrom typing import TypedDict, Annotated
from langgraph.graph.message import add_messages
class AgentState(TypedDict):
"""对话状态容器"""
message_history: Annotated[list, add_messages] # 消息历史
session_context: dict # 会话上下文
pending_actions: list # 待处理操作
pythonfrom langgraph.graph import StateGraph
# 初始化状态图
workflow = StateGraph(AgentState)
# 添加功能节点
workflow.add_node("intent_parser", parse_intent)
workflow.add_node("knowledge_retriever", retrieve_knowledge)
workflow.add_node("response_generator", generate_response)
# 配置条件边
def route_intent(state: AgentState):
if state["intent"] == "FAQ":
return "knowledge_retriever"
else:
return "response_generator"
workflow.add_conditional_edges(
"intent_parser",
route_intent,
{"knowledge_retriever", "response_generator"}
)
pythondef translation_flow(state: AgentState):
"""多阶段翻译流程"""
# 初始化翻译节点
workflow.add_node("translate_phase1", initial_translation)
workflow.add_node("quality_check", evaluate_quality)
workflow.add_node("finalize_translation", final_output)
# 配置循环校验
workflow.add_conditional_edges(
"quality_check",
lambda s: "translate_phase1" if s["score"] < 95 else "finalize_translation"
)
pythonclass UserProfile(TypedDict):
"""用户画像存储结构"""
preferences: dict
interaction_history: list
last_session: str
# 持久化配置
from langgraph.checkpoint.memory import MemorySaver
from langgraph.store import InMemoryStore
store = InMemoryStore()
checkpointer = MemorySaver()
# 构建个性化对话流程
def personal_chatbot(state):
"""带用户画像的聊天流程"""
# 加载用户数据
user_data = store.get(("profiles", state["user_id"]))
# 生成个性化回复
return format_response(user_data)
python# 配置检查点
from langgraph.checkpoint import MemorySaver
checkpointer = MemorySaver()
compiled_graph = workflow.compile(checkpointer=checkpointer)
# 保存会话状态
config = {"configurable": {"thread_id": "user123"}}
compiled_graph.invoke(
{"messages": [("user", "推荐北京的美食")]},
config=config
)
# 恢复会话
saved_state = checkpointer.get(config)
pythondef multi_agent_system():
"""多代理协作系统"""
# 初始化代理节点
workflow.add_node("reception_agent", handle_greeting)
workflow.add_node("tech_agent", solve_technical)
workflow.add_node("sales_agent", process_order)
# 配置智能路由
def route_to_specialist(state):
if "技术问题" in state["tags"]:
return "tech_agent"
elif "订单" in state["tags"]:
return "sales_agent"
return "reception_agent"
python# 生成流程拓扑图
from IPython.display import Image
try:
Image(workflow.get_graph().draw_mermaid_png())
except Exception as e:
print(f"可视化错误: {str(e)}")
python# 异步节点配置示例
async def async_knowledge_query(state):
"""异步知识查询"""
result = await query_knowledge_base(state["query"])
return {"result": result}
安全防护:
性能保障:
python# 限流配置示例
from langgraph import RateLimiter
limiter = RateLimiter(requests=100, per_minute=5)
workflow.add_middleware(limiter)
监控体系:
CI/CD流程:
graph TD
A[代码提交] --> B[单元测试]
B --> C[流程验证]
C --> D[性能压测]
D --> E[灰度发布]
E --> F[全量部署]
官方文档精读:
进阶应用场景:
性能调优手册:
python# 性能分析示例
from cProfile import Profile
profiler = Profile()
profiler.runcall(workflow.invoke, input_state)
profiler.print_stats()
本指南通过理论解析与实战案例的结合,系统性地展示了LangGraph的核心能力与应用技巧。建议读者:
期待您用LangGraph构建出更智能、更可靠的AI应用!
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!