OpenAI 组件 | 加速 OpenAI API 在项目中的集成

news2024/7/6 18:06:06

在当今这个快节奏的技术世界中,将 OpenAI 的功能集成到项目中已经成为一种趋势。OpenAI 提供了一系列强大的自然语言处理API。然而,集成这些 API 的过程复杂且耗时,通常需要大量精力和专业知识。为了简化集成过程,我们开发了 OpenAI 组件,该组件功能强大,可以简化 OpenAI API 在项目中的集成。

图 1:主题图片

本文主要介绍开发者如何借助 OpenAI 组件轻松地将 OpenAI 的功能添加至项目中,而无需关注实现细节。 

本文主要由三个部分组成。第一部分为“ESP 组件注册器 (ESP Component Registry)”,介绍如何将合适的组件添加至 ESP-IDF 项目。第二部分重点介绍“OpenAI 组件”的详细信息。最后一部分介绍“ESP-BOX ChatGPT” 例程的更新。 

ESP 组件注册器 

ESP 组件注册器是一个开源组件平台,拥有大量的开源组件,可以为您的物联网项目提供强大的推动力。您只需进行快速搜索和点击,就可以轻松获得所需组件,并快速集成至 IDF 项目中。这种高效的集成方式可以加快项目开发周期,让您专注于开发更具突破性的物联网解决方案,无需操心繁杂的设置步骤

图 2:ESP 组件注册器

步骤如下所示: 

1. 在 ESP 组件注册器找到您需要的组件。

2. 阅读文档和更新日志,确定所需的组件版本。

3. 在终端中运行以下命令,将组件集成到您现有的项目中(注意:运行命令前,请修改组件名称    和版本)。

idf.py add-dependency "espressif/Component name^verison" 

OpenAI 组件 

为了向开发者提供尽可能多的 OpenAI API 功能,我们开发了简单但强大的 ESP-IDF 组件。该组件支持多种 OpenAI 功能(文件操作和微调 (fune-tuning) 功能除外),并且 API 文档详尽,可帮助开发者快速上手。

使用示例 

第一步是实例化对象,并提供安全的“API 密钥”作为参数。OpenAPI 密钥可以通过 OPENAI 网站获得。要获得 OpenAI 服务,必须先创建一个帐户,购买令牌,获取唯一的 API 密钥。

openai = OpenAICreate(key); 

 创建 OpenAI 对象后,代码调用 chatCompletion API 来设置设置必要的参数,发送一条消息(表明这不是最后一条消息),并获取生成的响应,供下一步使用或处理。 

chatCompletion = openai->chatCreate(openai); 
chatCompletion->setModel(chatCompletion, "gpt-3.5-turbo"); 
chatCompletion->setSystem(chatCompletion, "Code geek"); 
chatCompletion->setMaxTokens(chatCompletion, CONFIG_MAX_TOKEN); 
chatCompletion->setTemperature(chatCompletion, 0.2); 
chatCompletion->setStop(chatCompletion, "\r"); 
chatCompletion->setPresencePenalty(chatCompletion, 0); 
chatCompletion->setFrequencyPenalty(chatCompletion, 0); 
chatCompletion->setUser(chatCompletion, "OpenAI-ESP32"); 
OpenAI_StringResponse_t *result = chatCompletion->message(chatCompletion, "Hello!, World", false); // 调用 chatCompletion API 
char *response = result->getData(result, 0); 

同样,创建 OpenAI 对象后,代码调用 audioTranscriptionCreate API 来设置必要的参数,如音频文件和语言,然后开始转录音频,最后获取转录结果,供下一步使用或处理。 

audioTranscription = openai->audioTranscriptionCreate(openai); 
audioTranscription->setResponseFormat(audioTranscription, OPENAI_AUDIO_RESPONSE_FORMAT_JSON); 
audioTranscription->setLanguage(audioTranscription,"en"); 
audioTranscription->setTemperature(audioTranscription, 0.2); 
char *text = audioTranscription->file(audioTranscription, (uint8_t *)audio, audio_len, OPENAI_AUDIO_INPUT_FORMAT_WAV); // 调用转录 API 

如需探索更多 API 及其功能,请参阅文档。 

ESP-BOX ChatGPT 例程 

相比于旧版本更新版的 ESP-BOX ChatGPT 示例集成了 OpenAI 组件。有关具体的开发细节,请阅读博客。请注意,在新版本中,我们使用 esp_tinyuf2 组件将 Wi-Fi 和 OpenAI 密钥存储在非易失性存储器(NVS)中,这种方法更加安全。 

在初始启动阶段,执行第一个二进制文件后,用户需输入安全凭证,如 Wi-Fi 和 OpenAI 密钥。一旦输入凭证,系统即会重新启动,然后 ChatGPT 二进制文件就会接管控制权。该文件借助在初始启动阶段中提供的安全凭证来实现 ChatGPT 的功能。大致流程请见下图。

图 3:ChatGPT_demo 例程的流程与简单的认证

此外,用户还可以使用 ESP-Launchpad 尝试新版的 ESP-BOX ChatGPT 例程,该方法不需要在本地编译项目,可以更加方便地体验例程中新增的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群

一、环境准备 1. 我这里准备了三台centos7 虚拟机 主机名主机地址软件node-01192.168.157.133rabbitmq、erlang、haproxy、keepalivednode-02192.168.157.134rabbitmq、erlang、haproxy、keepalivednode-03192.168.157.135rabbitmq、erlang 2. 关闭三台机器的防火墙 # 关闭…

基于swing的火车站订票系统java jsp车票购票管理mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的火车站订票系统 系统有2权限:…

【广州华锐视点】VR技术带你身临其境体验地震逃生全过程

虚拟现实(VR)技术在模拟地震逃生体验方面具有重要的意义。地震是一种常见的自然灾害,对人类的生命和财产安全造成巨大威胁。通过利用VR技术,人们可以在安全的环境中亲身体验不同震级的地震情景,从而增加对地震的认识和…

编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

环境: CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下: (1)基于centos基础镜像; (2)指定作者信息; (3)安装nginx服务,将提供的dest目录…

uview2.0自定义tabbar

tabbar组件 <template><u-tabbar :value"tab" change"changeTab" :fixed"true" :border"true" :placeholder"true":safeAreaInsetBottom"true"><u-tabbar-item text"消息" icon"c…

react-sortable-hoc 拖拽列表上oncick事件失效

const SortableItem SortableElement(({value, onChangePayment}) > {const onClickItem () > {// todo}return (<View className"-item" onClick{onClickItem}>xxxxxxx</View>) })问题&#xff1a;onClick 无效 解决&#xff1a;添加distance

Lazada上成功吸引消费者有哪些小妙招?

作为销售平台来说,其实网上可以搜索到,或者通过下载软件轻松就可以将APP下载了,然后接下来就是注册和开店去吸引消费者的过程了。对于现在比较火爆的Lazada来说,如果想要在上面成功吸引更多的消费者,需要有哪些优质的推广策略呢? 品牌效应很重要 其实Lazada首先走的就是品牌效…

PAT 1114 Family Property

个人学习记录&#xff0c;代码难免不尽人意 Sample Input: 10 6666 5551 5552 1 7777 1 100 1234 5678 9012 1 0002 2 300 8888 -1 -1 0 1 1000 2468 0001 0004 1 2222 1 500 7777 6666 -1 0 2 300 3721 -1 -1 1 2333 2 150 9012 -1 -1 3 1236 1235 1234 1 100 1235 5678 9012 …

文心问数Sugar Bot :大模型+BI,多轮会话自动生成可视化图表与数据结论

Sugar BI 的文心问数功能是基于大语言模型实现的&#xff0c;支持您使用自然语言&#xff0c;通过多轮会话的方式&#xff0c;获取实时数据的图表展现&#xff0c;也可以自动为您总结与图表相关的业务结论。 文心问数功能邀测中&#xff0c;欢迎CSDN的用户前来报名&#xff1a;…

SQL地址门牌排序,字典序转为数字序

页面有一批地址数据查询&#xff0c;结果字符排序默认是字典序的&#xff0c;所以造成了门牌3号在30号之前&#xff0c;影响用户体验&#xff1b; id, road_code, road_name, address_fullname, address_name 102 10086 人民一路 北江省南海市西湖区人民一路3号 3号 103 10086…

YOLO目标检测——小狗图像数据集下载分享

小狗图像数据集 小狗图像数据集是一种常用的用于研究和分析狗狗图像分类问题的数据集&#xff0c;它包含了大量不同品种和姿势的小狗图像样本&#xff0c;用于训练和评估狗狗图像分类算法的性能&#xff0c;共同540张图片&#xff0c;8个不同类别小狗。 数据集点击下载&#xf…

蜜蜂剪辑安装教程

安装蜜蜂剪辑&#xff1a; 1、首先&#xff0c;打开您的Windows电脑并浏览至蜜蜂剪辑的官方网站。 https://www.apowersoft.com.cn 2、点击“下载”按钮&#xff0c;在下载页面中选择您需要的版本&#xff0c;然后下载软件安装程序。 百度网盘&#xff1a; 链接&#xff1a;htt…

10个非常有用的Python库,你知道几个?

整理&#xff5c;TesterHome 这里给大家介绍10个不是最流行但非常有用的Python库&#xff0c;希望可以提供参考帮助。 PyO3 PyO3是一个Rust库&#xff0c;可以让你在Rust中编写Python模块。它可以利用 Rust 的速度和安全性编写高性能的 Python 模块。 https://github.com/PyO3…

镭速传输助力广电行业大数据高效分发,提升智慧融媒水平

随着互联网技术如大数据、人工智能、云计算等和移动通信技术如5G等的快速进步和实际应用&#xff0c;媒体行业发展正式进入智慧时代&#xff0c;智慧融媒成为媒体融合发展的新阶段&#xff0c;全面应用在超高清、云服务、融媒演播、VR等新兴技术为代表的各个方面。 以上技术的…

什么是决策树

什么是决策树 在游戏中遇到敌人是选择攻击还是逃跑&#xff1f;如果选择攻击&#xff0c;是选择普通的物理攻击还是魔法攻击&#xff1f;为达到目标根据一定的条件进行选择的过程&#xff0c;就是决策树(DT Tree)。 决策树模型非常经典&#xff0c;在机器学习中常被用于分类&…

国内智慧工业的实践,在一首曙光《长歌行》中

工业是国民经济的主战场&#xff0c;是经济命脉。因此&#xff0c;智慧工业也被认为是第四次工业革命的关键。 但提到中国智慧工业&#xff0c;不禁让人脑海中浮现出一首《长歌行》。 一方面&#xff0c;智慧工业的实现周期很长&#xff0c;AI算力、算法等新技术进入工业领域所…

UI设计第一步,在MasterGo上开展一个新项目

我们都知道&#xff0c;一个完整的项目&#xff0c;要经历创建团队、搭建组件库、应用规范以及管理设计资产&#xff0c;那么今天小编就在MasterGo中带你从0到1开展一个全新的项目。 你一定遇到过这种情况&#xff0c;同团队的设计师&#xff0c;由于使用不同版本或不同软件&a…

递增子序列【回溯】

递增子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 …

堆中分配二维数组初始化排序

方法一&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> int getmem(char *** parry,int *depth,int *len){ int mydepth *depth; int mylen *len; char ** myarry (char **)malloc(mydepth*sizeof(char*)); for(int i0;i<…

库存预占架构升级方案设计-交易库存中心 | 京东物流技术团队

背景介绍 伴随物流行业的迅猛发展&#xff0c;一体化供应链模式的落地&#xff0c;对系统吞吐、系统稳定发出巨大挑战&#xff0c;库存作为供应链的重中之重表现更为明显。近三年数据可以看出&#xff1a; 接入商家同比增长37.64%、货品种类同比增长53.66% 货品数量同比增长4…