LangChain Interrupt 2025的开幕演讲中提出了“Agent Engineering”这样一个融合了软件工程、机器学习、提示工程和产品管理的交叉概念,这里给大家分享一些Agent Engineering的上手经验。
📚 第一阶段:理论基础构建(2-4周)
1.1 LLM基础知识掌握
核心概念理解:
- Token机制:了解文本如何被切分和处理
- 上下文窗口:掌握不同模型的输入限制
- temperature参数:理解随机性控制对输出的影响
- Few-shot学习:学会通过示例引导模型行为
实践练习:
# 基础API调用练习
import openai
# 练习不同temperature参数的效果
responses = []
for temp in [0.1, 0.5, 0.9]:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "写一个创意故事"}],
temperature=temp
)
responses.append(response)
学习资源:
- 📖 《GPT实战指南》- 基础概念
- 🎥 Andrew Ng的《ChatGPT Prompt Engineering》课程
- 📝 OpenAI官方文档和Cookbook
1.2 提示工程技巧精通
核心技术模式:
① Zero-shot Prompting(零样本提示)
任务:请分析以下客户反馈的情感倾向
客户反馈:[用户输入]
分析维度:情感极性(正面/负面/中性)、置信度(1-10)
输出格式:JSON
② Few-shot Prompting(少样本提示)
任务:将用户问题分类到合适的部门
示例1:
用户:我的订单什么时候能到?
分类:物流部门
示例2:
用户:这个产品有质量问题
分类:售后部门
现在请分类:[用户输入]
③ Chain-of-Thought(思维链)
请一步步分析这个商业决策:
步骤1:明确问题和目标
步骤2:列出可能的选项
步骤3:分析每个选项的优缺点
步骤4:考虑风险和机会
步骤5:给出最终建议和理由
④ Role Playing(角色扮演)
你是一位有20年经验的财务顾问,专门帮助中小企业优化财务结构。
请用专业但易懂的语言回答客户的财务问题。
保持耐心、专业,并给出具体可行的建议。
实战练习项目:
- 构建一个多轮对话的客服机器人
- 开发一个代码审查助手
- 创建一个创意写作伙伴
1.3 Agent架构模式学习
核心架构类型:
① ReAct模式(推理+行动)
思考 → 行动 → 观察 → 思考 → 行动...
示例流程:
思考:用户想查询天气,我需要获取他的位置信息
行动:调用位置获取工具
观察:获得位置"北京市"
思考:现在我需要查询北京的天气信息
行动:调用天气API
观察:获得天气数据
思考:我可以给用户一个完整的回复了
② 规划型Agent
任务分解 → 制定计划 → 执行计划 → 监控调整
示例:旅行规划Agent
1. 分析需求:时间、预算、偏好
2. 制定计划:交通、住宿、景点安排
3. 执行计划:逐步完成预订
4. 监控调整:根据变化调整计划
③ 多Agent协作
专业Agent分工:
- 数据分析Agent:处理数据查询和分析
- 内容生成Agent:负责文本创作
- 决策Agent:整合信息做出决策
- 执行Agent:负责具体任务执行
🔧 第二阶段:工具链熟练掌握(3-6周)
2.1 LangChain/LangGraph深度使用
基础组件掌握:
① LLM封装和管理
from langchain.llms import OpenAI, ChatOpenAI
from langchain.callbacks import StreamingStdOutCallbackHandler
# 配置LLM
llm = ChatOpenAI(
model_name="gpt-4",
temperature=0.7,
streaming=True,
callbacks=[StreamingStdOutCallbackHandler()]
)
② 提示模板系统
from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate
system_template = """你是一个专业的{domain}顾问。
请根据以下信息:{context}
为用户提供专业建议。
保持回答的{style}和准确性。"""
prompt = ChatPromptTemplate.from_messages([
SystemMessagePromptTemplate.from_template(system_template),
("human", "{question}")
])
③ 记忆管理
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(
k=5, # 保留最近5轮对话
return_messages=True
)
④ 工具集成
from langchain.tools import Tool
from langchain.agents import initialize_agent
def search_weather(location: str) -> str:
"""查询指定位置的天气信息"""
# 实际API调用逻辑
return f"{location}的天气:晴天,25度"
tools = [
Tool(
name="WeatherSearch",
func=search_weather,
description="查询天气信息,输入城市名称"
)
]
agent = initialize_agent(
tools=tools,
llm=llm,
agent_type="zero-shot-react-description"
)
2.2 向量数据库操作精通
知识库构建流程:
① 文档预处理
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFLoader
# 加载文档
loader = PyPDFLoader("knowledge_base.pdf")
documents = loader.load()
# 文档分割
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
separators=["\n\n", "\n", " ", ""]
)
chunks = text_splitter.split_documents(documents)
② 向量化存储
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory="./vector_db"
)
③ 检索增强生成(RAG)
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
)
# 查询
response = qa_chain.run("如何优化Agent的性能?")
2.3 Agent调试技巧
调试工具使用:
① LangSmith跟踪
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your_api_key"
# 所有执行都会被自动跟踪
agent.run("帮我制定一个营销计划")
② 自定义回调函数
from langchain.callbacks.base import BaseCallbackHandler
class DebugCallbackHandler(BaseCallbackHandler):
def on_llm_start(self, serialized, prompts, **kwargs):
print(f"🤖 LLM开始处理: {prompts[0][:100]}...")
def on_tool_start(self, serialized, input_str, **kwargs):
print(f"🔧 工具调用: {serialized['name']} - {input_str}")
def on_agent_action(self, action, **kwargs):
print(f"🎯 Agent行动: {action.tool} - {action.tool_input}")
③ 错误处理机制
from langchain.schema import OutputParserException
try:
result = agent.run(user_input)
except OutputParserException as e:
# 输出解析错误处理
result = "抱歉,我需要重新整理回复..."
except Exception as e:
# 通用错误处理
print(f"Agent执行错误: {e}")
result = "系统出现问题,请稍后重试"
🚀 第三阶段:项目实践进阶(4-8周)
3.1 入门项目:智能客服Agent
项目目标: 构建一个能够处理常见客户咨询的AI客服系统
技术架构:
用户输入 → 意图识别 → 知识库检索 → 回复生成 → 用户反馈
核心功能实现:
① 意图分类器
class IntentClassifier:
def __init__(self):
self.intents = {
"订单查询": ["订单", "查询", "物流", "发货"],
"产品咨询": ["产品", "功能", "价格", "对比"],
"售后服务": ["退货", "换货", "质量问题", "保修"],
"账户相关": ["登录", "密码", "注册", "账户"]
}
def classify(self, user_input):
# 使用LLM进行意图分类
prompt = f"""
用户输入:{user_input}
意图类别:{list(self.intents.keys())}
请判断用户输入属于哪个意图类别,只返回类别名称。
"""
return llm.predict(prompt)
② 多轮对话管理
class ConversationManager:
def __init__(self):
self.context = {}
self.conversation_state = "greeting"
def update_context(self, key, value):
self.context[key] = value
def get_response(self, user_input, intent):
if intent == "订单查询":
if "order_id" not in self.context:
return "请提供您的订单号"
else:
return self.query_order(self.context["order_id"])
③ 知识库集成
def build_customer_service_kb():
# 加载FAQ文档
faq_docs = load_faq_documents()
# 构建向量数据库
vectorstore = build_vectorstore(faq_docs)
# 创建检索链
retrieval_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
return retrieval_chain
3.2 进阶项目:个人助理Agent
项目特色:
- 日程管理
- 邮件处理
- 信息汇总
- 决策支持
核心组件设计:
① 多工具集成
tools = [
CalendarTool(), # 日程管理
EmailTool(), # 邮件处理
WeatherTool(), # 天气查询
NewsSearchTool(), # 新闻搜索
DocumentAnalyzer(), # 文档分析
TaskManager() # 任务管理
]
② 智能规划能力
class PersonalAssistant:
def plan_day(self, user_preferences):
# 获取日程安排
schedule = self.calendar_tool.get_today_schedule()
# 分析时间空隙
free_slots = self.analyze_free_time(schedule)
# 生成建议
suggestions = self.generate_suggestions(free_slots, user_preferences)
return suggestions
3.3 专业项目:行业特化Agent
示例:金融分析Agent
功能模块:
- 市场数据分析
- 投资组合评估
- 风险预警
- 报告生成
技术实现要点:
① 实时数据集成
class FinancialDataAgent:
def __init__(self):
self.data_sources = {
"stock_api": StockDataAPI(),
"news_api": FinancialNewsAPI(),
"economic_api": EconomicIndicatorAPI()
}
def get_market_analysis(self, symbol):
# 获取多源数据
stock_data = self.data_sources["stock_api"].get_data(symbol)
related_news = self.data_sources["news_api"].search(symbol)
# 综合分析
analysis = self.analyze_data(stock_data, related_news)
return analysis
② 专业知识融合
def create_financial_prompt():
return """
你是一位资深金融分析师,具有以下专业能力:
1. 技术分析:K线图、移动平均线、技术指标
2. 基本面分析:财务报表、行业趋势、宏观经济
3. 风险管理:波动率分析、相关性分析、VaR计算
分析时请:
- 提供数据支撑的结论
- 考虑多重影响因素
- 给出风险提示
- 保持客观和专业
"""
📈 第四阶段:生产环境部署(2-4周)
4.1 性能优化
① 缓存策略
from functools import lru_cache
import redis
class CacheManager:
def __init__(self):
self.redis_client = redis.Redis(host='localhost', port=6379)
@lru_cache(maxsize=1000)
def get_embedding(self, text):
# 缓存向量计算结果
cached = self.redis_client.get(f"embedding:{hash(text)}")
if cached:
return json.loads(cached)
embedding = embeddings.embed_query(text)
self.redis_client.setex(
f"embedding:{hash(text)}",
3600,
json.dumps(embedding)
)
return embedding
② 异步处理
import asyncio
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
async def process_user_request(user_input):
# 异步执行Agent任务
result = await agent.arun(user_input)
return result
4.2 监控和日志
① 性能监控
import time
from functools import wraps
def monitor_performance(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
try:
result = func(*args, **kwargs)
execution_time = time.time() - start_time
# 记录性能指标
logger.info(f"{func.__name__} 执行时间: {execution_time:.2f}s")
return result
except Exception as e:
# 记录错误
logger.error(f"{func.__name__} 执行失败: {str(e)}")
raise
return wrapper
② 对话质量评估
class ConversationQualityAssessor:
def assess_response(self, user_input, agent_response):
criteria = {
"relevance": self.check_relevance(user_input, agent_response),
"accuracy": self.check_accuracy(agent_response),
"helpfulness": self.check_helpfulness(agent_response),
"clarity": self.check_clarity(agent_response)
}
overall_score = sum(criteria.values()) / len(criteria)
return overall_score, criteria
🎯 学习时间规划建议
初学者路径(8-12周全职学习)
- 第1-2周:理论基础,每天2-3小时
- 第3-4周:工具实践,每天3-4小时
- 第5-8周:项目开发,每天4-6小时
- 第9-12周:优化部署,每天2-3小时
有基础开发者路径(4-6周)
- 第1周:快速上手LangChain
- 第2-3周:构建完整项目
- 第4-6周:生产环境优化
📚 推荐学习资源
官方文档
实践项目
社区和论坛
- 💬 LangChain Discord社区
- 🐦 关注@LangChainAI和@hwchase17
- 📱 加入相关微信群和技术社区
❓ 常见问题和解决方案
Q1: Agent响应不稳定怎么办?
解决方案:
- 优化提示词,增加约束条件
- 设置合适的temperature参数
- 添加输出格式验证
- 使用思维链提示提高推理质量
Q2: 如何处理Agent的幻觉问题?
解决方案:
- 集成可靠的知识库
- 添加事实检查步骤
- 设置信心阈值
- 提供信息来源引用
Q3: Agent性能太慢如何优化?
解决方案:
- 使用较小但足够的模型
- 实施多级缓存策略
- 优化提示词长度
- 并行处理多个任务
🎉 恭喜你走到这里!
按照这个详细的实践指南,你将能够系统性地掌握Agent Engineering技能,从理论基础到生产应用,逐步成为一名专业的Agent Engineer。
记住:实践是最好的老师,项目是最好的作品集!
开始你的Agent Engineering之旅吧! 🚀