812| 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 首先配置开发板,加载主控核心。 开发板烧录,执行点灯。 一、 实现代码 移动端: 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 四、 运行效果 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed