【ESP32接入国产大模型之豆包】

  1. 豆包大模型

视频地址:ESP32接入国产大模型之豆包_哔哩哔哩_bilibili

豆包大模型是字节跳动推出的自研大模型,以优质模型效果为企业打造丰富的业务体验。

随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。字节跳动自研LLM模型专业版,支持128K长文本,全系列可精调,具备更强的理解、生成、逻辑等综合能力,适配问答、总结、创作、分类等丰富场景。。本文将重点介绍如何通过ESP32接入国产大模型之豆包 api。 豆包大模型-火山引擎 (volcengine.com) 上一篇博客已经分享了 【ESP32接入国产大模型之MiniMax】 【ESP32接入语言大模型之智谱清言】 【ESP32接入国产大模型之文心一言】 【ESP32接入语言大模型之通义千问】

下面是不标准测评,参考而已

模型响应时间内容质量免费token次数地址
豆包2s9分50万豆包大模型-火山引擎
MiniMax3s8分500万MiniMax-与用户共创智能
智谱清言7s8分300万智谱AI开放平台
文心一言10s9分500万API列表 - ModelBuilder
通义千问8s8分800万通义tongyi.ai_你的全能AI助手-通义千问

这一次还是采用Arduino编程就会轻松许多开发。这样就可以把大模型装进口袋啦🤣🤣🤣

1.1 了解豆包 api

为方便用户使用,我们提供了 原生 HTTP 来实现模型 API 的调用。 ChatCompletions--火山方舟大模型api-火山引擎 (volcengine.com)

1.1.2 HTTP 调用

同时支持标准的 HTTP 调用

 

POST /api/v3/chat/completions HTTP/1.1 Host: ark.cn-beijing.volces.com Content-Type: application/json Authorization: authorization string body

1.2 Http接口鉴权

本接口支持 API Key 鉴权方式,详见鉴权认证方式

  1. 进入 API Key 管理页面,在您有权限的项目下点击创建 API Key,即可生成长效 API Key。API Key 的授权范围为同项目下所有模型推理接入点 API 和智能体 API。

API Key 签名鉴权方式要求在 HTTP 请求 header 中按如下方式添加 Authorization header:

 

Authorization: Bearer $ARK_API_KEY

  1. 模型选择 在火山方舟上配置想要用的模型 火山方舟管理控制台 (volcengine.com) 通过模型推理菜单中创建推理接入点,后期代码中替换模型 "model":"ep-20240713-2fgvv"

 

\"model\":\"ep-20240713-2fgvv\"

1.3. 接口参数说明

1.3.1 请求体(request)参数

1.3.2 返回(response)参数

1.3.3 错误响应

本接口调用失败的返回结构和参数释义请参见返回结构文档。

  1. 先决条件

在继续此项目之前,请确保检查以下先决条件。

我们将使用 Arduino IDE 对 ESP32/ESP8266 开发板进行编程,因此在继续本教程之前,请确保已在 Arduino IDE 中安装这些开发板。

2.1 环境配置

  1. Arduino IDE:下载并安装 Arduino IDE;

  2. ESP32 开发板库:在 Arduino IDE 中添加 ESP32 支持; 参考博客:【esp32c3配置arduino IDE教程】 为安装过程留出一些时间,具体时间可能因您的互联网连接而异。

2.2 所需零件

要学习本教程,您需要1个 ESP32 开发板或者ESP32C3,建议使用后者,笔者发现同样的代码后者可以轻松调用,ESP32不行(可能板子坏了)。

目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦克风79元,后期我会整理相关专栏进行Arduino系统学习😘😘😘。有需要可以购买xiao开发板💕💕💕,SeeedXIAO ESP32S3 Sense硬件购买地址:https://s.click.taobao.com/lekazrt

  1. 核心代码

esp32 Arduino代码如下

 

#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> // 1. Replace with your network credentials const char* ssid = "IQOO"; const char* password = "12345678"; // 2. Replace with your OpenAI API key const char* doubao_apiKey = "ecc0e94f-afb5-e06dfd6a65"; // Send request to OpenAI API String inputText = "你好,豆包!"; String apiUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"; String answer; String getGPTAnswer(String inputText) { HTTPClient http; http.setTimeout(20000); http.begin(apiUrl); http.addHeader("Content-Type", "application/json"); String token_key = String("Bearer ") + doubao_apiKey; http.addHeader("Authorization", token_key); String payload = "{\"model\":\"ep-20240713-2fgvv\",\"messages\":[{\"role\":\"system\",\"content\":\"你是我的AI助手vor,你必须用中文回答且字数不超过85个\"},{\"role\":\"user\",\"content\":\"" + inputText + "\"}],\"temperature\": 0.3}"; int httpResponseCode = http.POST(payload); if (httpResponseCode == 200) { String response = http.getString(); http.end(); Serial.println(response); // Parse JSON response DynamicJsonDocument jsonDoc(1024); deserializeJson(jsonDoc, response); String outputText = jsonDoc["choices"][0]["message"]["content"]; return outputText; // Serial.println(outputText); } else { http.end(); Serial.printf("Error %i \n", httpResponseCode); return "<error>"; } } void setup() { // Initialize Serial Serial.begin(115200); // Connect to Wi-Fi network WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to WiFi .."); while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); delay(1000); } Serial.println(WiFi.localIP()); answer = getGPTAnswer(inputText); Serial.println("Answer: " + answer); Serial.println("Enter a prompt:"); } void loop() { // do nothing if (Serial.available()) { inputText = Serial.readStringUntil('\r');// \r表示结束符为回车符 // inputText.trim(); Serial.println("\n Input:"+inputText); answer = getGPTAnswer(inputText); Serial.println("Answer: " + answer); Serial.println("Enter a prompt:"); } // delay(2); }

这段代码是一个基于Arduino平台(可能是ESP32或ESP8266)的示例,它通过WiFi连接到指定的无线网络,并利用HTTPClient库向智谱清言API发送POST请求以获取AI生成的回答。以下是详细的解释:

  1. 导入必要的库:

 

#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h>

  1. 第一处修改定义Wi-Fi网络凭证:

 

const char* ssid = "J09 502"; const char* password = "qwertyuiop111";

  1. 第二处修改定义要调用的APIkey:

 

String apiUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";

  1. 定义输入文本和函数 getGPTAnswer(String inputText):

  • 输入文本是固定的问候语"你好,豆包",在实际应用中可以根据需要修改。

  • 函数 getGPTAnswer() 负责执行以下操作: 初始化HTTPClient对象并设置目标URL。设置Content-Type头信息,构造请求体payload,将用户输入的内容添加到JSON结构中。发送POST请求并检查HTTP响应码。如果响应码为200,则读取并解析返回的JSON数据,提取出结果字段作为回答。若非200,则返回错误字符串 ""。

  1. setup() 函数:

  • 初始化串口通信, 连接到指定的Wi-Fi网络。

  • 连接成功后,获取一个初始的回答并打印出来,然后提示用户输入新的问题。

  1. loop() 函数:

  • 检查串口是否有可用的数据输入。

  • 如果有新输入,读取一行内容,调用 getGPTAnswer() 函数获取AI回答,并将对话过程输出到串口。

注意:虽然代码中有OpenAI API相关注释,但实际上该代码是针对通义千问API编写的。如果你想要与OpenAI API交互,你需要使用OpenAI提供的API URL、access token及相应的JSON结构进行请求。

  1. 上传验证

下面给出下载配置,请严格配置

如果提示Compilation error: ArduinoJson.h: No such file or directory

直接在库管理安装Arduinojson

4.1 对话测试

打开串口监视器,注意右下角选择回车符,选择115200波特率,输入你想问的问题,他就可以回答你

个人感觉豆包比其他国内大模型响应要快速许多,大约2s返回,其他平台有时需要10s,太可恶啦!😘😘😘

4.2 报错

如果返回error ,大家对照列表查询错误代码,结合提示排查解决

  1. 总结

🥳🥳🥳现在,我们在本教程中,您学习了如何使用ESP32接入语言大模型之豆包。🛹🛹🛹从而实现对外部世界进行感知,充分认识这个有机与无机的环境,后期会持续分享esp32跑freertos实用案列🥳🥳🥳科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣

资料来源:火山引擎-开发者社区

### 关于 ESP-ADF 和豆包的相关资源 #### 什么是 ESP-ADF? ESP-ADF 是 Espressif 提供的一个音频开发框架,旨在简化基于 ESP32 的音频应用开发过程。它集成了多种功能模块,如音频播放、录音、语音识别等[^1]。 #### 豆包 API 及其与 ESP32 的集成 豆包是由字节跳动推出的一款多功能人工智能助手,支持通过 API 接口实现语音交互等功能。对于 ESP32 用户来说,可以通过 Arduino 编程环境轻松调用豆包的 API 功能来完成语音处理任务[^2]。 以下是几个可能对你有帮助的方向: --- ### 示例项目推荐 #### 示例一:使用 ESP-ADF 实现 AI Agent 集成 Espressif 官方提供了一个名为 `volc_rtc` 的示例项目,位于以下路径: ```plaintext https://github.com/espressif/esp-adf/tree/master/examples/ai_agent/volc_rtc ``` 此项目展示了如何利用 ESP-ADF 结合第三方服务(类似于豆包的功能)创建实时通信应用程序。虽然该例子本身并未直接涉及豆包,但它提供了很好的基础架构用于扩展到其他类似的 AI 平台。 #### 示例二:ESP32 连接至豆包的服务端 针对希望快速上手并尝试将豆包融入硬件设备中的开发者而言,“ESP32接入国产大模型豆包”的文章是一个不错的起点。这篇文章介绍了如何配置网络请求以及发送数据给豆包服务器获取响应的方法。 --- ### 技术要点解析 #### 如何设置开发环境? 为了运行上述提到的例子或者自行构建新的解决方案,建议按照如下指南准备你的工作区: 1. **安装工具链** 下载最新版本 IDF 工具链或直接选用平台IO插件。 2. **加载库文件** 如果计划以 Arduino IDE 开发,则需额外引入特定依赖项比如 WiFiClientSecure 库以便安全连接云端接口。 3. **编写代码逻辑** 下面给出一段简单的伪代码片段作为参考,展示怎样发起 HTTP POST 请求向远程主机传递 JSON 数据结构体: ```cpp #include <WiFi.h> #include <HTTPClient.h> void setup() { Serial.begin(9600); // 初始化Wi-Fi连接... } void loop() { if(WiFi.status()== WL_CONNECTED){ HTTPClient http; String url = "http://example.doubaoapi.com"; // 替换为目标API地址 http.begin(url); int httpResponseCode = http.POST("{\"text\":\"hello world\"}"); if (httpResponseCode>0) { String payload = http.getString(); Serial.println(payload); } else{ Serial.print("Error on sending POST: "); Serial.println(httpResponseCode); } http.end(); }else{ Serial.println("Disconnected from Wi-Fi"); } } ``` 以上脚本仅作示范用途,请依据实际需求调整参数设定值。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值