OpenAI重磅:AI Agent智能体Function Calling 2.0!

OpenAI 推出了全新的 AI Agent 智能体 Function Calling 2.0 使用指南,此次更新使得文档篇幅缩减了一半,并且引入了一系列关键的最佳实践。作为打造高效 AI Agent 智能体的核心技能之一,正确运用Function Calling 对于开发强大的 AI Agent 智能体应用具有至关重要的作用。因此,今天我就来为大家揭秘这次更新的精华内容!

一、Function Calling 的两大核心应用

文章中清晰地阐述了 Function Calling 的两个核心应用场景

第一、数据获取(Fetching Data)

  • 实时检索信息并将其融入大模型的响应之中;
  • 适用于查询知识库和获取特定 API 数据(例如天气预报);
  • 本质上是实现了一种 RAG(Retrieval Augmented Generation,检索增强生成)的方法。

第二、执行动作(Taking Action)

  • 完成表单提交、API 调用等操作;
  • 改变应用程序的状态(涉及前端或后端);
  • 执行 AI Agent 智能体的工作流程步骤(例如对话中的任务转接)。

二、全新的最佳实践

此次更新最为关键的是推出了一系列实用的最佳实践,下面我们来聚焦于其中的几项:

第一、编写明确的函数定义

# 好的示例
def get_weather(location: str):
    """获取指定位置的当前温度
    Args:
        location: 城市和国家,例如:'北京, 中国'
    """
    pass

# 糟糕的示例
def toggle_light_switch(on: bool, off: bool):
    """这个设计允许无效状态的存在"""
    pass

第二、遵循软件工程的最佳实践指南

  • 确保函数直观易懂,并遵循最小惊讶原则,在维基百科中称为:Principle of least astonishment,详见链接:https://en.wikipedia.org/wiki/Principle_of_least_astonishment。

  • 采用枚举和对象结构,以防止出现无效状态。

  • 通过“实习生测试”:如果一名实习生仅凭函数定义就能正确地使用它,那么说明你的设计相当出色。

第三、尽可能减少大模型的负担

# 不推荐
def get_orders(user_id: str):
    pass

# 推荐
def get_orders():
    # 在代码中传递user_id
    pass

第四、精简函数数量,维持高效性;

  • 推荐在任何时候使用的函数不超过20个;
  • 若观察到有两个函数经常被同时调用,应考虑将它们合并为一个函数。

三、重要的配置选项

第一、工具选择模式(tool_choice)

# 自动模式(默认)
tool_choice="auto"  # 可以调用零个、一个或多个函数

# 强制模式
tool_choice="required"  # 必须调用至少一个函数

# 指定函数
tool_choice={
    "type": "function", 
    "function": {"name": "get_weather"}
}  # 强制调用特定函数

第二、严格模式(Strict Mode)

{
    "type": "function",
    "function": {
        "name": "get_weather",
        "strict": True,  # 启用严格模式
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string"
                },
                "units": {
                    "type": ["string", "null"],  # 可选参数
                    "enum": ["celsius", "fahrenheit"]
                }
            },
            "required": ["location", "units"],
            "additionalProperties": false
        }
    }
}

四、流式处理的支持

OpenAI 进一步提升了流式处理的能力,使得能够即时展现函数调用的实时过程

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "北京今天天气如何?"}],
    tools=tools,
    stream=True
)

for chunk in stream:
    delta = chunk.choices[0].delta
    print(delta.tool_calls)  # 实时显示函数调用进度

此次更新主要目的是分享了一系列最佳实践。随着 o1-mini 即将实现对Function Calling 的支持(已获官方确认),昨日还推出了 tasks 功能。因此,可以展望在2025年见证真正的 AI Agent 智能体的诞生


五、如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

### 如何在 React 函数组件中调用 Agent 模型 为了在 React 函数组件中调用 Agent 模型的方法,可以遵循以下模式。Agent 的核心是由 LLM 驱动的大脑模块[^1],因此可以通过定义清晰的接口来与其交互。 #### 定义 Agent 接口 首先,在前端环境中集成 Agent 模型时,通常需要通过 API 或者本地 SDK 来实现通信。假设我们有一个名为 `agentApi` 的对象,它封装了与 Agent 模型交互的功能: ```javascript // 假设这是用于调用 Agent 方法的 API 封装 const agentApi = { callFunction: async (functionName, params) => { const response = await fetch('/api/agent', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ functionName, params }), }); return response.json(); } }; ``` #### 在函数组件中使用 Agent 接下来是在 React 函数组件中实际调用这些方法的方式。这里展示了一个简单的例子,说明如何触发 Agent 并处理其返回的结果。 ```jsx import React, { useState } from 'react'; const MyComponent = () => { const [result, setResult] = useState(null); const handleCallAgent = async () => { try { // 调用 Agent 中的一个具体功能 const functionResponse = await agentApi.callFunction('exampleFunction', { param1: 'value1' }); // 更新状态以显示结果 setResult(functionResponse); } catch (error) { console.error('Error calling agent:', error); } }; return ( <div> <h3>Calling Agent Model</h3> <button onClick={handleCallAgent}>Call Agent Function</button> {result && <p>Result: {JSON.stringify(result)}</p>} </div> ); }; export default MyComponent; ``` 上述代码展示了如何在一个按钮点击事件中调用 Agent 提供的功能,并将结果显示给用户。这里的重点在于通过 `fetch` 请求向后端发送数据并接收响应。 #### 自定义属性支持(可选) 如果涉及到更复杂的场景,比如自定义图像或其他媒体类型的输入,则可以根据环境配置额外的支持机制。例如 HTML `<image>` 标签语法可用于注册某些特性[^2],这可能适用于特定的应用程序上下文中。 另外,对于进一步优化用户体验而言,还可以利用设置中的规则选项来自定义 AI 行为[^3],从而更好地满足不同用户的个性化需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值