admin管理员组文章数量:1632051
这段代码主要实现了一个基于OpenAI GPT-3.5模型的聊天机器人,与用户进行简单的文本交互。通过对该代码进行编写,读者可以后续接入INMP441进行音频输入,然后在使用百度api进行语音转文字,将文字发送给chatgpt,然后将接受到的语音通过tts 进行文字转语音,然后在将语音通过max98357音频放大模块输出到喇叭,就可以实现自己的智能对话机器人了。
然后可扩展内容为机器人加上双足是会动的桌面机器人了,然后还可以扩展显示屏,3D打印模型,绘制pcb等,可扩展能力超多。
具体实现过程如下:
1. 首先定义了一些必要的参数,如OpenAI API的key、API接口地址、WiFi名称和密码等。
2. 定义了一个连接WiFi的函数do_connect(),使用network库连接指定WiFi,并输出网络配置信息。
3. 定义了一个发送请求的函数send_request(),该函数接收两个参数:用户输入的消息和上一次对话的历史消息,将它们组装成payload,并通过requests.post()方法发送到OpenAI API。最后返回响应结果response。
4. 在主程序中先调用do_connect()函数连接WiFi,然后进入一个循环,不断接收用户输入,调用send_request()函数发送请求,获取AI的回复并输出给用户。
5. 将AI回复添加到对话历史中,以便下一次请求时使用。
import ujson # 导入ujson库,用于处理JSON数据
import urequests as requests # 导入urequests库,用于发送HTTP请求
import network # 导入network库,用于连接WiFi
import time # 导入time库,用于延时操作
openai_api_key = "替换成你自己的api" # OpenAI的API密钥
openai_api_base = "你自己的URL" # OpenAI API接口地址
WiFi_name = "your wifi" # WiFi名称
WiFi_key = "your key" # 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()) # 输出网络配置信息
def send_request(input_message, conversation_history):
message = {"role": "user", "content": input_message} # 构造用户输入消息
messages = [message] + conversation_history # 将用户输入消息与对话历史组合
payload = {
"model": "gpt-3.5-turbo", # 使用的OpenAI模型
"messages": messages # 消息列表
}
headers = {
"Content-Type": "application/json", # 请求头中的Content-Type
"Authorization": f"Bearer {openai_api_key}" # 请求头中的Bearer Token
}
response = requests.post(openai_api_base + "/chat/completions", json=payload, headers=headers) # 发送POST请求
return response
do_connect() # 连接WiFi
conversation_history = [] # 对话历史列表
while True:
input_message = input("用户: ") # 接收用户输入
print(input_message)
response = send_request(input_message, conversation_history) # 发送请求
completion = ujson.loads(response.text)['choices'][0]['message']['content'] # 获取AI的回复
print("AI: " + completion) # 输出给用户
conversation_history.append({"role": "assistant", "content": completion}) # 将回复添加到对话历史中
版权声明:本文标题:ESP32接入chatgpt api,实现连续对话 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729103288a1186762.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论