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]