支持Function Call的本地ollama模型对比评测-》开发代理agent

目标是开发支持多个 Function 定义的智能体代理系统


✅ 第一部分:是否支持多个函数(multi-function calling)

模型名称 支持多个函数注册 是否支持函数选择(name 匹配) 是否能生成结构化参数
OpenChat 3.5 / 3.5-0106 ✅(Prompt 支持) ✅(会选择最合适函数)
OpenHermes 2.5 ✅(非常稳定)
OpenOrca-Platypus2 ✅(function_name 识别率高)
DeepSeek-Coder-Instruct ✅(更偏工具能力) ✅(格式更结构化)
Yi-34B-Chat ✅(但中文环境对 prompt 依赖更大)
Mistral-7B-Instruct-v0.2 ⚠️有限支持(可识别但误判多) ⚠️
Command R / R+ ✅(复杂函数选择能力强)

🧠 第二部分:适合智能体(AI Agent)开发的模型对比

模型名称 优势 劣势 推荐用途
OpenHermes 2.5 ✅ 模拟 ChatGPT 能力强✅ 支持多函数调度✅ JSON 格式稳定 ❌ 可能对较复杂嵌套结构不稳定 通用 AI Agent 开发、快速原型
OpenChat 3.5 / 3.5-0106 ✅ 兼容性强、结构清晰✅ 非常善于"选择正确函数"✅ 与 ChatGPT 风格相似 ❌ 英文 prompt 响应更准❌ 中文多轮对话略弱 多函数调度+判断型智能体
OpenOrca-Platypus2 ✅ 函数结构响应自然✅ 可与 RAG 配合(搜索后调用) ❌ 对 prompt 格式要求严格 RAG+调用类 Agent,如知识库问答
DeepSeek-Coder-Instruct ✅ 参数封装能力强✅ 特别适合复杂 JSON✅ 在中文环境效果好 ❌ 本体对话能力一般(偏工具型) 工具调度型 Agent(如数据分析、代码生成)
Yi-34B-Chat ✅ 中文支持强✅ 多函数兼容性高✅ 多轮语境判断优于 Mistral ❌ 资源消耗大(部署要求高) 中文环境下的复杂工具调度 Agent
Command R+ ✅ 最接近 GPT-4 Function Calling✅ 可处理复杂依赖链✅ 稳定返回结构化调用意图 ❌ 模型体积大(不适合轻量本地部署) 高级智能体框架、生产级多工具调度

📌 场景推荐表(更详细)

场景 推荐模型 详细理由
🧠 通用智能体(类似 ChatGPT Plugins) OpenHermes 2.5 响应快,格式稳定,调度能力良好
📚 知识问答 + 工具调用 OpenOrca-Platypus2 和向量检索结合效果佳,支持 tool use
🧾 数据查询、API封装类代理 DeepSeek-Coder-Instruct 能准确构造复杂参数,适合内部流程自动化
📦 多函数判断 + 对话型智能体 OpenChat 3.5-0106 善于判断何时调用哪个函数,语义理解好
🌏 中文业务智能体(中文场景) Yi-34B-Chat 中文指令理解优秀,适合中文问答、工具调度
🧠 多步推理 + 工具链代理 Command R / R+ 适合多步骤 function chain 场景,极高结构化支持度(但资源大)

🛠 开发建议:

如果你打算本地部署并构建一个「多工具调度 + 推理判断 + 状态维护」的智能体,推荐如下组合:

🚀 首选组合
  • 模型:OpenChat 3.5-0106 / OpenHermes 2.5

  • 理由:兼容性好,响应稳定,支持 Function 调用 prompt,能模拟"调用哪个函数"的思考

📚 增强功能组合(支持数据分析、代码)
  • 模型:DeepSeek-Coder-Instruct

  • 适合构造复杂函数结构,如图表生成、数据库查询等

🌏 中文语境增强
  • 模型:Yi-34B-Chat

  • 用于提升中文语义判断、提示理解、对话链处理

是否可以在分析和回答\对话的时候使用不同模型已达到更好效果?

模型是否可以「搜索后调用函数」?

可以,但效果好不好,取决于它是否能理解并正确处理以下三点

🔍 1. 先"判断是否需要搜索"

  • **优质模型(如 OpenOrca、OpenHermes、OpenChat)**可以根据 prompt 里的"未能直接回答、是否调用函数"来自动决定是否调用。

  • **较弱模型(如普通 Mistral)**会更依赖 prompt 明确指令,比如"请调用 searchDocs() 查询资料"。


🧠 2. 搜索结果+上下文合并后,是否能自动调用函数

  • OpenOrca-Platypus2 是目前社区反馈在 "读完 context 后发起函数调用" 做得最自然的模型之一。

  • OpenChat 3.5 和 Hermes 2.5 也能实现这个流程,但提示词需要设计得更清晰。

你需要把 RAG 的搜索结果插入在 prompt 前,告诉模型"你刚刚查到的资料如下......是否需要调用某个函数?"------这个 prompt 设计是关键。


🛠 举个例子:

你是一个智能助手,有访问工具的能力。 以下是你在知识库中查到的资料: 《香薰生产 SOP》: 1. 原料必须先检验。 2. 所有批次都要称重记录。 3. 灭菌需符合 GB 标准。 现在的问题是:我需要准备一批香薰,能帮我安排流程并调用相关服务吗?

如果模型支持 function calling,它就会基于知识库的 context 自动发起像:

{ "function_call": { "name": "schedule_production", "arguments": "{\"product\": \"香薰\", \"steps\": [\"检验\", \"称重\", \"灭菌\"]}" } }


✅ Q2:是否可以在 不同任务阶段切换模型 使用?

✔️ 技术上可以 ,而且在 Agent 系统中是高级应用方式之一,叫做 Multi-Agent 或 Hybrid Model 架构。

例如你可以这么设计:

阶段 使用模型 理由
📥 用户输入理解 OpenChat 3.5 自然语言理解、判断是否调用函数
🔍 RAG 检索与摘要 DeepSeek-Coder 处理 JSON、向量检索后信息压缩能力强
🔧 函数构造 OpenHermes 2.5 更擅长输出符合工具调用结构
🗣️ 中文对话反馈 Yi-34B-Chat 中文环境下表现稳定,逻辑清晰

不过,这需要构建一个"中控逻辑",决定什么时候切模型,什么时候聚合输出。


🔍 小结:

是否可用搜索后调用函数 是否推荐
OpenOrca-Platypus2 ✅ 最推荐
OpenHermes 2.5 ✅ 可用,稍强 prompt 设计要求
OpenChat 3.5 ✅ 语义理解强,判断能力优
DeepSeek-Coder ✅ 适合配合工具处理 JSON
Mistral-7B-Instruct ⚠️ 函数理解能力弱,不推荐
Yi-34B-Chat ✅ 中文表现强,适合中文场景对话调度

如果之后考虑RAG + 多模型协同 + Function Chain这些方向,可以先设计初始的 Agent 框架(例如一个流程控制器 + 模型池调度规则),先专注一个模型原型跑通功能。

🧠 Part 1:「搜索知识后自动调用函数」Prompt 示例

以下是为Function Calling 支持模型(如 OpenHermes、OpenChat、OpenOrca)设计的标准 prompt 模板:

🔧 场景假设:

用户输入:「广州明天要下雨吗?帮我带伞提醒。」

你系统会检索天气数据 + 决定是否调用函数。


✅ Prompt 示例(带知识检索结果)

复制代码
你是一个智能助手,可以访问函数工具。

用户提问:广州明天要下雨吗?帮我安排带伞提醒。

你在天气数据库中查到的信息如下:

【知识库搜索结果】
广州未来三天天气:
- 4月26日:阴天转中雨,气温22°C ~ 28°C。
- 4月27日:雷阵雨,气温23°C ~ 29°C。
- 4月28日:多云,气温24°C ~ 30°C。

请根据搜索信息,判断是否需要调用函数。如果需要,请使用以下函数调用格式:

可用函数:
```json
[
  {
    "name": "setUmbrellaReminder",
    "description": "设置带伞提醒",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {"type": "string"},
        "date": {"type": "string"},
        "weather": {"type": "string"}
      },
      "required": ["city", "date", "weather"]
    }
  }
]

现在请根据用户的问题和搜索内容,决定是否需要调用函数,并用 JSON 格式输出调用参数。

复制代码

🔁 期望模型输出(符合 OpenAI Tool Use)

```json

{

"function_call": {

"name": "setUmbrellaReminder",

"arguments": "{\"city\": \"广州\", \"date\": \"2024-04-26\", \"weather\": \"阴转中雨\"}"

}

}


🧠 Part 2:智能体系统的初始架构设计(多模型 + RAG + 函数调用)

🧱 1. 架构图(文本描述)

复制代码
[用户输入]
   ↓
[主控 Agent Controller]
   ↓(判断是否需要搜索)
[检索模块 RAG]
   ↓(返回搜索内容)
[模型选择器]
   ├─> OpenChat 3.5(理解 + 调度函数)
   ├─> DeepSeek-Coder(结构化 JSON)
   └─> Yi-34B(中文环境)
   ↓
[函数调用生成器]
   ↓
[API 执行/数据库操作/系统执行]
   ↓
[结果反馈生成]
   ↓
[输出给用户]

📦 2. 各模块职责说明

模块 功能 推荐工具/语言
Agent Controller 识别用户意图、控制流程 Spring Boot / Node.js
检索模块(RAG) 使用向量数据库,如 Redis Vector / Weaviate Redis Stack / Faiss / Milvus
模型选择器 根据任务类型切换模型 可用 OpenAI 风格接口包装各模型
Prompt 构造器 将搜索内容 + 函数定义注入 Prompt Java/Node.js 构建模板系统
函数执行模块 调用 API、写数据库、发消息等 Spring / n8n / LangGraph
用户交互前端 聊天界面、反馈页面 React / Vue / Expo RN

✅ Bonus:使用 Spring Boot 做智能体控制器的思路

可以用如下方式封装控制逻辑:

复制代码
@RestController
public class AgentController {

    @Autowired private VectorSearchService vectorService;
    @Autowired private ChatModelService modelRouter;
    @Autowired private FunctionExecutor functionExecutor;

    @PostMapping("/ask")
    public AgentResponse askAgent(@RequestBody AgentRequest request) {
        String searchContext = vectorService.search(request.getQuestion());
        String fullPrompt = PromptComposer.compose(request.getQuestion(), searchContext);

        ModelResponse response = modelRouter.ask(fullPrompt);

        if (response.hasFunctionCall()) {
            FunctionCallResult result = functionExecutor.execute(response.getFunctionCall());
            return AgentResponse.fromFunctionResult(result);
        } else {
            return AgentResponse.fromText(response.getText());
        }
    }
}

🧪 小结:推荐你的起步顺序

  1. 用 OpenHermes 2.5 或 OpenChat 3.5 跑通基础 Prompt + Function Call

  2. ✅ 接入向量数据库做简单的 RAG 搜索合并

  3. ✅ 使用 Spring Boot 或 Node 搭建控制器,构建 Function 执行接口

  4. ✅ 再逐步探索多模型切换与链式调用

相关推荐
xwz小王子19 分钟前
Nature Communications 面向形状可编程磁性软材料的数据驱动设计方法—基于随机设计探索与神经网络的协同优化框架
深度学习
白熊18826 分钟前
【计算机视觉】CV实战项目 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
人工智能·yolo·计算机视觉
nenchoumi311928 分钟前
VLA 论文精读(十六)FP3: A 3D Foundation Policy for Robotic Manipulation
论文阅读·人工智能·笔记·学习·vln
后端小肥肠38 分钟前
文案号搞钱潜规则:日入四位数的Coze工作流我跑通了
人工智能·coze
LCHub低代码社区39 分钟前
钧瓷产业原始创新的许昌共识:技术破壁·产业再造·生态重构(一)
大数据·人工智能·维格云·ai智能体·ai自动化·大禹智库·钧瓷码
-曾牛39 分钟前
Spring AI 快速入门:从环境搭建到核心组件集成
java·人工智能·spring·ai·大模型·spring ai·开发环境搭建
阿川201543 分钟前
云智融合普惠大模型AI,政务服务重构数智化路径
人工智能·华为云·政务·deepseek
自由鬼1 小时前
开源AI开发工具:OpenAI Codex CLI
人工智能·ai·开源·软件构建·开源软件·个人开发
生信碱移1 小时前
大语言模型时代,单细胞注释也需要集思广益(mLLMCelltype)
人工智能·经验分享·深度学习·语言模型·自然语言处理·数据挖掘·数据可视化
88号技师1 小时前
【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
开发语言·机器学习·matlab·时序分析·故障诊断·信息熵·特征提取