当前位置: 首页 > news >正文

支持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 / WeaviateRedis Stack / Faiss / Milvus
模型选择器根据任务类型切换模型可用 OpenAI 风格接口包装各模型
Prompt 构造器将搜索内容 + 函数定义注入 PromptJava/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. ✅ 再逐步探索多模型切换与链式调用

相关文章:

  • 工业排风轴流风机:强劲动力与节能设计的完美融合
  • websheet 之 VUE使用
  • 基于 Netmiko 的网络设备自动化操作
  • 【器件专题1——IGBT第2讲】IGBT 基本工作原理:从结构到特性,一文解析 “电力电子心脏” 的核心机制
  • 人工智能与机器学习:Python从零实现性回归模型
  • react和vue的区别之一
  • 【Mybatis】MyBatisPlus的saveBatch真的是批量插入吗?深度解析与性能优化
  • 全球玻璃纸市场深度洞察:环保浪潮下的材料革命与产业重构(2025-2031)
  • 算法 | 基于SSA-CNN-LSTM(麻雀算法优化卷积长短期记忆神经网络)的股票价格预测(附完整matlab代码,公式,原理,可用于毕业论文设计)
  • 【持续更新】 CDC 跨时钟域处理
  • 解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南
  • 数据挖掘技术与应用课程论文——数据挖掘中的聚类分析方法及其应用研究
  • 从原生检索到异构图:Native RAG、GraphRAG 与 NodeRAG 架构全景解析
  • 高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
  • JavaScript学习教程,从入门到精通,Ajax数据交换格式与跨域处理(26)
  • PubMed PDF下载 cloudpmc-viewer-pow逆向
  • 深入了解C# List集合及两种常见排序算法:插入排序与堆排序
  • 神经符号混合与跨模态对齐:Manus AI如何重构多语言手写识别的技术边界
  • SD2351核心板:重构AI视觉产业价值链的“超级节点”
  • 第十二天 使用Unity Test Framework进行自动化测试 性能优化:Profiler分析、内存管理
  • 上海经信委:将推动整车企业转型,加强智能驾驶大模型等创新应用
  • 为何不当教练转型高校管理岗?苏炳添曾吐露过真实的想法
  • 我国首次实现地月距离尺度的卫星激光测距
  • 交通枢纽、产业升级,上海松江新城有这些发展密码
  • 美银证券前董事总经理胡霁光履新,任摩根士丹利中国区副主席
  • 企业称县政府为拆迁开发借款2亿元逾期未还,河北青龙县:开发搁置,将继续沟通