学习目标:具备开发agent项目的能力
·
- 理解 Agent 开发的核心概念与分类
- 掌握 LangChain 框架的基础组件与 API
- 能够使用 LangChain 构建自定义 Agent
- 实践开发一个基于 ReAct 模式的智能助理
学习内容:
- Agent 开发概述
- LLM Agent 的定义与工作原理
- Agent 与普通链(Chain)的区别
- Agent 的主要类型:ReAct、Plan-and-Execute、工具调用型等
- LangChain 核心基础
- 模型 I/O、提示模板、输出解析器
- 链(Chain)的构建与组合
- 记忆(Memory)组件
- 文档加载与索引
- LangChain Agent 深入
- Agent Executor 与 Agent 类型接口
- 内置工具与自定义工具
- ReAct Agent 实现与提示模板
- Agent 与外部 API 交互
- 实战项目:构建一个技术问答 Agent
- 环境搭建与依赖
- 设计提示模板与工具集
- 实现问答逻辑
- 测试与优化
- 测试与优化
代码示例:使用 LangChain 和 OpenAI API 初始化 Agent
以下是一个完整的 Python 代码示例,展示如何设置环境、定义工具并初始化一个简单的技术问答 Agent。
# 导入必要的库
import os
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
# 1. 环境变量设置(请替换为你的实际 API Key)
os.environ["OPENAI_API_KEY"] = "your-openai-api-key-here"
# 可选:设置代理等
# os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
# os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
# 2. 定义自定义工具
def search_technical_docs(query: str) -> str:
"""模拟一个技术文档搜索工具。"""
# 这里可以替换为真实的文档检索逻辑(如使用向量数据库)
mock_results = {
"python decorator": "装饰器是修改函数或类行为的函数,使用 @ 语法。",
"fastapi middleware": "FastAPI 中间件可以处理请求和响应,通过 app.add_middleware 添加。",
"langchain agent": "LangChain Agent 通过 LLM 决定调用哪些工具来完成任务。"
}
return mock_results.get(query.lower(), f"未找到关于 '{query}' 的文档。")
def calculate_code_complexity(code_snippet: str) -> str:
"""模拟一个计算代码复杂度的工具。"""
# 这里可以集成真实的复杂度分析库
return f"代码片段分析完成。预估圈复杂度:中等。"
# 将函数包装成 LangChain Tool 对象
tools = [
Tool(
name="TechnicalDocSearch",
func=search_technical_docs,
description="用于搜索技术文档和概念。输入应为一个明确的技术术语或问题。"
),
Tool(
name="CodeComplexityAnalyzer",
func=calculate_code_complexity,
description="分析给定代码片段的复杂度。输入应为一段代码字符串。"
),
]
# 3. 初始化 LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 4. 创建 ReAct Agent
# 使用 LangChain 内置的 ReAct 提示模板
prompt = PromptTemplate.from_template(
"""你是一个技术问答助手。请使用以下工具来回答问题。
工具:
{tools}
使用以下格式:
问题:用户的问题
思考:你需要思考如何逐步解决问题
行动:要使用的工具名称
行动输入:工具的输入
观察:工具返回的结果
...(这个循环可以重复多次)
思考:我现在可以给出最终答案了
最终答案:对用户问题的清晰、完整回答
开始!
问题:{input}
思考:{agent_scratchpad}"""
)
agent = create_react_agent(llm, tools, prompt)
# 5. 创建 Agent Executor 并执行
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True)
# 示例问题
question = "Python 装饰器是什么?请用 search 工具查一下,然后分析一段使用装饰器的代码的复杂度。"
result = agent_executor.invoke({"input": question})
print("Agent 回答:", result["output"])
执行步骤说明:
- 环境准备:安装
langchain,langchain-openai等包,并设置OPENAI_API_KEY。 - 工具定义:将自定义功能(如搜索、计算)包装成
Tool对象,并给出清晰的描述。 - 初始化 LLM:选择模型(如
gpt-3.5-turbo)并设置参数。 - 构建 Agent:使用
create_react_agent结合提示模板、LLM 和工具列表创建 Agent。 - 执行与测试:通过
AgentExecutor运行,传入用户问题,Agent 会自动规划思考、调用工具并生成最终答案。
将上述代码保存为 tech_agent_demo.py,安装依赖后运行即可看到一个能自动调用工具的技术问答 Agent。
学习时间:
- 第 1 周:Agent 概念与 LangChain 基础学习
- 第 2 周:深入 LangChain Agent 模块,完成小练习
- 第 3 周:实战项目设计与开发
- 第 4 周:项目完善、测试与博客产出
学习产出:
- 技术笔记 4 篇
- CSDN 技术博客 2 篇(Agent 入门、LangChain 实战)
- 一个可运行的 Agent Demo 项目
更多推荐

所有评论(0)