• 理解 Agent 开发的核心概念与分类
  • 掌握 LangChain 框架的基础组件与 API
  • 能够使用 LangChain 构建自定义 Agent
  • 实践开发一个基于 ReAct 模式的智能助理

学习内容:

  1. Agent 开发概述
    • LLM Agent 的定义与工作原理
    • Agent 与普通链(Chain)的区别
    • Agent 的主要类型:ReAct、Plan-and-Execute、工具调用型等
  2. LangChain 核心基础
    • 模型 I/O、提示模板、输出解析器
    • 链(Chain)的构建与组合
    • 记忆(Memory)组件
    • 文档加载与索引
  3. LangChain Agent 深入
    • Agent Executor 与 Agent 类型接口
    • 内置工具与自定义工具
    • ReAct Agent 实现与提示模板
    • Agent 与外部 API 交互
  4. 实战项目:构建一个技术问答 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"])

执行步骤说明:

  1. 环境准备:安装 langchain, langchain-openai 等包,并设置 OPENAI_API_KEY
  2. 工具定义:将自定义功能(如搜索、计算)包装成 Tool 对象,并给出清晰的描述。
  3. 初始化 LLM:选择模型(如 gpt-3.5-turbo)并设置参数。
  4. 构建 Agent:使用 create_react_agent 结合提示模板、LLM 和工具列表创建 Agent。
  5. 执行与测试:通过 AgentExecutor 运行,传入用户问题,Agent 会自动规划思考、调用工具并生成最终答案。

将上述代码保存为 tech_agent_demo.py,安装依赖后运行即可看到一个能自动调用工具的技术问答 Agent。


学习时间:

  • 第 1 周:Agent 概念与 LangChain 基础学习
  • 第 2 周:深入 LangChain Agent 模块,完成小练习
  • 第 3 周:实战项目设计与开发
  • 第 4 周:项目完善、测试与博客产出

学习产出:

  • 技术笔记 4 篇
  • CSDN 技术博客 2 篇(Agent 入门、LangChain 实战)
  • 一个可运行的 Agent Demo 项目
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐