当前位置: 首页 > news >正文

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

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

  • 1. 豆包大模型
    • 1.1 了解豆包 api
      • 1.1.2 HTTP 调用
    • 1.2 Http接口鉴权
    • 1.3. 接口参数说明
    • 1.3.1 请求体(request)参数
    • 1.3.2 返回(response)参数
    • 1.3.3 错误响应
  • 2. 先决条件
    • 2.1 环境配置
    • 2.2 所需零件
  • 3. 核心代码
  • 4. 上传验证
    • 4.1 对话测试
    • 4.2 报错
  • 5. 总结

1. 豆包大模型

视频地址:https://www.bilibili.com/video/BV1BU411U78i

ESP32接入国产大模型之豆包

首先声明没有恰饭广告,源代码已经匿名处理,制作细节非常完善,方便大家复刻才会提供快捷的相关链接跳转!!!😘😘😘
在这里插入图片描述

豆包大模型是字节跳动推出的自研大模型,以优质模型效果为企业打造丰富的业务体验。
在这里插入图片描述

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

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

模型响应时间内容质量免费token次数地址
豆包2s9分50万https://www.volcengine.com/product/doubao
MiniMax3s8分500万https://www.minimaxi.com/
智谱清言7s8分300万https://open.bigmodel.cn/
文心一言10s9分500万https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Nlks5zkzu
通义千问8s8分800万https://tongyi.aliyun.com/qianwen/

这一次还是采用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)参数

curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer ${API_KEY}" \-d '{"model": "${YOUR_ENDPOINT_ID}","messages": [{"role": "system","content": "You are a helpful assistant."},{"role": "user","content": "Hello!"}],"stream": true}'

注意

model字段仅支持填写推理接入点(形式为ep-xxxxxxxxx-yyyy),不再支持模型名称+版本号的格式。

1.3.2 返回(response)参数

在这里插入图片描述

1.3.3 错误响应

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

在这里插入图片描述

2. 先决条件

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

我们将使用 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

在这里插入图片描述

3. 核心代码

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 responseDynamicJsonDocument 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 SerialSerial.begin(115200);// Connect to Wi-Fi networkWiFi.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 nothingif (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结构进行请求。

4. 上传验证

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

在这里插入图片描述

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

在这里插入图片描述

直接在库管理安装Arduinojson

在这里插入图片描述

4.1 对话测试

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

在这里插入图片描述

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

4.2 报错

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

在这里插入图片描述

5. 总结

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

如果你有任何问题,可以通过q group(945348278)加入鹏鹏小分队,期待与你思维的碰撞😘😘😘

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年自动驾驶SLAM面试题及答案(更新中)
  • docker文件挂载和宿主主机文件的关系
  • 【IoTDB 线上小课 05】时序数据文件 TsFile 三问“解密”!
  • 2024在线PHP加密网站源码
  • 代码随想录算法训练营第二十天|二叉树 part7
  • 香薰学习笔记
  • 云计算的三种服务模式
  • c#,NumSharp 中的 NDArray属性说明
  • BUUCTF逆向wp [MRCTF2020]Xor
  • Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)
  • 代码随想录算法训练营第47天
  • wkhtmltopdf 工具安装与使用
  • excel系列(三) - 利用 easyexcel 快速实现 excel 文件导入导出
  • https和http有哪些区别?
  • 邮件安全篇:如何防止邮件泄密?
  • [nginx文档翻译系列] 控制nginx
  • 【刷算法】求1+2+3+...+n
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • docker python 配置
  • Docker下部署自己的LNMP工作环境
  • Git 使用集
  • java概述
  • laravel with 查询列表限制条数
  • opencv python Meanshift 和 Camshift
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Promise面试题,控制异步流程
  • Puppeteer:浏览器控制器
  • Shell编程
  • v-if和v-for连用出现的问题
  • Vue UI框架库开发介绍
  • 二维平面内的碰撞检测【一】
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何学习JavaEE,项目又该如何做?
  • 数据结构java版之冒泡排序及优化
  • 通过几道题目学习二叉搜索树
  • 说说我为什么看好Spring Cloud Alibaba
  • #pragma data_seg 共享数据区(转)
  • (C#)一个最简单的链表类
  • (笔试题)分解质因式
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)一些感悟
  • (自适应手机端)行业协会机构网站模板
  • ./configure、make、make install 命令
  • .Net - 类的介绍
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CLR基本术语
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET delegate 委托 、 Event 事件
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net8 Blazor 尝鲜