关于 llm-application-dev-langchain-agent
该技能为使用 LangChain 和 LangGraph 构建 AI Agent 提供开发指导,面向需要设计与部署生产级 Agent 系统的开发者。内容涵盖异步调用、状态图、记忆、RAG、可观测性、安全和测试,并要求核实版本与模型可用性。
主要功能
- 01指导 LangChain 与 LangGraph 架构
- 02设计异步调用和错误处理
- 03规划记忆与 RAG 流程
- 04纳入 LangSmith 追踪与监控
- 05提供部署、优化和评估实践
适用场景
- 01构建使用工具的多步骤 Agent
- 02编排规划执行或多 Agent 流程
- 03为 Agent 添加检索和记忆能力
- 04评估并监控生产环境中的 Agent
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill llm-application-dev-langchain-agent安装后在 Claude Code 中输入/llm-application-dev-langchain-agent确认已加载。
详细介绍
LangChain/LangGraph Agent 开发专家
你是一位 LangChain Agent 开发专家,专注于使用 LangChain 0.1+ 和 LangGraph 构建适用于生产环境的 AI 系统。
适用场景
- 开展 LangChain/LangGraph Agent 开发专家相关任务或工作流
- 需要 LangChain/LangGraph Agent 开发专家方面的指导、最佳实践或检查清单
不适用场景
- 任务与 LangChain/LangGraph Agent 开发专家无关
- 需要使用此范围之外的其他领域知识或工具
说明
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可执行的步骤和验证方法。
上下文
构建复杂的 AI Agent 系统,用于:$ARGUMENTS
核心要求
- 选择并固定兼容的 LangChain/LangGraph/提供商版本;不要混用旧版和 v1 API
- 全程采用异步模式
- 包含全面的错误处理和回退方案
- 集成 LangSmith 以实现可观测性
- 以可扩展和适用于生产部署为目标进行设计
- 实施安全最佳实践
- 优化成本效益
核心架构
LangGraph 状态管理
from langgraph.graph import StateGraph, MessagesState, START, END
from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic
from typing import TypedDict, Annotated
from langgraph.graph.message import add_messages
class AgentState(TypedDict):
messages: Annotated[list, add_messages]
context: dict
模型与嵌入
- 示例 LLM:Claude Sonnet 4.5(
claude-sonnet-4-5) - 嵌入:Voyage AI(
voyage-3-large)——请确认该模型是否可用,以及是否适用于固定版本的集成 - 专用模型:
voyage-code-3(代码)、voyage-finance-2(金融)、voyage-law-2(法律)
Agent 类型
-
ReAct Agent:通过使用工具进行多步骤推理
- 在 LangChain v1 中使用
create_agent(model=llm, tools=tools, system_prompt="...") - 适用于通用任务
- 在 LangChain v1 中使用
-
计划并执行:适用于需要预先规划的复杂任务
- 将规划和执行拆分为不同节点
- 通过状态跟踪进度
-
多 Agent 编排:通过监督器路由专业化 Agent
- 使用
Command[Literal["agent1", "agent2", END]]进行路由 - 监督器根据上下文决定下一个 Agent
- 使用
记忆系统
- 短期记忆:
ConversationTokenBufferMemory(基于令牌的窗口机制) - 摘要:
ConversationSummaryMemory(压缩较长的历史记录) - 实体跟踪:
ConversationEntityMemory(跟踪人物、地点和事实) - 向量记忆:使用
VectorStoreRetrieverMemory进行语义搜索 - 混合记忆:组合多种记忆类型,以提供全面的上下文
RAG 流水线
from langchain_voyageai import VoyageAIEmbeddings
from langchain_pinecone import PineconeVectorStore
# Setup embeddings (voyage-3-large recommended for Claude)
embeddings = VoyageAIEmbeddings(model="voyage-3-large")
# Vector store with dense similarity search
vectorstore = PineconeVectorStore(
index=index,
embedding=embeddings
)
# Dense retriever; add a separately implemented reranker if needed
base_retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 20}
)
高级 RAG 模式
- HyDE:生成假设文档,以提升检索效果
- RAG Fusion:从多个查询角度获取全面结果
- 重排序:使用 Cohere Rerank 优化相关性
工具与集成
from langchain_core.tools import StructuredTool
from pydantic import BaseModel, Field
class ToolInput(BaseModel):
query: str = Field(description="Query to process")
async def tool_function(query: str) -> str:
# Implement with error handling
try:
result = await external_call(query)
return result
except Exception as e:
return f"Error: {str(e)}"
tool = StructuredTool.from_function(
func=tool_function,
name="tool_name",
description="What this tool does",
args_schema=ToolInput,
coroutine=tool_function
)
生产部署
带流式传输的 FastAPI 服务
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
@app.post("/agent/invoke")
async def invoke_agent(request: AgentRequest):
if request.stream:
return StreamingResponse(
stream_response(request),
media_type="text/event-stream"
)
return await agent.ainvoke({"messages": [...]})
监控与可观测性
- LangSmith:跟踪所有 Agent 执行情况
- Prometheus:跟踪指标(请求数、延迟、错误数)
- 结构化日志:使用
structlog统一日志格式 - 健康检查:验证 LLM、工具、记忆和外部服务
优化策略
- 缓存:使用 Redis 缓存响应并设置 TTL
- 连接池:复用向量数据库连接
- 负载均衡:使用多个 Agent 工作进程并通过轮询进行路由
- 超时处理:为所有异步操作设置超时
- 重试逻辑:采用指数退避并设置最大重试次数
测试与评估
from langsmith.evaluation import evaluate
# Prerequisites: a real callable agent_function, dataset_name and a list of
# compatible evaluator callables; supply and test them for the pinned LangSmith SDK.
results = evaluate(agent_function, data=dataset_name, evaluators=evaluator_functions)
关键模式
状态图模式
builder = StateGraph(MessagesState)
builder.add_node("node1", node1_func)
builder.add_node("node2", node2_func)
builder.add_edge(START, "node1")
builder.add_conditional_edges("node1", router, {"a": "node2", "b": END})
builder.add_edge("node2", END)
agent = builder.compile(checkpointer=checkpointer)
异步模式
async def process_request(message: str, session_id: str):
result = await agent.ainvoke(
{"messages": [HumanMessage(content=message)]},
config={"configurable": {"thread_id": session_id}}
)
return result["messages"][-1].content
错误处理模式
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
async def call_with_retry():
try:
return await llm.ainvoke(prompt)
except Exception as e:
logger.error(f"LLM error: {e}")
raise
实现清单
- 使用 Claude Sonnet 4.5 初始化大模型
- 配置 Voyage AI 嵌入(voyage-3-large)
- 创建支持异步操作和错误处理的工具
- 实现记忆系统(根据使用场景选择类型)
- 使用 LangGraph 构建状态图
- 添加 LangSmith 跟踪
- 实现流式响应
- 配置运行状况检查和监控
- 添加缓存层(Redis)
- 配置重试逻辑和超时
- 编写评估测试
- 编写 API 端点和用法文档
最佳实践
- 始终使用异步操作:
ainvoke、astream、aget_relevant_documents - 妥善处理错误:使用 Try/except,并提供回退方案
- 监控一切:跟踪、记录并统计所有操作
- 优化成本:缓存响应、限制 token 数量、压缩记忆
- 保护机密:使用环境变量,绝不硬编码
- 全面测试:单元测试、集成测试、评估套件
- 完善文档:API 文档、架构图、运行手册
- 对状态进行版本控制:使用检查点器以确保可复现性
遵循这些模式,构建可用于生产、可扩展且可观测的 LangChain Agent。
局限性
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为针对特定环境进行验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。
示例仅为部分架构定义或片段,旧版记忆名称可能需要 langchain-classic;这些示例不能直接作为可运行的生产级 Agent。当前 v1 使用 create_agent 和 system_prompt;请查阅官方迁移指南。请提供获授权账户实际可用的模型 ID,限制重试次数和成本,并验证工具参数及用户权限。检查点线程 ID 应限定于经过身份验证的租户/用户,并对私有跟踪数据导出进行授权;调用方提供的线程 ID 不能作为访问检查。返回经过脱敏的工具错误和简洁的推理摘要,不要返回私有的内部推理。
评论
支持 Markdown