squllwu 发表于 2024-4-15 21:09:55

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接口,处理问题,返回到移动端。一、 现环境编程语言:MicroPythonIDE:Thonny PyCharm首先配置开发板,加载主控核心。开发板烧录,执行点灯。
一、 实现代码 移动端: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 encoded3.请求模块: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.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
四、 运行效果


页: [1]
查看完整版本: FireBeetle 2 ESP32 C6+ ChatGPT问答