python调用openai.api制作一个chatgpt对话机器人。

本代码实现了一个chatgpt对话机器人,模型有达芬奇,可以设置为chatgpt3.5


from flask import Flask, render_template
from flask_socketio import SocketIO, emit

import openai
import re
import os

# 设置 OpenAI API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")

# 初始化 Flask 应用和 SocketIO 服务
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

# 定义上下文变量和对话历史记录
context = ""
conversation_history = []

# 定义生成 Markdown 格式的对话记录函数
def generate_markdown_dialogue(conversation_history):
    dialogue = ""
    for i in range(0, len(conversation_history), 2):
        dialogue += f"- **User**: {conversation_history[i]}\n- **Bot**: {conversation_history[i+1]}\n\n"
    return dialogue

# 定义对话事件处理函数
@socketio.on('my event')
def handle_my_event(json):
    global context, conversation_history

    # 获取用户输入
    user_input = json['data']

    # 将用户输入和上下文信息传递给 OpenAI API
    response = openai.Completion.create(
        engine="text-davinci-002",
        prompt=f"{context}{user_input}",
        max_tokens=1024,
        temperature=0.7,
        n=1,
        stop=None,
    )

    # 解析 OpenAI API 返回的结果
    bot_response = response.choices[0].text.strip()
    bot_response = re.sub(r"[^\x00-\x7F]+", "", bot_response)  # 移除非 ASCII 字符
    context += f"{user_input}{bot_response}"
    conversation_history.append(user_input)
    conversation_history.append(bot_response)

    # 发送机器人回答和对话历史记录到客户端
    emit('my response', {'data': bot_response})
    emit('dialogue history', {'data': generate_markdown_dialogue(conversation_history)})

# 定义主页路由
@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0', port=5000)

给TA打赏
共{{data.count}}人
人已打赏
站长笔记

nginx反向代理open.AI的api

2023-3-4 16:12:51

站长笔记

OpenAI/ChatGPT Plus 支持的卡

2023-3-5 14:34:01

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索