0


MicroPython 环境下使用 ESP32 连接百度 AI 大模型

前言

在物联网领域,ESP32 由于其丰富的功能和低功耗性能成为了一种流行的选择。结合 MicroPython,它为开发者提供了一个高效的开发环量,让 Python 程序员也能轻松介入到嵌入式系统和 IoT 应用的开发之中。本文将介绍如何利用这些技术,将 ESP32 连接到百度的 AI 大模型服务中,实现智能对话和其它高级功能。

环境设置

硬件:

  • ESP32开发板,一块性能强大且成本低廉的物联网微控制器。

软件:

  • MicroPython固件:一种为微控制器优化的轻量级 Python 解释器。
  • Thonny IDE:一个简单且易于使用的 Python IDE,支持 MicroPython 开发。

选择大模型

  • 访问百度智能云官网,搜索千帆大模型,获取所需的 API 接入信息。

百度智能云官网

首页搜索:千帆大模型

Thonny上实现

连接WiFi

要让 ESP32 能够与互联网通信,首先需要连接到 WiFi。以下代码简单演示了如何在 MicroPython 中完成这一步骤:

  1. import network
  2. import time
  3. # WiFi credentials
  4. SSID = 'ssid'
  5. PASSWORD = 'password'
  6. # Connect to WiFi
  7. def connect_wifi():
  8. wlan = network.WLAN(network.STA_IF)
  9. wlan.active(True)
  10. wlan.connect(SSID, PASSWORD)
  11. print('Connecting to', SSID)
  12. while not wlan.isconnected():
  13. time.sleep(1)
  14. print('Waiting for connection...')
  15. print('Connected to', SSID)
  16. print('IP Address:', wlan.ifconfig()[0])
  17. connect_wifi()

连接百度大模型

一旦完成 WiFi 连接,我们可以编写代码,调用百度 AI 大模型的 API。以下是一个简单的示例:

  1. import urequests as requests
  2. import ujson as json
  3. def main():
  4. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=粘贴你网页上调试获取的token"
  5. payload = json.dumps({
  6. "messages": [
  7. {
  8. "role": "user",
  9. "content": "你好"
  10. }
  11. ]
  12. })
  13. headers = {
  14. 'Content-Type': 'application/json'
  15. }
  16. print("Sending payload: ", payload)
  17. print("Headers: ", headers)
  18. response = requests.post(url, headers=headers, data=payload.encode('utf-8'))
  19. # 打印完整的响应内容
  20. print("Status Code:", response.status_code)
  21. print("Response Text:", response.text)
  22. if __name__ == "__main__":
  23. main()

注意点与坑

  1. 当我们发送数据到服务器时,特别是包含了中文的情况下,需要保证数据以 utf-8 的形式编码。- 错误示例:**json=payload.encode('utf-8')- 正确示例:data=payload.encode('utf-8')正确的方式是对 payload 进行 utf-8 编码,然后才发送数据。错误的方式可能会导致请求失败,或返回意料之外的结果。并且参数是data,而不是json**
  2. 使用 urequestsujson 能够为 MicroPython 环境提供流畅的开发体验。它们是为在资源限制更为显著的微控制器上运行而优化的库,针对这类设备和应用场景进行了特别设计。

这边还可以填写其他的参数,根据自己的需求来填写,然后复制里面的“payload”放在Thonny中

请求回应图示

完整代码

  1. import network
  2. import time
  3. # WiFi credentials
  4. SSID = '###'
  5. PASSWORD = '###'
  6. # Connect to WiFi
  7. def connect_wifi():
  8. wlan = network.WLAN(network.STA_IF)
  9. wlan.active(True)
  10. wlan.connect(SSID, PASSWORD)
  11. print('Connecting to', SSID)
  12. while not wlan.isconnected():
  13. time.sleep(1)
  14. print('Waiting for connection...')
  15. print('Connected to', SSID)
  16. print('IP Address:', wlan.ifconfig()[0])
  17. connect_wifi()
  18. import urequests as requests
  19. import ujson as json
  20. def main():
  21. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=24.7d2d58b68086XXXXXXX790991.282335-81633959"
  22. payload = json.dumps({
  23. "messages": [
  24. {
  25. "role": "user",
  26. "content": "你好"
  27. }
  28. ]
  29. })
  30. headers = {
  31. 'Content-Type': 'application/json'
  32. }
  33. print("Sending payload: ", payload)
  34. print("Headers: ", headers)
  35. response = requests.post(url, headers=headers, data=payload.encode('utf-8'))
  36. # 打印完整的响应内容
  37. print("Status Code:", response.status_code)
  38. print("Response Text:", response.text)
  39. if __name__ == "__main__":
  40. main()
标签: 百度 python 单片机

本文转载自: https://blog.csdn.net/Wang2869902214/article/details/139648420
版权归原作者 送外卖的CV工程师 所有, 如有侵权,请联系我们删除。

“MicroPython 环境下使用 ESP32 连接百度 AI 大模型”的评论:

还没有评论