背景
随着人工智能技术的快速发展,AI 智能体(AI Agent)的应用场景日益广泛。虽然市面上出现了许多零代码编排平台,但通过代码层面深入理解 AI Agent 的实现原理对于开发者而言至关重要。本文旨在通过简单的教程,帮助读者在本地环境中实现 AI Agent 的 Demo,并探讨其相对于普通大语言模型的优势。
AI Agent 概念解析
普通模型与 AI Agent 的区别
预训练的大语言模型(LLM)通常基于特定的训练数据构建,这些数据往往存在时效性限制(例如截止至 2022-2023 年)。尽管可以通过微调或提示词优化来改善特定场景的表现,但这无法从根本上解决知识库过时或信息不全的问题。当用户询问涉及最新时政、私密数据或未在训练集中的内容时,传统 LLM 往往无法给出准确回答。
AI Agent(人工智能代理)则具备感知环境、决策和执行动作的能力。它不仅能思考,还能调用外部工具(如搜索引擎、计算器、API)来获取实时信息或执行操作。例如,告诉 AI Agent 购买火车票,它可以自主拆解任务:调用 APP 选择日期、调用支付程序下单,无需人类指定每一步细节。
| 特性 | 普通 LLM | AI Agent |
|---|
| 交互方式 | 基于 Prompt 问答 | 基于目标自主规划 |
| 能力边界 | 依赖训练数据知识 | 可调用工具获取实时信息 |
| 决策过程 | 直接生成回复 | 独立思考 -> 制定计划 -> 执行行动 -> 反馈调整 |
ReAct 框架
AI Agent 的核心工作流通常遵循 ReAct(Reasoning + Acting)框架。Agent 会根据任务进行推理(Thought),决定采取什么行动(Action),观察行动结果(Observation),最终得出答案(Final Answer)。这种循环机制使得 Agent 能够处理复杂的多步任务。
技术选型与环境搭建
本文将采用 LangChain 框架结合 Ollama 本地模型来实现 AI Agent。LangChain 提供了构建 LLM 应用所需的模块,降低了开发门槛;Ollama 则是一个轻量级的本地大模型运行工具,适合离线调试和隐私保护。
1. 安装 Python 依赖
确保已安装 Python 环境(建议 3.8+)。在终端中安装必要的库:
pip install langchain-community
pip install serpapi
注意:serpapi 用于提供联网搜索功能,需确保网络通畅。
2. 启动本地大模型
使用 Ollama 下载并运行 Qwen2 模型(对中文支持较好):
ollama run qwen2:7b
3. 初始化 Agent
在 PyCharm 或其他 IDE 中创建 Python 文件,导入相关模块并配置环境变量。为了安全起见,建议使用 .env 文件或系统环境变量存储 API Key,避免硬编码。
代码示例
以下代码展示了如何加载本地模型、配置搜索工具并初始化 Agent:
from langchain_community.llms import Ollama
from langchain_community.agent_toolkits.load_tools import load_tools
from langchain.agents import initialize_agent, AgentType
import os
os.environ["SERPAPI_API_KEY"] = "your_api_key_here"
llm = Ollama(model="qwen2:7b")
tools = load_tools(["serpapi"], llm=llm)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True
)
query = "请告诉我 2024 年中国男足参加美加墨世界杯 18 强赛的最新名单,通过表格方式给出所有人员的名单"
result = agent.run(query)
print(result)
4. 运行日志分析
开启 verbose=True 后,控制台会打印 Agent 的完整思考链(Chain of Thought)。输出将包含以下关键步骤:
- Thought: Agent 分析当前状态,决定需要搜索信息。
- Action: 选择工具(Search)并输入查询词。
- Observation: 获取搜索结果返回的内容。
- Final Answer: 综合信息生成最终回答。
这种透明的决策过程有助于开发者调试 Agent 的逻辑错误,例如工具调用失败或信息提取偏差。
效果对比:Agent vs 纯 LLM
若直接使用 Ollama 的 Qwen2 模型提问同一问题,由于缺乏实时联网能力,模型只能基于训练数据中的历史信息进行回答,可能会出现事实性错误或幻觉(Hallucination)。而引入 Agent 机制后,通过实时搜索工具,模型能够获取最新数据并整理成结构化表格,显著提升了回答的准确性和实用性。
总结与扩展
通过本教程,我们成功在本地构建了一个具备联网搜索能力的 AI Agent。这不仅验证了 LangChain 与 Ollama 结合的可行性,也展示了 Agent 在处理动态信息时的优势。
后续扩展方向
- 更多工具集成:除了搜索,还可以集成维基百科、Wolfram Alpha(数学计算)、数据库查询等工具,增强 Agent 的专业能力。
- 记忆机制:引入 Memory 组件,让 Agent 在多轮对话中保持上下文记忆,提升交互体验。
- 多模态支持:结合图像识别工具,使 Agent 能够'看懂'图片并做出决策。
掌握 AI Agent 的开发逻辑,有助于开发者跳出单纯调用 API 的思维局限,设计出更具自主性和实用性的智能应用。