OpenAI API进阶-Function Calling实现插件!

Function Calling介绍

Function Calling是什么

OpenAI Chat API官方文档:Chat API Function Calling官方介绍:Function Calling alt

开发者现在可以向 gpt-4-0613 和 gpt-3.5-turbo-0613 描述函数,并让模型智能地选择输出一个包含调用这些函数参数的 JSON 对象。这是一种更可靠地将 GPT 的功能与外部工具和 API 相连接的新方法。 这些模型经过了微调,既可以检测到何时需要调用函数(根据用户的输入),又可以回复符合函数签名的 JSON。函数调用使开发者能够更可靠地从模型中获得结构化数据。例如,开发者可以:

  • 利用外部工具调用的聊天机器人(如 ChatGPT 插件)来回答问题 将查询如“Email Anya看看她下周五是否想喝咖啡”转换为像 send_email(to: string, body: string) 这样的函数调用,或者将“波士顿的天气如何?”转换为 get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')。
  • 将自然语言转换为 API 调用或数据库查询 将“这个月我的前十位客户是谁?”转换为内部 API 调用,如 get_customers_by_revenue(start_date: string, end_date: string, limit: int),或者将“Acme 公司上个月下了多少订单?”转换为使用 sql_query(query: string) 的 SQL 查询。
  • 从文本中提取结构化数据 定义一个名为 extract_people_data(people: [{name: string, birthday: string, location: string}]) 的函数,以提取在维基百科文章中提到的所有人物。 这些用例通过我们的 /v1/chat/completions 端点中的新 API 参数 functions 和 function_call 得以实现,开发者可以通过 JSON Schema 描述函数,并可选择要求模型调用特定函数。

一句户解释就是:我们可以把自己的函数集成到GPT里了

### 如何部署 OpenAI API 为了确保应用程序的安全性和稳定性,在部署涉及敏感信息(如API密钥)的应用程序时,采取适当措施至关重要。对于Web应用而言,直接在前端暴露API密钥存在安全隐患;因此推荐的做法是在服务器端处理这些请求。 #### 使用环境变量管理API密钥 当构建ReactJS项目并打算将其托管于GitHub Pages这样的静态站点服务上时,应该从未将任何秘密信息硬编码至客户端代码内。相反地,应当利用`.env`文件存储开发期间所需的配置项,并通过Git忽略列表防止提交此类敏感资料到版本控制系统中去[^1]。 然而值得注意的是,一旦涉及到生产环境中实际调用第三方接口的情况,则更适宜采用后端代理的方式来进行间接访问——即创建自己的RESTful微服务作为中介层负责转发最终用户的HTTP请求给目标平台的同时也承担起鉴权职责。这不仅有助于保护凭证免遭泄露风险,还能实现诸如限流控制等功能增强整体架构灵活性与安全性。 #### 构建后端中间件 一种常见的做法是借助云函数(Cloud Function),比如Google Cloud Functions 或者 AWS Lambda 来搭建这样一个轻量级的服务网关。以Firebase为例,可以编写一段Node.js脚本来封装对OpenAI API的具体操作逻辑: ```javascript const functions = require('firebase-functions'); const axios = require('axios'); // 安全地读取环境变量中的API Key const OPENAI_API_KEY = process.env.OPENAI_API_KEY; exports.openAiProxy = functions.https.onRequest(async (req, res) => { try { const response = await axios.post( "https://api.openai.com/v1/engines/davinci-codex/completions", req.body, { headers: {"Authorization": `Bearer ${OPENAI_API_KEY}`} } ); return res.status(200).json(response.data); } catch(error){ console.error("Error calling OpenAI API:", error.message); return res.status(500).send({ message:error.message }); } }); ``` 上述代码片段展示了如何定义一个HTTPS触发器类型的Cloud Function实例,它接受来自外部的POST请求并将之转交给指定引擎完成文本补全文案的任务。与此同时,所有必要的身份验证参数均来源于运行时刻上下文中预先加载好的配置对象而非明文形式写死在线路里头[^2]。 #### 部署流程概述 最后一步就是按照所选平台官方文档指示完成整个项目的上线准备工作了。如果是基于Firebase的话,那么只需简单执行几条命令即可快速发布最新改动成果: ```bash npm install -g firebase-tools firebase login firebase init hosting:functions firebase deploy ``` 以上步骤会引导开发者初始化项目结构、关联远程仓库以及推送本地更改记录直至云端生效为止。当然具体细节可能会因个人需求差异而有所不同,请参照各自服务商提供的指南做相应调整优化[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值