Dify 内置了两种 Agent 策略:Function Calling 和 ReAct,但二者有什么区别呢?在使用时又该如何选择呢?接下来我们一起来看。
摘要:本文通过一个从零构建的本地编程助手Agent项目,详解FunctionCalling如何与ReAct(推理-行动)模式协同工作,实现大模型对文件系统的增删改查操作。 2025年开始智能体这个概念异常火热,从上半年的FunctionCalling、MCP到下半年的Skills。 本文不探究技术层面以外的影响,这系列博客目标是个人AI转型期间的所有经验积累,因此言归正传,回到主题:FunctionCalling理解。 c) system_prompt.py,从名称就可以看出这里承载的就是Agent的系统提示词,使用FunctionCalling来完成任务,为了避免模型幻觉和内容陈旧,一般都是结合ReAct模式一起来使用 根据观察继续下一轮思考或给出最终回答 4、FunctionCalling 从上面例子已经可以明确FunctionCalling就是Agent解析大模型的返回后,调用Agent自身支持的一些列函数,来实现与外部世界
第六章:从“只会说”到“开始做”——FunctionCalling如果说RAG让AI成了“百晓生”,那么FunctionCalling(函数调用)则让AI拿起了“工具箱”。 这个本质上跟训练如何识别FunctionCalling是一样的,所以有人说MCP就是基于FunctionCalling的。 FunctionCalling(函数调用)机制的高级应用。 按需执行:依照指令执行任务,过程中可继续通过FunctionCalling调用脚本或读取资源。。。 所以FunctionCalling可以算是AIAgent的基础能力了,任何跟外界返回结构化数据的程序打交道,都要需要这个能力。所以Skill跟FunctionCalling属于协作关系。
FunctionCalling:FunctionCalling 是一种自然语言理解能力的技术,开发者可以定义一组函数,并将这些函数的描述传递给模型。
设计紧耦合特定模型(如gpt-4o),切换成本高;类型缺失:providerOptions参数缺乏强类型校验,错误往往运行时才暴露;生态割裂:ReactSolidSvelte各自为政,难以复用核心逻辑;工具调用(FunctionCalling 高级能力:工具调用(FunctionCalling)LLM的知识是静态的——如何让它“联网”?TanStackAI提供了一套声明式+类型安全的工具调用方案。
当前AI工程最痛的不是LLM不够聪明,而是每个Agent框架、每家厂商的FunctionCalling格式都是私有孤岛。OpenClaw要做的事类比HTTP之于Web——不生产内容,但决定谁能互通。
这就要说到RAG和FunctionCalling技术了。RAG(检索增强生成)通过检索外部知识库获取与问题相关的实时信息并将其注入模型提示词,生成更精准、时效性更强的回答。 图片来源:ailydoseofds而FunctionCalling(函数调用)拓展了模型执行动作的能力,解决纯文本交互的局限性,即模型解析用户意图后生成结构化指令,调用预定义外部函数或API(如发送邮件 而我们可以认为,MCP是在FunctionCalling的基础上做了进一步的抽象,目的是让应用更加简单、高效、安全地对接外部资源,更好地为大模型补充上下文信息。 这种参数化设计方式提高了工具调用的灵活性,降低了FunctionCalling的开发复杂度。 在AIAgent架构中:RAG充当知识中枢,FunctionCalling为执行手段,MCP则是连接内外的“神经枢纽”。
function argument:') fn()>>> dosomething(lambda : print('Hello World')) # passing anonymous functionCalling
openai.ToolTypeFunction, Function: &f2}, {Type: openai.ToolTypeFunction, Function: &f3}, } } 接着,我们定义 functionCalling func functionCalling(input string, client *utils.OpenAI) string { tools := createTools() dialogue = nil { return fmt.Sprintf("执行操作失败: %v", err) } return result } 在 functionCalling 中,我们调用了 callFunction 调用 OpenAI Function calling response := functionCalling(input, client) return response } 最后,在 startChat
它通过可视化的Agent工作流设计,将原本需要代码实现的复杂功能调用(FunctionCalling)和链式思考(Chain-of-Thought)封装成了用户友好的交互界面。
2.工具调用模式(ToolUse)通过FunctionCalling让LLM具备操作物理世界的能力。模型不再猜测答案,而是生成工具调用的JSON参数,由后台执行并将结果反馈给模型。
return chatService.chat(userMessage); } @PostMapping("/function-calling") public String functionCalling retriever) .build(); return chain.execute(userMessage); } public String functionCalling
SQL+AI双引擎内置SQL引擎,可以直接用SQL查询聊天数据;AIAgent集成了10+FunctionCalling工具,支持用自然语言提问,自动做统计分析、生成洞察。
L1:函数调用(FunctionCalling)标准化、Schema安全。只要函数列表有改动,缓存几乎就要重建。函数太多会造成上下文混乱。
答:这是gpt-oss模型本身在Ollama框架下集成的功能,可能利用了类似工具调用(ToolCalling)或函数调用(FunctionCalling)的机制。
DeepSeek、智谱AI、SiliconFlow等主流AI模型️图像生成:支持文生图(T2I)和图生图(I2I),集成Gemini、Seedream等图像模型高级测试模式:上下文变量管理、多轮会话测试、工具调用(FunctionCalling
导 语 最近项目持续推进,遇到的一些工作中的问题和想法会进行输出,分享包括FunctionCalling、 MCP等技术在内多篇智能体文章。
工具调用:CodeBuddy支持工具调用(FunctionCalling),通过ToolCallSessionUpdate处理。这个能力对于复杂的代码编辑任务很关键。
多平台支持:QQBot、Telegram、Discord等多模型支持:Minimax、Claude、OpenAI等技能系统:通过Skill机制扩展功能记忆系统:长期记忆和短期记忆管理工具集成:支持MCP、FunctionCalling
当前主流的智能体架构基于大语言模型(LLM),采用PromptEngineering和FunctionCalling技术实现与开发环境的交互。