2024-4-15 21:09:55 [显示全部楼层]
120浏览
查看: 120|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32 C6+ ChatGPT问答

[复制链接]
一、 概要
FireBeetle 2 ESP32-C6是一款基于ESP32-C6芯片设计的低功耗物联网开发板,适用于智能家居项目。ESP32-C6搭载160MHz的高性能RISC-V32位处理器,支持Wi-Fi 6、Bluetooth 5、Zigbee 3.0、Thread 1.3通讯协议,可接入多种通讯协议的物联网网络。
ChatGPT是一种基于人工智能技术的大型语言模型,它利用深度学习和自然语言处理技术来模拟人类的对话过程。ChatGPT是由OpenAI公司开发并训练的,它拥有强大的语言理解和生成能力,可以与用户进行流畅、自然的对话。ChatGPT的主要功能包括回答各种类型的问题、提供相关的知识和信息、参与闲聊和对话等。它可以根据用户的输入生成连贯、富有逻辑的回复,并且能够理解和识别上下文信息,从而进行更加精准的回答和对话。
该项目使用FireBeetle 2 ESP32-C6作为移动端,向服务器端发送问答请求;服务器端接受请求,并且调用ChatGPT接口,处理问题,返回到移动端。
一、 现环境
编程语言:MicroPython
IDE:Thonny PyCharm
首先配置开发板,加载主控核心。
FireBeetle 2 ESP32 C6+ ChatGPT问答图1
开发板烧录,执行点灯。

FireBeetle 2 ESP32 C6+ ChatGPT问答图2
一、 实现代码
移动端:
1.WiFi模块:
def do_connect():
    wlan = network.WLAN(network.STA_IF)  # 创建一个WLAN对象
    wlan.active(True)  # 激活WLAN
    if not wlan.isconnected():  # 如果未连接WiFi
        print('正在连接WiFi...')
        wlan.connect(WiFi_name, WiFi_key)  # 连接WiFi
        i = 1
        while not wlan.isconnected():  # 等待WiFi连接成功
            print("正在连接...{}".format(i))
            i += 1
            time.sleep(1)
    print('网络配置:', wlan.ifconfig()) # 输出网络配置信息
2.编码模块:
def url_encode(s):
    encoded = ''
    for char in s:
        if ord(char) > 127:
           encoded +=''.join('%{:02X}'.format(b) for b in char.encode('utf-8'))
        else:
            encoded += char
    return encoded
3.请求模块:
defsend_request(query):
    # 验证query是否合法(这里假设query不能为空,具体的验证逻辑根据实际情况设定)
    if not query:
      return '查询参数不能为空'
    s = url_encode("你是谁,能介绍一下石家庄吗")
    # 发送 HTTP POST 请求
    x = urequests.get('http://你的服务器地址/query?question='+s )
    # 更清晰的条件判断语句
    if x.status_code == 200:
         return x.text
    else:
     # 返回更具体的错误信息
         return f'请求失败,请检查您的网络{x.status_code}:{x.reason}'
注:由于某些原因,现在无法在Thonny控制台输入中文,进行问答;目前只能在代码中写出所要提问的问题。
服务器端:
Python+Flask框架
OpenAI处理模块:
classOpenaiChatModule:
    def __init__(self, openai_api_key):
        self.openai_api_key = openai_api_key
        self.origin_model_conversation = [
            {"role":"system", "content": "你是用户user的好朋友,名字叫钢蛋儿,能够和user进行愉快的交谈。"}
    def chat_with_origin_model(self, text):
        openai.api_key = self.openai_api_key
        text = text.replace('\n', '').replace('\r', '').strip()
        if len(text) == 0:
            return
        # print(f'chatGPT Q:{text}')
       self.origin_model_conversation.append({"role": "user","content": text})
        response =openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            # model="gpt-4",
           messages=self.origin_model_conversation,
            max_tokens=2048,
            temperature=0.3,
        )
        reply =response.choices[0].message.content
        reply = reply.replace('\n','').replace('\r', '')
       self.origin_model_conversation.append({"role":"assistant", "content": reply})
        return reply
接收请求+返回移动端内容:
@app.route('/query',methods=['post','get'])
def hello_world():
    question = request.args.get('question')
    print("-------", question)
    res =openai_chat_module.chat_with_origin_model(question + '30字以内')

return res

四、 运行效果
FireBeetle 2 ESP32 C6+ ChatGPT问答图4
FireBeetle 2 ESP32 C6+ ChatGPT问答图3



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail