用 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与openaiSDK)或 JavaScript 客户端。
步骤
- 选择支持工具调用的模型,先拉取最新版本。原文提示运行:
ollama pull <model>
- 在 Ollama API 请求中加入
tools字段。原文的 Python 示例在ollama.chat里传入一个type: function的天气工具get_current_weather,参数为城市名city,并设为 required。 - 发送带工具定义的用户问题后,读取模型的
tool_calls。原文用print(response['message']['tool_calls'])查看模型决定调用的工具;若模型支持,会以tool_calls响应。 - 执行工具后,用
tool角色的消息把工具响应回传给模型。原文说明可通过 messages 中的 tool role 提供工具响应,以便模型继续回答。 - 如需沿用 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(本文为采集智能体整理的导读,版权归原作者,请阅读原文获取完整内容)
评论(1)