【极速版 -- 大模型入门到进阶】GPT + Gradio 聊天机器人从 0 到 1

文章目录

    • [🌊 环境准备](#🌊 环境准备)
    • [🌊 配置 API 密钥](#🌊 配置 API 密钥)
    • [🌊 定义与 GPT 的对话函数,支持多轮对话](#🌊 定义与 GPT 的对话函数,支持多轮对话)
    • [🌊 使用 Gradio 创建界面](#🌊 使用 Gradio 创建界面)
    • [🌊 完整代码 & 结果展示](#🌊 完整代码 & 结果展示)

在这个教程中,我们将使用 OpenAI 的 GPT 模型和 Gradio 来创建一个聊天机器人。Gradio 是一个非常简单的 Python 库,可以快速创建交互式界面,让我们与 AI 模型进行对话。让我们一起开始吧!

🌊 环境准备

首先,确保你已经安装了 💻 以下 Python 库 openai, gradio

bash 复制代码
from openai import OpenAI
import gradio as gr

from typing import List, Tuple

🌊 配置 API 密钥

python3 复制代码
openai.api_key = 'your-api-key-here'  # 在这里插入你的 API 密钥 🔑

🌊 定义与 GPT 的对话函数,支持多轮对话

python3 复制代码
def reset() -> List:
    return []

def interact(chatbot: List[Dict], user_input: str, temperature: float) -> List[Dict]:
    messages = []

    # 将历史对话按顺序添加到 messages 中
    for message in chatbot:
        messages.append({'role': message['role'], 'content': message['content']})

    # 将当前的 user_input 添加到 messages 的最后
    messages.append({'role': 'user', 'content': user_input})

    # 调用 OpenAI API 获取生成的回复
    response = openai.ChatCompletion.create(
        model="gpt-4",  # 你可以根据需要选择不同的模型,例如 gpt-4 或 gpt-3.5
        messages=messages,
        max_tokens=512,
        temperature=temperature,
    )

    # 获取生成的回复内容
    response_content = response['choices'][0]['message']['content']

    # 将当前的用户输入和模型的回复添加到聊天记录中
    chatbot.append({"role": "user", "content": user_input})
    chatbot.append({"role": "assistant", "content": response_content})

    return chatbot

🌊 使用 Gradio 创建界面

python3 复制代码
with gr.Blocks() as demo:
    gr.Markdown(f"# Gradio + GPT 多轮对话示例 🤖")

    chatbot = gr.Chatbot(type='messages')  # 创建聊天机器人界面
    input_textbox = gr.Textbox(label="输入你的消息 📝", value="")  # 创建文本输入框

    # 添加滑动条来调节 temperature
    temperature_slider = gr.Slider(minimum=0.0, maximum=1.0, value=0.7, label="调整回复温度 🔥")

    # 创建按钮行
    with gr.Row():
        sent_button = gr.Button(value="发送 📤")  # 发送按钮
        reset_button = gr.Button(value="重置 🔄")  # 重置按钮

    # 设置按钮事件
    sent_button.click(interact, inputs=[chatbot, input_textbox, temperature_slider], outputs=[chatbot])
    reset_button.click(reset, outputs=[chatbot])

# 启动 Gradio 应用
demo.launch(debug=True)

🌊 完整代码 & 结果展示

python3 复制代码
import gradio as gr
from typing import List, Dict
import openai
import os


# 从环境变量中读取 API 密钥(你可以通过设置环境变量来保护 API 密钥)
openai.api_key = os.getenv('OPENAI_API_KEY')  # 确保环境变量中设置了 OPENAI_API_KEY

# 定义重置函数,清空聊天记录
def reset() -> List[Dict]:
    return []

# 定义与 GPT 的对话函数,支持多轮对话
def interact(chatbot: List[Dict], user_input: str, temperature: float) -> List[Dict]:
    messages = []

    # 将历史对话按顺序添加到 messages 中
    for message in chatbot:
        messages.append({'role': message['role'], 'content': message['content']})

    # 将当前的 user_input 添加到 messages 的最后
    messages.append({'role': 'user', 'content': user_input})

    # 调用 OpenAI API 获取生成的回复
    response = openai.ChatCompletion.create(
        model="gpt-4",  # 你可以根据需要选择不同的模型,例如 gpt-4 或 gpt-3.5
        messages=messages,
        max_tokens=512,
        temperature=temperature,
    )

    # 获取生成的回复内容
    response_content = response['choices'][0]['message']['content']

    # 将当前的用户输入和模型的回复添加到聊天记录中
    chatbot.append({"role": "user", "content": user_input})
    chatbot.append({"role": "assistant", "content": response_content})

    return chatbot

# 使用 Gradio 创建界面
with gr.Blocks() as demo:
    gr.Markdown(f"# Gradio Tutorial")
    chatbot = gr.Chatbot(type='messages')
    input_textbox = gr.Textbox(label="Input", value="")

    # 添加滑动条来调节 temperature
    temperature_slider = gr.Slider(minimum=0.0, maximum=1.0, value=0.7, label="Temperature")

    with gr.Row():
        sent_button = gr.Button(value="Send")
        reset_button = gr.Button(value="Reset")

    sent_button.click(interact, inputs=[chatbot, input_textbox, temperature_slider], outputs=[chatbot])
    reset_button.click(reset, outputs=[chatbot])

demo.launch(debug=True)

参考资料:面向每个人的生成式AI, 【李宏毅 LLM 大模型】

相关推荐
马士兵教育36 分钟前
RocketMQ如何进行性能调优?
服务器·windows·rocketmq
fundoit1 小时前
Windows 下 YOLO 环境搭建与使用完整指南
windows·yolo
乔宕一2 小时前
windows SSH服务修改SSH登陆后的默认终端
运维·windows·ssh
love530love3 小时前
ComfyUI-3D-Pack:Windows 下手动编译 mesh_inpaint_processor C++ 加速模块
c++·人工智能·windows·python·3d·hunyuan3d·comfyui-3d-pack
ofoxcoding3 小时前
怎么用 API 搭一个 AI 客服机器人?从零到上线的完整方案
人工智能·ai·机器人
workflower3 小时前
影响用例书写格式的因素
人工智能·机器人·集成测试·ai编程·软件需求
oyzz1204 小时前
Windows 上彻底卸载 Node.js
windows·node.js
闭关苦炼内功4 小时前
Win10 安装 MySQL5.7.36 数据库记录
数据库·windows·mysql
ofoxcoding4 小时前
怎么用 API 搭一个 AI 客服机器人?从零到上线的完整方案 [特殊字符]
人工智能·ai·机器人
斯密码赛我是美女5 小时前
周报(欢乐赛+信息搜集ctfshow+Trae-mcp)
网络·windows