【ESP32接入国产大模型之文心一言】

2024-01-04

1. 怎样接入文心一言

随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。在这个领域中,文心一言作为一款强大的自然语言处理工具,具有许多重要的应用价值。本文将重点介绍如何通过ESP32接入国产大模型之文心一言api,以及其中的重点词汇或短语。
在这里插入图片描述

1.1 了解文心一言

文心一言是百度打造出来的人工智能大语言模型,具备跨模态、跨语言的深度语义理解与生成能力,文心一言有五大能力,文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成,其在搜索问答、内容创作生成、智能办公等众多领域都有更广阔的想象空间。文心一言企业服务由千帆大模型平台提供,包括推理服务及大模型微调等一系列开发和应用工具链。文心一言大模型现已升级至4.0,企业客户可通过百度智能云千帆大模型平台申请接入。

1.2 接入文心一言

API 列表
百度智能云千帆平台提供了丰富的API,保留对话Chat、续写Completions、向量Embeddings、插件应用、Prompt工程、大模型训练、管理及服务等API能力,详情请查看 API列表

  1. 大模型相关
  • 对话Chat:支持创建chat,用于发起一次对话。
  • 续写Completions:支持创建completion,用于发起一次续写请求,不支持多轮会话等。
  • 向量Embeddings:支持Embeddings,用于根据输入内容生成对应的向量表示。
  • 自定义模型导入:支持HuggingFace Transformer架构的自定义模型导入,提供自定义模型导入相关API能力。
  • 图像Images:提供图像相关API能力。
  1. 插件应用:提供域内知识搜索增强插件API相关能力。
  2. Prompt工程:提供模版相关API能力。
  3. 大模型训练:提供创建训练任务、任务运行、停止任务运行及获取任务运行详情等API能力。
  4. 大模型管理:提供获取模型、模型版本详情及将训练任务发布为模型等API能力。
  5. 大模型服务:提供创建服务、获取服务详情等API能力。

1.3 API 调用流程简介

API 的调用流程如下图所示。

image.png

  1. 创建一个千帆应用。根据实际需求创建千帆应用,创建成功后,获取AppID、API Key、Secret Key 等信息。
  2. API 授权。对应用的 AppID 进行授权。
  3. 获取接口访问凭证 access_token 。根据第1步获取的 API Key 和 Secret Key ,调用获取 access_token 接口获取 access_token ,通过 access_token 鉴权调用者身份。
  4. 调用API接口。例如调用ERNIE-Bot相关接口,详见 API列表

1.4 API 调用流程

1.4.1 步骤一. 创建千帆应用

(1)登录百度智能云千帆控制台。

请您注册并登录 百度智能云千帆控制台

在这里插入图片描述

注意:为保障服务稳定运行,账户最好不处于欠费状态。

(2)创建千帆应用

进入 控制台创建应用

在这里插入图片描述

(3)创建应用后,获取AppID、API Key、Secret Key。

在这里插入图片描述

1.4.2 步骤二. 服务授权

应用创建后,选择对应授权的公有云服务。
在这里插入图片描述

1.4.3 步骤三. 调用API接口

调用千帆提供的相关接口,如ERNIE-Bot等,详见 API列表

  1. ERNIE-Bot
    我们选择ERNIE-Bot:ERNIE-Bot是百度自行研发的大语言模型,覆盖海量中文数据,具有更强的对话问答、内容创作生成等能力。

在这里插入图片描述

  1. 在线调试
    百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
    在这里插入图片描述

  2. 获取AccessToken

应用列表选择自己创建的《ESP32语音聊天助手》,采用C#示例代码,
在这里插入图片描述
然后点击调试,复制获取的AccessToken: 24.7cc213f615669e6191cf3f65fad26ed2.2592000.1706881758.282335-46332156
在这里插入图片描述
1处粘贴上面的AccessToken,在2处中括号中输入

“role”:“user”,“content”:“介绍一下你自己”

在这里插入图片描述
调试结果如下
在这里插入图片描述
查看C#代码需要三部分代码
在这里插入图片描述

"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=24.7cc213f615669e6191cf3f65fad26ed2.2592000.1706881758.282335-46332156"
"Content-Type", "application/json"
"{""messages"":[{""role"":""user"",""content"":""介绍一下你自己""},{""role"":""assistant"",""content"":""您好,我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。""}],""disable_search"":false,""enable_citation"":false}"

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 开发板。

  • 1 x ESP32( 阅读最佳 ESP32开发板 )

3. 核心代码

esp32 Arduino代码如下

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

// 1. Replace with your network credentials
const char* ssid = "J09 502";
const char* password = "qwertyuiop111";

// Replace with your OpenAI API key
// const char* apiKey = "1CeoUoYgnfc6s5liNR2uoQrk";
// const char* secret_Key = "G3n9aHVerzGqr0EWsLnca0fVkiXI9BVz";
//const char* access_token = "24.01bb97173188a1a22d6a6991918f6508.2592000.1706880634.282335-46332156";
// Send request to OpenAI API
String inputText = "你好,文心一言";
// 2. Replace with your access_token
String apiUrl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=24.23087285c9ab53cbfd7aad5c032ae371.2592000.1706878581.282335-46332156";

String answer;
String getGPTAnswer(String inputText) {
  HTTPClient http;
  http.begin(apiUrl);
  http.addHeader("Content-Type", "application/json");
  // http.addHeader("access_token", String(access_token));
  String payload = "{\"messages\":[{\"role\": \"user\",\"content\": \"" + inputText + "\"}],\"disable_search\": false,\"enable_citation\": false}";
  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["result"];
    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('\n');
    // 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>:用于处理Wi-Fi连接功能。
#include <HTTPClient.h>:用于发送HTTP请求。
#include <ArduinoJson.h>:用于解析从服务器返回的JSON格式数据。
  1. 第一处修改定义Wi-Fi网络凭证:
const char* ssid = "J09 502";:Wi-Fi网络名。
const char* password = "qwertyuiop111";:Wi-Fi网络密码。
  1. 第二处修改定义要调用的API地址:
String apiUrl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=24.23087285c9ab53cbfd7aad5c032ae371.2592000.1706878581.282335-46332156";
  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. 上传验证

打开串口监视器,输入你想问的问题,他就可以回答你
在这里插入图片描述

5. 总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ESP32接入国产大模型之文心一言】 的相关文章

  • 批处理文件:从串口接收数据并将其写入txt文件

    我正在尝试通过 USB 串行端口从 Arduino 提取一些数据并将其写入 txt 文件 因此 我使用批处理文件 Windows 7 普通cmd 它发送例如 d 从 Arduino 请求所需的数据 收到 d 后 Arduino 开始向 PC
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • Arduino I2S 正弦波

    我正在开发一个项目 我想通过组合不同的正弦波来生成 简单 声音 我使用的是 arduino mkrZero 因为它内置了 I2S 接口 并且似乎有足够的处理能力来满足我的需求 I have wired my system exactly l
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • Android 和 Arduino 都通过蓝牙接收奇怪的值

    我正在 Android 端使用 BluetoothChat 代码使用聊天框向 Arduino UNO 发送开 关信号 我发送 110 119 或下面定义的其他情况 但是当我显示接收到的值时 它显示奇怪的Arduino 串行监视器中的值 即
  • 经典蓝牙 (2.1) 设备可实现的最小数据包延迟是多少?

    我正在使用 RN42 http www microchip com wwwproducts en RN42 http www microchip com wwwproducts en RN42 蓝牙模块以 115200 波特率 UART S
  • 静态 uint8_t 数组的输入过程和类型

    我目前正在尝试将 Arduino IDE 中的整数变量转换为静态 uint8 t 数组的值 我在用 include
  • C++ Linux (Ubuntu) 正确写入串行(对于 Arduino)

    我想知道是否有一种标准方法可以与高效的串行设备进行通信 我应该使用标准库吗 如果有 是哪一个 现在我正在摆弄让 LED 根据输入的数字以给定的量亮起 Arduino 代码如下 只是练习一些东西 看我过于简单且低效的测试 include
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • 如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我意识到这个问题会引起一些人的注意 并且我意识到 JavaScript 传统上是一种解释性语言 请让我解释一下 我是一名专门从事 We
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 是否可以在 Arduino 上运行 ZeroMQ

    我想知道是否可以通过 ZeroMQ 与 Arduino 进行通信 我想使用 Arduino 来控制一些设备 并希望将大部分应用程序放在计算机上 为此 如果 Arduino 和控制器可以通过 Zeromq 以及 WiFi 或以太网扩展板进行通
  • 在声明对象之前在全局函数中使用类的成员函数

    我有一个事件处理函数 在该函数中调用了类的成员函数 事件处理函数在类 cpp 文件中声明 但不是类的一部分 它不是成员函数 当我编译代码时 编译器表示该函数在范围内 因为它正在调用全局事件处理函数中的成员函数 我的问题如下 有没有办法在全局
  • Arduino C++ 析构函数?

    我知道在Arduino中你不能使用delete 那么什么时候调用 C 类中定义的析构函数呢 同样 如果我想创建一个指向数组的指针 我必须使用malloc and free 当对象被销毁时 析构函数被调用 对于自动 堆栈上 变量 它在离开其作
  • 如何在 Arduino 中将 char 变量作为数字打印到串行端口?

    我正在使用 Arduino Uno 我正在从 EEPROM 读取一个字节值并将该值存储在类型变量中char 1 字节 我想将变量的值作为数字 而不是相应的 ASCII 代码 打印到串行监视器 例如考虑char val 5 我想查看串行监视器
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i
  • 仅从日期计算夏令时

    我正在使用 Arduino 和实时时钟芯片 该芯片补偿了闰年等 因此它始终具有正确的日期 但我认为由于区域复杂性 它不处理夏令时 时钟可以给出日 月 年 从 1 开始 以及星期几 星期日 0 到星期六 6 因为我需要与用户输入的日期和时间进
  • 云到设备 Azure IoT REST API

    我探索了如何使用 Azure REST API 将数据从设备发送到云 它运行无缝 没有任何问题 我没有找到有关使用 Azure IoT Hub REST API 向 Arduino 板发送云到设备消息的好文章 有人可以就此提供建议吗 您还可
  • Arduino CLI 编译器“ino”和一些基本草图导致编译错误

    我正在尝试使用 cli 编译器 ino 编译基本的以太网 UDP Sketch 我从他们的 github 存储库下载了最新版本 ino init然后是 src sketch ino 的内容 include
  • 尽管给出了供应商 ID,Web 串行 api 显示“未找到兼容设备”

    Windows 8 1 Chrome v91 0 4472 164 我已根据设备管理器验证了供应商和产品 ID 该设备是使用 Ch340 驱动程序的 Arduino UNO 它在设备管理器中的端口 COM 和 LPT 下列为 USB SER

随机推荐

  • CRM软件对企业发展起着哪些作用?CRM的功能解析

    虽然不少科技成果昙花一现 但CRM管理系统作为销售和营销领域的核心技术 已经牢牢占据了不可撼动的地位 拥有一个部署得当的CRM系统能为企业带来诸多好处 它可以跟踪和管理销售人员与潜在 现有客户的所有互动和沟通 并帮助他们识别出需要重点培养或
  • 基于SpringBoot的旅游网站281

    文章目录 项目介绍 主要功能截图 部分代码展示 设计总结 项目获取方式 作者主页 超级无敌暴龙战士塔塔开 简介 Java领域优质创作者 简历模板 学习资料 面试题库 关注我 都给你 文末获取源码联系 项目介绍 基于SpringBoot的旅游
  • SpringIOC之support模块DefaultMessageSourceResolvable

    博主介绍 全网粉丝5W 全栈开发工程师 从事多年软件开发 在大厂呆过 持有软件中级 六级等证书 可提供微服务项目搭建与毕业项目实战 博主也曾写过优秀论文 查重率极低 在这方面有丰富的经验 博主作品 Java项目案例 主要基于SpringBo
  • SpringBoot多模块(module)项目搭建

    https www cnblogs com zfyang2429 p 10801959 html
  • JDK21新特性探秘

    欢迎关注公众号 通过文章导读关注 11来了 及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景 中间件系列笔记 和 编程高频电子书 文章导读地址 点击查看文
  • 5.1 中央寄存器的原理和组成

    思维导图 中央处理器 CPU 核心原理与组成 引言 中央处理器 CPU 作为计算机的 大脑 在现代计算机硬件中扮演着至关重要的角色 本文旨在深入探讨CPU的基本原理和组成部分 为读者提供一个全面的理解 CPU的基本原理 1 信息处理 CPU
  • <sa8650>sa8650 CDT-之-汽车CDT配置用户指南(上)

    sa8650 sa8650 CDT 之 汽车CDT配置用户指南 上 2 CDT概述 2 1 Platform ID值 2 2 CDT一般结构 2 3 CDT头 2 4 块元数据 2 5 CDBs 2 6 加载CDT的启动过程
  • 实现智能化运维的关键驱动力,你知道可观测性工具吗

    可观测性是指根据系统产生的数据评估内部系统状态的能力 对于IT运维团队来说 可观测性工具是非常重要的 通过这些工具 IT团队可以同时观察或深入了解IT基础架构中不同应用程序和资源的健康状况和状态 从而主动检测异常 分析问题并解决问题 可观测
  • linux centos使用rz、sz命令上传下载文件

    一般情况下 我们会使用终端软件 如 XShell SecureCRT 或 FinalShell 来连接远程服务器后 使用 rz 命令上传本地文件到远程服务器 再解压发版上线 一 安转使用 系统 Linux CentOS 7 安装 rz 和
  • Metasploit使用msfconsole命令启动时,报错‘/usr/share/metasploit-framework/......’

    当使用msfconsole命令启动时 msf无法启动 且报错 解决办法 1 更新apt程序库 apt get update 2 更新metasploit 框架 apt get install metasploit framework 3 重
  • 【C++项目】【报错】[错误] new: No such file or directory, compilation terminated【及解决方法】

    一 问题描述 C源代码文件在编译过程中报错 错误 new No such file or directory compilation terminated 代码如下 include
  • 第8章 多媒体嵌入

    学习目标 了解视频 音频嵌入技术 能够总结HTML5视频 音频嵌入技术的优点 了解常用的视频文件格式和音频文件格式 能够归纳HTML5支持的视频和音频格式 掌握HTML5中视频的嵌入方法 能够在HTML5页面中添加视频文件 掌握HTML5中
  • 服务器的丢包率高怎么办

    网络出现丢包状况了怎么办 具体情况可以从以下几点来判断 1 有可能是线路故障导致的 所以可以用光纤打光仪先判断是否是光纤的问题 2 对于设备方面来说 很多都是网络接口的光纤接触不良等 3 也可能是操作系统的问题 比如网卡问题和网络运营线路问
  • element ui弹窗在别的弹窗下方,优先级不高的问题

    在 弹窗 的标签中加入append to body即可解决该问题
  • Python基础(十六、数据容器汇总)

    文章目录 一 数据容器汇总 二 数据容器通用操作 1 遍历 2 通用统计 len 容器 max 容器 min 容器
  • 解决重定向导致的cookie丢失

    转发前加上 String s response getHeader Set Cookie s HttpOnly Secure SameSite None response setHeader Set Cookie s
  • Java编写CS架构学生管理系统

    一 环境准备 工具 eclipse navicat 环境 jdk8 数据库 mysql5 7 二 正式开始 第一步 分析需求 就是我们需要知道该干什么 登录功能 对学生信息增删改查操作 第二步 创建项目StudentManager 由于我们
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • How to collect data

    How to collect data 爬虫 Java Python 反爬虫 自动化测试工具 Selenium QMetry Automation Studio Te
  • 【ESP32接入国产大模型之文心一言】

    1 怎样接入文心一言 随着人工智能技术的不断发展 自然语言处理领域也得到了广泛的关注和应用 在这个领域中 文心一言作为一款强大的自然语言处理工具 具有许多重要的应用价值 本文将重点介绍如何通过ESP32接入国产大模型之文心一言api 以及其