零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

陈默
陈默
发布时间:2026-10-23| 7人浏览过
原创

想要让AI不仅会聊天,还能帮你查天气、算数学题甚至操作软件?这就是AI智能体(AI Agent)的核心能力。与传统对话机器人不同,智能体具备“思考-规划-行动”的闭环逻辑。通过本教程,你将使用Python和主流框架LangChain,在本地环境中搭建一个能调用外部工具的基础智能体,直观感受从静态模型到动态代理的转变。完成后的智能体可以根据用户问题,自主决定是使用计算器还是搜索网络,并返回准确结果。

零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

AI智能体通过LLM进行规划,调用工具执行任务并反馈结果

智能体的本质是大语言模型(LLM)作为大脑,配合工具(Tools)作为手脚。LLM负责理解意图并生成执行计划,工具负责执行具体任务并将结果反馈给LLM。这种架构让AI突破了训练数据的时效性和知识边界。开始之前,请确保电脑已安装Python 3.8及以上版本,并准备好一个可用的大模型API密钥(如OpenAI、DeepSeek或国内其他兼容OpenAI格式的模型服务)。

1. 初始化项目环境与依赖

首先创建一个独立的项目文件夹,并在终端中初始化虚拟环境,以避免依赖冲突。接着安装核心库langchain和langchain-openai,前者提供智能体构建框架,后者用于连接兼容OpenAI接口的大模型。如果需要联网搜索功能,还需安装duckduckgo-search作为免费搜索工具源。

mkdir ai-agent-demo
cd ai-agent-demo
python -m venv venv
source venv/bin/activate  # Windows用户请使用 venv\Scripts\activate
pip install langchain langchain-openai duckduckgo-search

安装完成后,在项目根目录创建.env文件,用于安全存储API密钥。在文件中写入OPENAI_API_KEY=你的实际密钥。注意,即使使用的是其他兼容OpenAI格式的国内模型,也通常沿用此环境变量名或通过代码指定Base URL。

零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

1. 初始化项目环境与依赖

2. 连接大语言模型并测试响应

在代码中引入必要的模块,并初始化大语言模型实例。这里以OpenAI的gpt-3.5-turbo或gpt-4为例,若使用其他模型,只需修改model_name和base_url参数。编写一个简单的测试函数,发送一条指令并打印返回内容,确保网络连接和密钥配置正确。

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

load_dotenv()

# 初始化LLM
llm = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0,
    openai_api_key=os.getenv("OPENAI_API_KEY")
)

# 测试连接
response = llm.invoke("你好,请简单介绍一下你自己")
print(response.content)

零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

在IDE中编写并运行LLM连接测试代码

运行上述代码,若终端输出了模型的自我介绍,说明基础连接已成功。这里的temperature=0设置是为了让模型输出更稳定,减少随机性,这对于后续智能体执行精确任务非常重要。

3. 定义智能体可调用的工具

智能体的强大之处在于能使用工具。我们需要定义两个基础工具:一个用于执行数学计算,另一个用于联网搜索。在LangChain中,可以使用@tool装饰器快速将Python函数转换为智能体可识别的工具对象。每个工具都需要清晰的名称和描述,因为LLM会根据描述来决定何时调用它。

from langchain.agents import tool
from duckduckgo_search import DDGS

@tool
def calculator(expression: str) -> str:
    """当需要执行数学计算时使用此工具。输入应为合法的数学表达式字符串,如 '2 + 2' 或 '5 * 10'。"""
    try:
        # 注意:生产环境请使用更安全的计算库,此处仅为演示
        return str(eval(expression))
    except Exception as e:
        return f"计算错误: {str(e)}"

@tool
def web_search(query: str) -> str:
    """当需要获取实时新闻、天气或未知事实时使用此工具。输入应为搜索关键词。"""
    try:
        results = DDGS().text(query, max_results=3)
        if not results:
            return "未找到相关结果"
        # 提取前三个结果的标题和摘要
        snippets = [f"{r['title']}: {r['body']}" for r in results]
        return "\n".join(snippets)
    except Exception as e:
        return f"搜索错误: {str(e)}"

tools = [calculator, web_search]

注意工具函数中的文档字符串(docstring),这是LLM理解工具用途的关键。例如,明确告诉模型“当需要执行数学计算时使用此工具”,能显著提高调用的准确率。将定义好的工具放入列表tools中,供后续智能体加载。

4. 组装智能体并执行任务

现在将LLM和工具组合成一个完整的智能体。使用LangChain提供的create_tool_calling_agent创建代理,并通过AgentExecutor管理执行循环。这个执行器会不断检查模型的输出:如果模型决定调用工具,执行器就运行工具并将结果返回给模型;如果模型认为信息已足够,则生成最终回答。

from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate

# 定义提示词模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个乐于助人的AI助手。你可以使用提供的工具来回答问题。如果工具无法解决问题,请根据已有信息回答。"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}")
])

# 创建智能体
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 测试智能体
question = "今天北京的天气怎么样?另外,计算一下25乘以4的结果。"
result = agent_executor.invoke({"input": question})
print(result["output"])

零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

智能体在终端中展示的思考与工具调用日志

运行代码后,观察终端输出。你会看到智能体的“思考过程”:它首先识别出两个需求,分别调用web_search查询天气,调用calculator计算乘法,最后整合信息输出。verbose=True参数让我们能看到中间的决策日志,这对于调试智能体行为非常有用。

5. 验证效果与优化方向

检查最终输出是否准确包含了天气信息和计算结果。如果智能体未能正确调用工具,通常是因为工具描述不够清晰或模型参数设置不当。你可以尝试修改问题,如询问“最近的人工智能新闻”,验证搜索工具的有效性;或提出复杂计算,验证计算工具的稳定性。

零基础搭建AI智能体:从LLM接入到工具调用的完整学习路径

智能体整合工具结果后的最终自然语言回答

至此,一个基础的AI智能体已搭建完成。它不再是单纯的文本生成器,而是具备了感知环境和执行动作的能力。后续你可以在此基础上添加更多工具,如数据库查询、文件读写或API接口调用,逐步构建出能解决复杂工作流的专属智能体。保留好当前的代码结构,每新增一个功能,只需按照第3步的格式定义新工具并加入列表即可,无需重构核心逻辑。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。