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

【电机控制器】ESP32-C3语言模型——DeepSeek

【电机控制器】ESP32-C3语言模型——DeepSeek


文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、简介
  • 二、代码
  • 三、实验结果
  • 四、参考资料
  • 总结

前言

使用工具:


提示:以下是本篇文章正文内容,下面案例可供参考

一、简介

二、代码

#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>// 替换为您的 WiFi 凭据
const char *ssid = "你需要改的地方";
const char *password = "你需要改的地方";// 替换为您的 DeepSeek API 密钥
const char* apiKey = "你需要改的地方";// DeepSeek API 端点
const char* host = "api.deepseek.com";
const int httpsPort = 443;// 创建 WiFiClientSecure 对象
WiFiClientSecure client;// 设置超时时间 (单位:毫秒)
const unsigned long timeout = 10000;// 对话历史
const int maxHistory = 10; // 最大对话轮次
String conversationHistory[maxHistory]; // 存储对话历史
int historyIndex = 0; // 当前对话历史索引// 函数声明
void connectToWiFi();
String askDeepSeek(String question);
void printResponse(String response);
void addToHistory(String role, String content);
void printHistory();void setup() {Serial.begin(115200);// 连接到 WiFiconnectToWiFi();// 关闭证书鉴权client.setInsecure();Serial.println("初始化完成,请输入您的问题:");
}void loop() {// 检查串口是否有输入if (Serial.available()) {String question = Serial.readStringUntil('\n');question.trim(); // 去除换行符和空格if (question.length() > 0) {// 将用户问题添加到对话历史addToHistory("user", question);Serial.println("正在向 DeepSeek 提问...");String response = askDeepSeek(question);printResponse(response);// 将模型回复添加到对话历史addToHistory("assistant", response);// 打印当前对话历史printHistory();Serial.println("\n请输入下一个问题:");}}
}// 连接到 WiFi
void connectToWiFi() {WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println("正在连接到 WiFi...");}Serial.println("已连接到 WiFi");
}// 向 DeepSeek 提问
String askDeepSeek(String question) {String response = "";// 连接到 DeepSeek APIif (!client.connect(host, httpsPort)) {Serial.println("连接失败");return "连接失败";}// 构建请求String request = "POST /v1/chat/completions HTTP/1.1\r\n";request += "Host: " + String(host) + "\r\n";request += "Authorization: Bearer " + String(apiKey) + "\r\n";request += "Content-Type: application/json\r\n";request += "Connection: close\r\n";// 构建请求体DynamicJsonDocument doc(1024);doc["model"] = "deepseek-chat";doc["stream"] = true;// 添加对话历史JsonArray messages = doc.createNestedArray("messages");for (int i = 0; i < historyIndex; i++) {JsonObject message = messages.createNestedObject();message["role"] = i % 2 == 0 ? "user" : "assistant"; // 交替用户和助手角色message["content"] = conversationHistory[i];}// 添加当前问题JsonObject newMessage = messages.createNestedObject();newMessage["role"] = "user";newMessage["content"] = question;String requestBody;serializeJson(doc, requestBody);request += "Content-Length: " + String(requestBody.length()) + "\r\n\r\n";request += requestBody;// 发送请求client.print(request);// 记录开始时间unsigned long startTime = millis();// 流式接收响应while (client.connected()) {// 检查超时if (millis() - startTime > timeout) {Serial.println("响应超时");break;}// 读取数据while (client.available()) {String line = client.readStringUntil('\n');if (line.startsWith("data: ")) {String jsonData = line.substring(6);DynamicJsonDocument doc(1024);deserializeJson(doc, jsonData);// 提取回复内容if (doc.containsKey("choices")) {String content = doc["choices"][0]["delta"]["content"];response += content;}// 提取思维链内容(假设字段为 "reasoning")if (doc.containsKey("choices") && doc["choices"][0].containsKey("delta") && doc["choices"][0]["delta"].containsKey("reasoning")) {String reasoning = doc["choices"][0]["delta"]["reasoning"];Serial.println("思维链: " + reasoning);}}}}// 断开连接client.stop();return response;
}// 打印回复内容
void printResponse(String response) {Serial.println("DeepSeek 回复:");Serial.println(response);
}// 添加对话历史
void addToHistory(String role, String content) {if (historyIndex < maxHistory) {conversationHistory[historyIndex] = content;historyIndex++;} else {// 如果历史记录已满,移除最早的记录for (int i = 0; i < maxHistory - 1; i++) {conversationHistory[i] = conversationHistory[i + 1];}conversationHistory[maxHistory - 1] = content;}
}// 打印对话历史
void printHistory() {Serial.println("\n当前对话历史:");for (int i = 0; i < historyIndex; i++) {Serial.println((i % 2 == 0 ? "用户: " : "助手: ") + conversationHistory[i]);}
}

三、实验结果

回复结果为空,deepseek最近的服务器看起来情况不太好啊 - -
在这里插入图片描述

四、参考资料

【ESP32接入国产大模型之Deepseek】
立创开发板入门ESP32C3第八课 修改AI大模型接口为deepseek3接口

总结

本文仅仅简单介绍了【电机控制器】ESP32-C3语言模型——DeepSeek,评论区欢迎讨论。

相关文章:

【电机控制器】ESP32-C3语言模型——DeepSeek

【电机控制器】ESP32-C3语言模型——DeepSeek 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <Arduino.h&g…...

小型字符级语言模型的改进方向和策略

小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…...

力扣-贪心-56 合并区间

思路 先按照左区间进行排序&#xff0c;然后初始化left和right&#xff0c;重叠时&#xff0c;更新right&#xff0c;不重叠时&#xff0c;收集区间 代码 class Solution { public:static bool cmp(vector<int> a, vector<int> b){if(a[0] b[0]){return a[1] &…...

vue 3D 翻页效果

<template><view class"swipe-container" touchstart"onTouchStart" touchmove"onTouchMove" touchend"onTouchEnd"><view class"page">初始页</view></view> </template><script&g…...

【系列专栏】银行信息系统研发外包风险管控-08

银行信息系统研发外包风险管控 在金融科技日新月异的当下&#xff0c;银行业务对信息系统的依赖程度与日俱增。为了充分利用外部专业资源&#xff0c;提升研发效率并合理控制成本&#xff0c;许多银行选择将信息系统研发外包。然而&#xff0c;这一策略在带来诸多便利的同时&a…...

[ComfyUI] 【AI】如何获得一张人物图片的优质描述

在使用ComfyUI时,获取一张人物图片的优质英文描述非常重要,尤其是在涉及图像生成、自动化标签和多模态AI任务时。以下是一个简单的流程,可以帮助你快速从一张人物图片中提取出精确且高质量的英文描述。 1. 打开 Hugging Face 网站 首先,您需要访问 Hugging Face 提供的 J…...

深度学习基础--ResNet网络的讲解,ResNet50的复现(pytorch)以及用复现的ResNet50做鸟类图像分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 如果说最经典的神经网络&#xff0c;ResNet肯定是一个&#xff0c;这篇文章是本人学习ResNet的学习笔记&#xff0c;并且用pytorch复现了ResNet50&…...

stack,queue,priority_queue学习知识点

容器适配器 在c常用的容器中&#xff0c;有的是以容器迭代器为核心&#xff0c;而有的则以容器适配器为核心。较为常用的就包括queue和stack。接下来我将简单的以queue和stack的模拟实现介绍其特点。 在以下的模拟实现中&#xff0c;class Con就是我们的容器适配器&#xff0…...

css特异性,继承性

html <div class"introduce"><div class"title">介绍</div><div class"card-box"><div class"card"><div class"title">管理</div></div></div> </div> scs…...

力扣hot100刷题——11~20

文章目录 11.滑动窗口最大值题目描述思路&#xff1a;滑动窗口单调队列code 12.最小覆盖子串题目描述思路&#xff1a;双指针/滑动窗口哈希code Ⅰcode Ⅱ 13.最大子数组和题目描述思路&#xff1a;dp/贪心code 14.合并区间题目描述思路&#xff1a;贪心code 15.轮转数组题目描…...

R语言Stan贝叶斯空间条件自回归CAR模型分析死亡率多维度数据可视化

全文链接&#xff1a;https://tecdat.cn/?p40424 在空间数据分析领域&#xff0c;准确的模型和有效的工具对于研究人员至关重要。本文为区域数据的贝叶斯模型分析提供了一套完整的工作流程&#xff0c;基于Stan这一先进的贝叶斯建模平台构建&#xff0c;帮助客户为空间分析带来…...

速通HTML

目录 HTML基础 1.快捷键 2.标签 HTML进阶 1.列表 a.无序列表 b.有序列表 c.定义列表 2.表格 a.内容 b.合并单元格 3.表单 a.input标签 b.单选框 c.上传文件 4.下拉菜单 5.文本域标签 6.label标签 7.按钮标签 8.无语义的布局标签div与span 9.字符实体 HTML…...

安装 Milvus Java SDK

本主题介绍如何为 Milvus 安装 Milvus Java SDK。 当前版本的 Milvus 支持 Python、Node.js、GO 和 Java SDK。 要求 Java&#xff08;8 或更高版本&#xff09;Apache Maven 或 Gradle/Grails 安装 Milvus Java SDK 运行以下命令安装 Milvus Java SDK。 Apache Maven &…...

云手机如何进行经纬度修改

云手机如何进行经纬度修改 云手机修改经纬度的方法因不同服务商和操作方式有所差异&#xff0c;以下是综合多个来源的常用方法及注意事项&#xff1a; 通过ADB命令注入GPS数据&#xff08;适用于技术用户&#xff09; 1.连接云手机 使用ADB工具连接云手机服务器&#xff0c;…...

牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)

文章目录 牛客周赛 Round 82&#xff08;思维、差分、树状数组、大根堆、前后缀、递归&#xff09;A. 夹心饼干B. C. 食堂大作战&#xff08;思维&#xff09;D. 小苯的排列计数(差分、树状数组)E. 和和&#xff08;大根堆&#xff0c;前缀和&#xff09;F. 怎么写线性SPJ &…...

MQTT实现智能家居------2、写MQTT程序的思路

举个最简单的例子&#xff1a; 手机------服务器-------家具 我们这里只看手机和家具的客户端&#xff1a; 手机&#xff1a;1&#xff09;需要连接服务器 2&#xff09;需要发布指令给服务器到家里的家具 3&#xff09;接受来自于家里家具的异常状况 4&#xff09;保持心…...

大模型面试问题准备

1. BERT的多头注意力为什么需要多头&#xff1f; 为了捕捉不同子空间的语义信息&#xff0c;每个头关注不同的方面&#xff0c;增强模型的表达能力 2. 什么是softmax上下溢出问题&#xff1f; 问题描述&#xff1a; 上溢出&#xff1a;ye^x中&#xff0c;如果x取非常大的正数…...

C语言:二维数组在内存中是怎么存储的

目录 1. 二维数组的定义&#xff1a; 2. 行主序存储&#xff1a; 具体内存排列&#xff1a; 3. 如何通过指针访问数据&#xff1a; 4. 总结&#xff1a; 在 C 语言中&#xff0c;二维数组是按 行主序&#xff08;row-major order&#xff09; 存储的。也就是说&#xff0c…...

AI时代前端开发技能变革与ScriptEcho:拥抱AI,提升效率

在飞速发展的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着各个行业&#xff0c;前端开发领域也不例外。曾经被认为是核心竞争力的传统前端技能&#xff0c;例如精通HTML、CSS和JavaScript&#xff0c;其价值正在发生微妙的变化。 得益于…...

计算机毕业设计SpringBoot+Vue.js美容院管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

SmallThinker-3B部署教程:适配低显存设备的开源大模型轻量化方案

SmallThinker-3B部署教程&#xff1a;适配低显存设备的开源大模型轻量化方案 专为资源受限环境设计的智能助手&#xff0c;让每个人都能轻松用上大模型 1. 环境准备与快速部署 SmallThinker-3B-Preview是一个基于Qwen2.5-3b-Instruct微调而来的轻量级模型&#xff0c;专门为边…...

TP4056(x) 锂电线性充电电路设计实战指南

1. TP4056(x) 芯片基础解析 第一次接触TP4056这颗芯片时&#xff0c;我正为一个便携式设备项目寻找可靠的锂电池充电方案。当时被它"无需外接MOSFET和二极管"的特性吸引&#xff0c;实测后发现这确实是新手友好的设计利器。作为线性充电IC&#xff0c;TP4056系列通过…...

Windows笔记本也能跑3DGS!6G显存实战调参避坑指南(附完整配置清单)

Windows笔记本6G显存实战3D高斯泼溅&#xff1a;参数调优与性能平衡指南 当我在一台老旧的联想拯救者笔记本上首次尝试运行3D高斯泼溅(3DGS)训练时&#xff0c;显存不足的报错像一盆冷水浇灭了热情。这台仅配备GTX 1660 Ti&#xff08;6GB显存&#xff09;的设备&#xff0c;距…...

卷纱机PLC数据采集物联网解决方案

在纺织制造业中&#xff0c;卷纱机作为关键生产设备&#xff0c;其运行状态、生产效率及故障响应能力直接影响产品质量与企业效益。传统卷纱机多依赖人工巡检和本地监控&#xff0c;存在数据孤岛、响应滞后、维护成本高等问题。通过引入物联网技术&#xff0c;实时采集卷纱机PL…...

终极指南:如何用Codebox实现10+编程语言的智能开发与自动运行

终极指南&#xff1a;如何用Codebox实现10编程语言的智能开发与自动运行 【免费下载链接】codebox Open source cloud & desktop IDE 项目地址: https://gitcode.com/gh_mirrors/co/codebox Codebox是一款功能强大的开源云与桌面IDE&#xff0c;支持Java、Python、N…...

如何快速解锁网易云音乐NCM文件:3步实现音乐自由终极指南

如何快速解锁网易云音乐NCM文件&#xff1a;3步实现音乐自由终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&a…...

如何使用gumbo-parser构建网页截图与分享工具:完整实用指南

如何使用gumbo-parser构建网页截图与分享工具&#xff1a;完整实用指南 【免费下载链接】gumbo-parser An HTML5 parsing library in pure C99 项目地址: https://gitcode.com/gh_mirrors/gum/gumbo-parser gumbo-parser是一个纯C99编写的HTML5解析库&#xff0c;虽然该…...

Gopher360:3步让游戏手柄变身PC遥控器的实用工具

Gopher360&#xff1a;3步让游戏手柄变身PC遥控器的实用工具 【免费下载链接】Gopher360 Gopher360 is a free zero-config app that instantly turns your Xbox 360, Xbox One, or even DualShock controller into a mouse and keyboard. Just download, run, and relax. 项…...

Ostrakon-VL-8B效果集锦:从快餐到宴席,多场景识别实录

Ostrakon-VL-8B效果集锦&#xff1a;从快餐到宴席&#xff0c;多场景识别实录 最近在折腾一些视觉相关的项目&#xff0c;正好深度体验了一下Ostrakon-VL-8B这个模型。说实话&#xff0c;一开始没抱太大期望&#xff0c;毕竟现在各种视觉语言模型层出不穷&#xff0c;但用下来…...

Vue2集成AntV X6:从零构建一个功能完备的流程图编辑器

1. 为什么选择AntV X6构建流程图编辑器 在Vue2项目中需要实现流程图功能时&#xff0c;AntV X6是一个相当不错的选择。我最初选择它是因为相比其他图形库&#xff0c;X6在功能完整性和开发体验上找到了很好的平衡点。它既不像原生Canvas那样需要从零造轮子&#xff0c;也不像某…...