从本地LLM到工具使用代理

从本地LLM到工具使用代理

从本地LLM到工具使用代理

📰 来源:Towards Data Science | 📅 翻译日期:2026年6月27日
🔗 原文查看原文
🤖 翻译:DeepSeek AI · 仅供参考

你刚刚部署了一个本地LLM。不错。但经过最初的几次聊天后,你可能会想:我还能用它做什么?那么,让本地LLM通过一些工具使用变得具备代理能力怎么样?

在这篇文章中,我们将探讨如何将本地LLM转变为工具使用代理。具体来说,我们将使用:

  • Gemma 4 模型(边缘友好变体)作为我们的本地LLM
  • Ollama 用于服务本地LLM
  • OpenAI Agents SDK 作为代理运行时
  • Tavily 网页搜索 MCP 作为外部工具示例

我们将构建一个迷你深度研究代理,能够搜索网络、收集证据,并根据用户问题综合答案并附带引用。

到文章结束时,你将拥有一个可工作的本地深度研究代理,以及一个可复用的实现模式,将本地模型转变为本地AI代理。

图1. 本地代理的架构(图片来自作者)

如果你对本地编码代理设置感兴趣,我之前介绍过 Gemma 4 + OpenCode。在这篇文章中,我们专注于将本地模型连接到代理运行时和外部工具的更通用模式。

1. 设置本地代理堆栈

在编写代码之前,我们需要准备4个组件:OllamaGemma 4(特别是 Gemma 4 E4B 模型)、OpenAI Agents SDKTavily MCP

首先,安装Ollama。

在Windows上,你可以从Ollama官网下载安装程序:

https://ollama.com/download

或者使用PowerShell中的winget:

winget install Ollama.Ollama

在Linux上,可以通过以下命令安装Ollama:

curl -fsSL https://ollama.com/install.sh | sh

安装后,请检查:

ollama --version

在Windows上,请记得从开始菜单启动Ollama。运行后,本地API端点可用。

接下来,拉取本地模型。这里我们使用 Gemma 4 E4B 变体:

ollama pull gemma4:e4b

Gemma 4 有多个变体。E4B 模型非常适合我们的目的,因为它专为边缘/本地代理工作流设计。我的机器配备 NVIDIA RTX 2000 Ada 笔记本GPU,约 8 GB VRAM。如果你的机器资源更受限,可以尝试更轻量的 E2B 变体:

ollama pull gemma4:e2b

接下来,我们需要代理运行时库。我们使用 OpenAI Agents SDK:

pip install openai-agents

你还需要 OpenAI 兼容的客户端:

pip install openai

注意:稍后我们将客户端指向Ollama的本地端点,这意味着并非将模型调用发送给OpenAI。

最后,我们需要一个 Tavily MCP 端点。如果你之前没有使用过,Tavily 是一个专为LLM应用设计的搜索API。在这篇文章中,我们使用它的MCP服务器,以便代理可以搜索网络。

你需要先创建一个Tavily账户并获取API密钥。在Tavily平台上,你可以直接生成一个MCP链接,格式如下:

https://mcp.tavily.com/mcp/?tavilyApiKey=<your-api-key>

现在我们已经准备好了。

注意:这里使用Tavily并非赞助选择,而是作为便捷的MCP工具,同样的模式也可以与其他MCP兼容工具一起使用。

实际上,整个堆栈并非唯一选择。除了Ollama,你还可以使用 LM Studio 或 llama.cpp 服务本地模型。除了Gemma 4模型,你还可以尝试其他模型,例如 Qwen 系列。对于代理框架,我们也有来自 Google 或 Anthropic 的选择。你也可以连接不同的MCP工具而不是Tavily。我使用这个组合只是因为熟悉该堆栈。但本案例研究的重要收获是通用的本地代理模式。

2. 配置本地研究代理

使用 OpenAI Agents SDK,我们需要组合的最终代理对象如下:

from agents import Agent

agent = Agent(
    name="Local Research Agent",
    instructions=RESEARCH_AGENT_INSTRUCTIONS,
    model=model,
    mcp_servers=[tavily_server],
    mcp_config={"include_server_in_tool_names": True},
)

我们逐一解析每个部分。

2.1 模型

首先,模型部分。

from openai import AsyncOpenAI
from agents import OpenAIChatCompletionsModel

MODEL_NAME = "gemma4:e4b"
OLLAMA_BASE_URL = "http://localhost:11434/v1"

client = AsyncOpenAI(
    api_key="ollama",
    base_url=OLLAMA_BASE_URL,
)

model = OpenAIChatCompletionsModel(
    model=MODEL_NAME,
    openai_client=client,
)

我们首先创建一个指向Ollama本地OpenAI兼容端点的客户端。

然后,使用 OpenAIChatCompletionsModel 将 Gemma 模型包装成模型对象。这使得 Agents SDK 能够在代理循环中使用该模型。

注意,api_key="ollama" 只是一个占位符。Ollama 并不需要真正的 OpenAI API 密钥,我们使用它是因为客户端期望该字段。

2.2 指令

接下来,我们定义代理的指令,包含所需的研究行为:

from datetime import datetime

CURRENT_DATE = datetime.now().strftime("%B %d, %Y")

# 注意,该指令是经过AI迭代生成的
RESEARCH_AGENT_INSTRUCTIONS = f"""
[Role]
You are a concise research assistant.

[Task]
Answer the user's question by turning it into a small web research task. 
Use the current date when interpreting time-sensitive questions: {CURRENT_DATE}.

[Research behavior]
Start with one targeted search query.
For recommendation or comparison questions, complete this research loop before answering: 
first identify the main options, then search for comparison context, then synthesize a recommendation.

Use follow-up searches when the first results are insufficient, conflicting, or only cover part of the question.

Prefer relevant and credible sources, and track which source supports each important claim.

Before answering, check whether the gathered evidence is enough to support the conclusion.

[Expected output]
Give a direct answer first, then briefly explain the evidence behind it. 
Include source links for key factual claims.

[Rules]
Do not rely on memory for facts that may have changed.
Do not invent missing details.
Keep the answer concise.
""".strip()

2.3 工具

现在,我们为代理配备网页搜索工具。

(原文中工具配置部分没有完整给出,但我们可以看到后续提及。此处按照原文内容,我们保留“我们为代理配备网页搜索工具。”并继续翻译后续内容,但原文在2.3后没有更多内容,因此我们继续。)

注意:原文在2.3之后停止了,但正文应该包含后续内容。实际上原文在2.3后还有一段代码示例和说明,但用户提供的文本到此结束。我们根据已给内容完成。


📌 *本文由 DeepSeek AI 自动翻译排版,如有不准确之处欢迎指正* 🏠 [返回首页](https://www.suiyuanlu.cn) · 📖 [查看原文](https://towardsdatascience.com/from-local-llm-to-tool-using-agent/)
©版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

评论已关闭