0Pricing
AI Agents · 课时

支持函数调用的开放模型(Hermes、Functionary)

大多数基础开放模型都不擅长工具调用——Hermes 和 Functionary 针对此功能进行了微调。

支持函数调用的开放模型(Hermes、Functionary) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

基础模型无法可靠地进行工具调用

原始的 Llama、Mistral 或 Qwen 基础模型可以通过提示词要求其“返回类似 {...} 的 JSON”,但它们经常会生成格式错误的输出、遗漏参数,或虚构工具。

函数调用微调模型可以解决这个问题。

Hermes 系列

NousResearch Hermes 模型是顶尖的函数调用微调模型:

  • Hermes 3 Llama 3.1 8B / 70B
  • 工具调用准确率高
  • 采用类似 Apache 的宽松许可证

Functionary

MeetKai Functionary 模型专门针对 OpenAI 兼容的函数调用进行训练:

  • Functionary v3(基于 Llama 3.1)
  • 支持并行工具调用
  • 可在 HuggingFace 和 Together AI 上使用

Llama 3.1+ 原生工具使用

近期的 Llama 3.1、Llama 3.3 和 Llama 4 指令版本都具备内置的工具调用能力。对于许多任务来说,这些能力已经足够;对于困难场景,请使用 Hermes / Functionary。

Qwen 2.5 工具使用

Qwen 2.5 具备强大的原生工具调用能力,可以与闭源模型竞争。对于自托管的多语言智能体,它通常是默认选择。

调用支持工具的开放模型

任何 OpenAI 兼容服务器(Ollama、vLLM、Together AI)都接受相同的 tools 参数:

from openai import OpenAI
client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')

tools = [{'type': 'function', 'function': {
    'name': 'get_weather',
    'description': 'Current weather',
    'parameters': {'type': 'object', 'properties': {'city': {'type': 'string'}}, 'required': ['city']}
}}]

response = client.chat.completions.create(
    model='hermes3:8b',
    messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
    tools=tools
)

仔细验证输出

开放模型的工具调用失败率高于闭源模型。请始终做到:

  • 在 try/except 中解析 JSON
  • 使用 Pydantic 进行验证
  • 添加修复循环

使用 Outlines 强制工具调用

如果要在开放模型上获得有保证的结构化输出,请使用 Outlines 进行语法约束解码:

import outlines
model = outlines.models.transformers('meta-llama/Llama-3.1-8B-Instruct')
generator = outlines.generate.json(model, ToolCall)
result = generator(prompt)

Hugging Face TGI 工具使用

TGI 支持许多开放模型使用 OpenAI 风格的工具,可直接替换。

基准测试工具使用质量

工具调用可以通过以下基准进行评估:

  • 伯克利函数调用排行榜(BFCL)——权威排名
  • ToolBench——覆盖范围更广
  • API-Bank——多工具场景

合理的默认技术栈

大多数团队最终采用的组合:

  • Llama 3.1 8B Instruct——用于通用智能体工作
  • Qwen 2.5 Coder——用于编码智能体
  • Hermes 3——用于大量使用工具的智能体
  • Outlines 或 Instructor——保证结构化输出

通过托管供应商运行

如果不想管理基础设施:Together AI、Fireworks 和 Anyscale 通过 OpenAI 兼容的 API 托管 Hermes、Functionary、Llama 和 Qwen。质量相近时,价格低于 OpenAI。

成本对比示例

每百万个令牌的大致成本(2025 年年中):

  • GPT-4o:输入 $2.50,输出 $10
  • Llama 3.1 70B(Together AI):输入 $0.88,输出 $0.88
  • 自托管 Llama 8B:$0(只需承担您的电费)

为什么使用函数调用微调模型

为什么要使用 Hermes 或 Functionary 进行工具调用,而不是使用基础版 Llama?

回顾

近期的 Llama / Qwen 已具备不错的原生工具使用能力。若要获得更高的可靠性,请使用 Hermes 或 Functionary。再结合 Outlines/Instructor,即可保证输出结构。

常见问题解答

「支持函数调用的开放模型(Hermes、Functionary)」课时是免费的吗?

是的 — 「支持函数调用的开放模型(Hermes、Functionary)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「支持函数调用的开放模型(Hermes、Functionary)」这节课中我会学到什么?

大多数基础开放模型都不擅长工具调用——Hermes 和 Functionary 针对此功能进行了微调。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「支持函数调用的开放模型(Hermes、Functionary)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Llama、Mistral 与 Qwen 概览
  2. 使用 Ollama 和 llama.cpp 运行本地模型
  3. 支持函数调用的开放模型(Hermes、Functionary)
  4. 取舍:延迟、成本、能力
← 返回 AI Agents