ESP32接入chatgpt api,实现连续对话

本文介绍了如何利用OpenAIGPT-3.5模型构建一个能接收音频输入、进行语音转文字通信的聊天机器人,同时提及了后续的扩展可能性,如添加移动功能、显示器和3D打印组件。
摘要由CSDN通过智能技术生成

这段代码主要实现了一个基于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})  # 将回复添加到对话历史中

  • 25
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值