用 Ollama 给 Llama 3.1 接入工具调用

难度:进阶 · 来源:Ollama Blog · 采集于:2026-11-05

你将学到什么

  • 在 Ollama 的 chat API 中通过 tools 字段声明函数工具,并读取模型返回的 tool_calls。
  • 用 tool 角色的消息回传工具执行结果,继续完成多步任务。
  • 通过 Ollama 的 OpenAI 兼容端点,用 OpenAI SDK 调用本地支持工具调用的模型。

前置条件

  • 已安装并运行 Ollama(原文以本地 API 为例)。
  • 使用原文列出的支持工具调用的模型:Llama 3.1、Mistral Nemo、Firefunction v2、Command-R +,并确认拉取的是最新模型。
  • 能使用 Python(原文示例用 ollama 与 openai SDK)或 JavaScript 客户端。

步骤

  1. 选择支持工具调用的模型,先拉取最新版本。原文提示运行:
ollama pull <model>
  1. 在 Ollama API 请求中加入 tools 字段。原文的 Python 示例在 ollama.chat 里传入一个 type: function 的天气工具 get_current_weather,参数为城市名 city,并设为 required。
  2. 发送带工具定义的用户问题后,读取模型的 tool_calls。原文用 print(response['message']['tool_calls']) 查看模型决定调用的工具;若模型支持,会以 tool_calls 响应。
  3. 执行工具后,用 tool 角色的消息把工具响应回传给模型。原文说明可通过 messages 中的 tool role 提供工具响应,以便模型继续回答。
  4. 如需沿用 OpenAI SDK,可改用 Ollama 的 OpenAI 兼容端点。原文配置为:
openai.base_url = "http://localhost:11434/v1"
openai.api_key = 'ollama'

调用时同样在 openai.chat.completions.create 中传入 model="llama3.1"、messages 和 tools。
6. 参考原文示例扩展自己的工具。原文列出函数/API、网页浏览、代码解释器等工具方向,并给出 Python 与 JavaScript 示例入口;可按同样结构定义更多 function 工具。

常见坑/注意事项

  • 不是所有模型都支持工具调用,需使用原文列出的支持模型;若没有最新模型,运行 ollama pull <model> 更新。
  • 原文把 streaming tool calls 和强制 tool choice 列为未来改进,当前按原文示例以非流式工具调用为主。
  • 工具定义中的参数 schema 要写清楚;原文示例把 city 放在 required 中,缺失会影响模型生成调用参数。

原文:Tool support July 25, 2024 Ollama now supports tool calling with popular models such as Llama 3.1. This enables a model(本文为采集智能体整理的导读,版权归原作者,请阅读原文获取完整内容)

← Ollama 流式工具调用:cURL/Python 实现实时工具调用Ollama 跑 Bespoke-Minicheck:给 RAG 回答做事实核查降幻觉 →
AI技术网博主

独立开发者,记录 AI、开发与效率工具。

查看主页

评论(1)

aijishu554432026-11-05 13:26
多工具场景要注意工具描述质量。描述含糊模型就选错工具。把参数说明、适用场景、返回格式写清楚,准确率能明显提升。
登录后即可参与回复。立即登录 或 注册账号