from flask import Flask, render_template, request, jsonify import openai import time

设置代理网址

openai.api_base = 'https://api.openai-proxy.com/v1'

替换为您自己的OpenAI API密钥

api_key = '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'

初始化OpenAI

openai.api_key = api_key

创建Flask应用程序

app = Flask(name)

定义可供选择的模型

available_models = { 'gpt-3.5-turbo-0301': 'GPT-3.5-Turbo-0301', 'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16k', 'gpt-3.5-turbo': 'GPT-3.5-Turbo', 'gpt-3.5-turbo-0613': 'GPT-3.5-Turbo-0613', 'gpt-3.5-turbo-16k-0613': 'GPT-3.5-Turbo-16k-0613' }

messages = []

@app.route('/') def index(): return render_template('index4.html', models=available_models)

@app.route('/get_response', methods=['POST']) def get_response(): user_input = request.form.get('user_input') selected_model = request.form.get('selected_model') system_message = request.form.get('system_message') temperature = float(request.form.get('temperature')) max_tokens = int(request.form.get('max_tokens')) continuous_chat = request.form.get('continuous_chat') # 获取连续对话参数

try:
    if continuous_chat == 'true' and messages:
        messages.append({'role': 'user', 'content': user_input})
    else:
        messages.clear()  # 清空消息列表
        messages.append({'role': 'system', 'content': system_message})
        messages.append({'role': 'user', 'content': user_input})

    # 调整消息历史记录的长度
    if len(messages) > 3:
        messages.pop(0)

    response = openai.ChatCompletion.create(
        model=selected_model,
        messages=messages,
        temperature=temperature,
        max_tokens=max_tokens,
        stream=True
    )
    collected_chunks = []
    collected_messages = []
    for chunk in response:
        collected_chunks.append(chunk)  # save the event response
        generated_text = chunk['choices'][0]['delta']  # extract the message
        collected_messages.append(generated_text)
        time.sleep(0.03)  # 暂停30毫秒

    full_reply_content = ''.join([m.get('content', '') for m in collected_messages])

    messages.append({'role': 'assistant', 'content': full_reply_content})  # 将助手回复添加到消息中
    print('用户输入内容:', user_input)
    print('GPT回复内容:', full_reply_content)
    return jsonify({'response': full_reply_content})
except Exception as e:
    return jsonify({'error': f'发生错误: {str(e)}'})

if name == 'main': app.run('0.0.0.0', 8000)

使用 Flask 和 OpenAI API 实现流式聊天机器人

原文地址: https://www.cveoy.top/t/topic/fltM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录