在当今这个快节奏的技术世界中,将 OpenAI 的功能集成到项目中已经成为一种趋势。OpenAI 提供了一系列强大的自然语言处理API。然而,集成这些 API 的过程复杂且耗时,通常需要大量精力和专业知识。为了简化集成过程,我们开发了 OpenAI 组件,该组件功能强大,可以简化 OpenAI API 在项目中的集成。
本文主要介绍开发者如何借助 OpenAI 组件轻松地将 OpenAI 的功能添加至项目中,而无需关注实现细节。
本文主要由三个部分组成。第一部分为“ESP 组件注册器 (ESP Component Registry)”,介绍如何将合适的组件添加至 ESP-IDF 项目。第二部分重点介绍“OpenAI 组件”的详细信息。最后一部分介绍“ESP-BOX ChatGPT” 例程的更新。
ESP 组件注册器
ESP 组件注册器是一个开源组件平台,拥有大量的开源组件,可以为您的物联网项目提供强大的推动力。您只需进行快速搜索和点击,就可以轻松获得所需组件,并快速集成至 IDF 项目中。这种高效的集成方式可以加快项目开发周期,让您专注于开发更具突破性的物联网解决方案,无需操心繁杂的设置步骤
步骤如下所示:
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 的功能。大致流程请见下图。
此外,用户还可以使用 ESP-Launchpad 尝试新版的 ESP-BOX ChatGPT 例程,该方法不需要在本地编译项目,可以更加方便地体验例程中新增的功能。