四、项目实战:从玩具到工具的蜕变
项目1:智能客服助手(1-2天)
场景需求:
- 用户咨询产品信息 → 自动查询数据库
- 处理退换货请求 → 生成工单并邮件通知
- 多轮对话 → 记住用户历史订单
技术栈:
分步实现:
-
搭建基础问答链
from langchain.chains import RetrievalQA # 连接产品数据库 qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=product_db.as_retriever() ) print(qa_chain.run("手机X的屏幕尺寸是多少?")) # 输出:6.7英寸,分辨率2400×1080...
-
添加工单处理功能
def create_ticket(info): ticket_id = db.insert({"user": "张三", "problem": info}) return f"工单已创建(编号:{ticket_id}),客服将在24小时内联系您" ticket_tool = Tool( name="create_ticket", func=create_ticket, description="用户发起退换货时调用" )
-
整合记忆模块
from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() memory.save_context( {"input": "我的订单号是123456"}, {"output": "已记录您的订单信息"} )
-
完整调用示例
user_input = "我想退换订单123456的商品" if "退换" in user_input: # 调用工单工具 print(agent.run(user_input, tools=[ticket_tool])) else: # 常规问答 print(qa_chain.run(user_input))
效果演示:
用户:订单123456什么时候发货?
客服:该订单已于今日上午10点发出,预计明天送达。
用户:我要退货这个订单
客服:好的,已为您创建工单T202311001,请保持电话畅通。
项目2:学术论文分析工具(3-4天)
核心功能:
- PDF论文 → 自动生成摘要
- 输入问题 → 定位相关段落
- 关键图表 → 提取并生成描述
技术架构:
from langchain.document_loaders import PyPDFLoader
from langchain.chains import AnalyzeDocumentChain
# 1. 加载论文
loader = PyPDFLoader("paper.pdf")
pages = loader.load()
# 2. 构建分析链
summary_chain = AnalyzeDocumentChain.from_chain_type(
llm=llm,
chain_type="map_reduce", # 适用于长文本
)
# 3. 执行分析
print(summary_chain.run("请用中文总结这篇论文的创新点"))
高级功能扩展:
-
图表描述生成
# 假设已通过OCR提取图表标题 figure_chain = LLMChain( prompt=PromptTemplate( template="描述以下图表内容:{caption}", input_variables=["caption"] ) ) print(figure_chain.run("图3: 不同算法在数据集A上的准确率对比")) # 输出:本图表对比了CNN、Transformer等模型在数据集A上的表现...
-
跨论文对比
compare_prompt = """ 对比两篇论文的核心观点: 论文1:{paper1_summary} 论文2:{paper2_summary} """ compare_chain = LLMChain(...)
可视化增强:
# 生成Markdown格式报告
report = f"""
# 论文分析报告
## 摘要
{summary}
## 创新点
1. {innovation_points[0]}
2. {innovation_points[1]}
"""
项目3:自动化数据分析助手(2-3天)
核心流程:
关键技术点:
-
数据预处理
from langchain.tools import PythonAstREPLTool data_tool = PythonAstREPLTool( description="输入Python代码执行数据分析", locals={"df": pd.read_csv("data.csv")} ) agent.run("计算销售额的月度增长率", tools=[data_tool])
-
可视化集成
# 生成绘图代码 plot_code = llm.predict(""" 为DataFrame df生成绘制月度销售额折线图的Python代码, 要求: - x轴为月份 - y轴为销售额 - 使用seaborn样式 """) # 执行代码 exec(plot_code) plt.savefig("sales_trend.png")
-
自动生成报告
report_template = """ # 数据分析报告 ## 关键指标 总销售额:{total_sales} 同比增长率:{growth_rate}% ## 趋势分析  """
完整调用示例:
agent.run(
"分析data.csv,计算各产品线销售额占比,生成饼图",
tools=[data_tool, plot_tool]
)
项目升级挑战
为已完成项目添加以下进阶功能:
项目 | 基础功能 | 挑战任务 |
---|---|---|
客服助手 | 回答产品问题 | 接入语音接口实现电话机器人 |
论文分析 | 生成摘要 | 自动提取参考文献生成知识图谱 |
数据分析 | 生成统计图表 | 预测下季度销售额并输出Excel报告 |
示例:客服助手升级电话版
from langchain.tools import APITool
# 接入Twilio语音API
call_tool = APITool(
name="make_call",
endpoint="https://api.twilio.com/...",
method="POST",
description="拨打电话并转接AI回复"
)
agent.run("致电13800138000解释退货政策", tools=[call_tool])
项目复盘指南
-
性能评估表
指标 评估方法 优化方向 响应速度 平均响应时间 启用缓存/异步调用 准确率 人工抽查100个回答 优化提示词/增加示例 稳定性 连续运行24小时错误率 添加异常重试机制 -
代码优化技巧
- 模块化拆分:
# 将客服功能拆分为独立类 class CustomerService: def __init__(self, llm): self.qa_chain = self._init_qa_chain(llm) self.ticket_tool = self._init_ticket_tool() def _init_qa_chain(self, llm): ...
- 配置分离:
创建config.yaml
存储API密钥、模型参数等敏感信息
- 模块化拆分:
毕业设计建议
结合前三项技术,打造智能办公助手:
- 会议记录 → 语音转文字 + 提取待办事项
- 邮件处理 → 自动分类 + 生成回复草稿
- 数据看板 → 定时生成报表并邮件发送
架构设计:
from langchain.agents import AgentExecutor
from langchain.tools import BaseTool
class OfficeAssistant:
def __init__(self):
self.email_agent = self._init_email_agent()
self.meeting_chain = self._init_meeting_chain()
def _init_email_agent(self):
tools = [email_classifier, reply_generator]
return AgentExecutor.from_agent_and_tools(...)
def process_meeting(self, audio_path):
text = speech_to_text(audio_path)
return self.meeting_chain.run(text)
下一步行动
- 选择你的启动项目:从三个基础项目中任选其一
- 搭建最小可行版本:先实现核心功能再优化细节
- 加入LangChain社区:在GitHub分享代码获取反馈
记住:每个复杂的AI应用都是由Chain
、Agent
、Tool
等基础模块组合而成,就像用乐高积木搭建城堡——现在你已拥有所有基础积木块,是时候创造你的AI作品了!