> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 用本地小模型构建AI代理
- URL: https://www.hubwiz.com/blog/building-ai-agents-with-local-slms/
- Published: 2026-05-19T00:46:40.000Z
- Updated: 2026-10-13T16:00:51.000Z
- Description: 在本文中，你将学习如何使用小语言模型在自有机器上构建一个完全功能的AI代理，无需互联网连接，也无需API费用。
- Author: admin
- Tags: AGENT, SLM, #Import 2026-10-14 14:41

在本文中，你将学习如何使用小语言模型在自有机器上构建一个完全功能的AI代理，无需互联网连接，也无需API费用。

我们将涵盖的主题包括：

- 什么是AI代理和小语言模型，以及为什么在本地运行它们是一个实用且注重隐私的选择。
- 如何设置Ollama和所需的Python库，以便在自己的硬件上运行语言模型。
- 如何逐步构建本地AI代理，添加工具和对话记忆使其真正有用。

## 1、简介

构建自己的AI代理曾经让人觉得只有大型科技公司才能做到。你需要昂贵的云端API、大型服务器和深厚的资金。这个局面已经彻底改变了。

今天，包括刚入门的开发者在内的所有人，都可以在自己的电脑上构建完全功能的AI代理，无需互联网连接（初始设置和配置之后）且无需担心API账单。这得益于新一代小语言模型（SLM）：紧凑、高效的AI模型，具有足够的推理、规划和响应能力，同时又足够轻量，可以在标准笔记本电脑或台式机上运行。

在本文中，你将学习如何使用流行的工具Ollama和LangChain/LangGraph从零开始构建本地AI代理。无论你是刚开始熟悉Python的初学者，还是探索AI的中级开发者，这篇文章都是为你而写的。

## 2、什么是AI代理？

[AI代理](https://www.ibm.com/topics/ai-agents?ref=hubwiz.com)是一个使用语言模型来思考、做出决策并采取行动以完成目标的程序。与只回复消息的普通聊天机器人不同，代理可以：

- 将任务分解为更小的步骤
- 决定下一步使用哪个工具或行动
- 用一个步骤的结果来指导下一步
- 持续运行直到任务完成

把它想象成计算器和助手之间的区别。计算器等待你的输入。助手思考你的目标，想出步骤，并逐一执行。

一个基本的代理有三个部分：

| 部分          | 功能                         |
| ----------- | -------------------------- |
| 大脑（LLM/SLM） | 理解输入并决定做什么                 |
| 记忆          | 存储对话中较早的上下文                |
| 工具          | 代理可以调用的外部函数（如搜索、计算器、文件读取器） |

## 3、什么是小语言模型？

[小语言模型（SLM）](https://huggingface.co/blog/smollm?ref=hubwiz.com)是在大量文本数据上训练的AI模型——类似于GPT-4等大型模型——但被设计为更轻量化。

GPT-4可能有数千亿个参数，而Phi-3、Mistral 7B或Llama 3.2（3B）等SLM的参数量在10亿到130亿之间。这使它们足够小，可以在配备现代CPU或消费级GPU的普通计算机上运行。

以下是一些值得了解的流行SLM：

| 模型             | 开发者        | 大小   | 最适合        |
| -------------- | ---------- | ---- | ---------- |
| Phi-3 Mini     | 微软         | 3.8B | 快速推理，低内存   |
| Mistral 7B     | Mistral AI | 7B   | 通用任务，指令遵循  |
| Llama 3.2 (3B) | Meta       | 3B   | 平衡的性能      |
| Gemma 2B       | Google     | 2B   | 轻量级，对初学者友好 |

如果你不确定从哪个模型开始，选择Phi-3 Mini或Llama 3.2（3B）。它们文档齐全，对初学者友好，在本地机器上表现良好。

## 4、为什么要本地运行AI代理？

你可能会想：为什么不直接用OpenAI API或Google Gemini？

好问题。以下是本地SLM值得你关注的原因：

- **无API费用。** 基于云的模型按token或按请求收费。如果你的代理运行数千次查询，费用会快速累积。本地模型在设置后免费运行。
- **完全隐私。** 当你将数据发送到云端API时，数据会离开你的机器。对于医疗记录、私人业务数据或个人文件等敏感数据，这是一个真正的风险。本地模型将所有数据保留在你的设备上。
- **离线工作。** 没有互联网？没问题。你的代理继续运行。
- **你掌控一切。** 你选择模型、设置和行为。没有速率限制，没有使用策略阻碍你。
- **适合学习。** 在本地运行模型迫使你理解所有东西如何协同工作，这会让你成为一个更好的开发者。

## 5、你将使用的工具

以下是本指南使用的三个工具的简要概述：

### Ollama

[Ollama](https://ollama.com/?ref=hubwiz.com)是一个免费的开源工具，可以用一条命令下载和运行本地机器上的语言模型。它在后台处理所有复杂的设置，让你专注于构建。

### LangChain / LangGraph

[LangChain](https://www.langchain.com/?ref=hubwiz.com)是一个流行的语言模型应用构建框架。[LangGraph](https://langchain-ai.github.io/langgraph/?ref=hubwiz.com)是LangChain的扩展，帮助你构建代理工作流，使用基于图的结构定义代理如何逐步思考和行动。

## 6、设置环境

在编写代理代码之前，你需要设置工具。

### 第一步：安装Ollama

前往 [ollama.com](https://ollama.com/?ref=hubwiz.com) 下载适合你操作系统的安装程序（Windows、Mac或Linux）。安装完成后，打开终端并拉取模型：

```
ollama pull phi3

```

这会将Phi-3 Mini模型下载到你的机器上。要确认它工作正常，运行：

```
ollama run phi3

```

你应该看到一个可以直接与模型对话的提示符。输入 `/bye` 退出。

### 第二步：安装Python库

创建虚拟环境并安装所需的包：

```
python -m venv agent-env

```

对于Linux/Mac：

```
source agent-env/bin/activate

```

在Windows上：

```
agent-env\Scripts\activate

```

安装所需的库：

```
pip install langchain langchain-ollama langgraph

```

你需要Python 3.9或更高版本。用以下命令检查版本：

```
python --version

```

## 7、构建你的第一个本地AI代理

现在到了激动人心的部分。让我们构建一个可以回答问题并使用基本工具——计算器的简单代理。

在你的 `agent.py` 文件中，粘贴以下代码：

```python
from langchain_ollama import OllamaLLM
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import tool
from langchain import hub

# Step 1: Load the local model via Ollama
llm = OllamaLLM(model="phi3")

# Step 2: Define a simple tool -- a calculator
@tool
def calculator(expression: str) -> str:
    """Evaluates a basic math expression. Input should be a valid Python math expression."""
    try:
        result = eval(expression)
        return str(result)
    except Exception as e:
        return f"Error: {str(e)}"

# Step 3: Bundle tools together
tools = [calculator]

# Step 4: Load a ReAct prompt template (Reason + Act pattern)
prompt = hub.pull("hwchase17/react")

# Step 5: Create the agent
agent = create_react_agent(llm=llm, tools=tools, prompt=prompt)

# Step 6: Wrap in an executor to handle the agent loop
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Step 7: Run the agent
response = agent_executor.invoke({
    "input": "What is 245 multiplied by 18, and then divided by 5?"
})

print("\n--- Agent Response ---")
print(response["output"])

```

以下是发生的事情：

- `OllamaLLM` 类连接到你本地运行的Phi-3模型。
- `@tool` 装饰器将一个普通的Python函数转换为代理可以调用的工具。
- `create_react_agent` 函数使用[ReAct模式](https://react-lm.github.io/?ref=hubwiz.com)——一种代理推理问题然后使用工具行动的方法，反复执行，直到得到答案。
- `AgentExecutor` 管理推理、行动和观察结果的循环。

运行脚本：

```
python agent.py

```

你将在终端中看到代理的思考过程，然后是最终答案。

## 8、为代理添加记忆和工具

一个真正的代理需要记住对话中早些时候说过的话。以下是如何添加对话记忆和第二个工具——一个简单的知识库查找。

在你的 `agent_with_memory.py` 文件中：

```python
from langchain_ollama import OllamaLLM
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import tool
from langchain.memory import ConversationBufferMemory
from langchain import hub

llm = OllamaLLM(model="phi3")

# Tool 1: Calculator
@tool
def calculator(expression: str) -> str:
    """Evaluates a basic math expression."""
    try:
        return str(eval(expression))
    except Exception as e:
        return f"Error: {str(e)}"

# Tool 2: Simulated knowledge base lookup
@tool
def knowledge_base(query: str) -> str:
    """Looks up information from a local knowledge base."""
    kb = {
        "python": "Python is a beginner-friendly programming language widely used in AI and data science.",
        "ai agent": "An AI agent is a program that uses a language model to reason and take actions.",
        "ollama": "Ollama is a tool for running language models locally on your computer.",
    }
    for key in kb:
        if key in query.lower():
            return kb[key]
    return "No information found for that query."

tools = [calculator, knowledge_base]

# Add memory to track conversation history
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

prompt = hub.pull("hwchase17/react-chat")

agent = create_react_agent(llm=llm, tools=tools, prompt=prompt)

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,
    verbose=True
)

# Multi-turn conversation
print(agent_executor.invoke({"input": "What is an AI agent?"})["output"])
print(agent_executor.invoke({"input": "Now tell me what Ollama is."})["output"])
print(agent_executor.invoke({"input": "Calculate 50 multiplied by 12."})["output"])

```

**注意：** 这里使用 `eval()` 仅用于教学目的，在生产代码中**绝不能**对不受信任的输入使用。

通过 `ConversationBufferMemory`，代理在同一会话中记住你之前的消息。这使它表现得更像一个真正的助手，而不是无状态的聊天机器人。

## 9、需要了解的局限性

使用SLM在本地运行AI代理很强大，但诚实地看待权衡也很重要：

- **较小的模型犯更多错误。** SLM不如GPT-4或Claude那样强大。它们更容易产生幻觉——自信地给出错误答案——尤其是在复杂任务上。
- **速度取决于你的硬件。** 如果你没有GPU，模型可能运行缓慢。根据你的机器，预期每次响应5-30秒。
- **上下文长度有限。** 大多数SLM只能处理较短的对话，然后就会"忘记"早期消息。这是小模型的已知限制。
- **复杂推理更困难。** 多步骤逻辑、高级编码任务或细微的指令可能不如大型云模型那样有效。

**何时使用本地SLM：** 用于原型设计、学习、注重隐私的项目、离线使用场景，以及云端API成本令人担忧的应用。

**何时使用云模型：** 用于需要高准确率、处理复杂任务或同时服务许多用户的生产应用。

## 10、结束语

使用本地小语言模型构建AI代理不再是AI研究人员的专有技能。借助Ollama和LangChain/LangGraph等工具，任何拥有正常工作的Python环境的开发者都可以在一小时内让本地代理运行起来。

深入学习这个领域的最佳方式是动手构建。从本指南中的代码示例开始，换一个不同的模型（我建议你接下来尝试Mistral 7B），不断添加工具，直到你的代理能为你做一些真正有用的事情。

---

原文链接：[Building AI Agents with Local Small Language Models](https://machinelearningmastery.com/building-ai-agents-with-local-small-language-models/?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处

> **这是「Agent / MCP」专题的一部分。**完整地图见：[Agent / MCP / 自动化完全指南](https://www.hubwiz.com/blog/agent-stack/)