基于Gradio的GPT聊天程序

简介: 这篇文章介绍了如何使用Gradio库创建一个基于ChatGPT的聊天程序,包括详细的代码实现和所需的依赖库。

基于Gradio的GPT聊天程序

在这里插入图片描述

import gradio as gr

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage


api_key = '***'  # openai api, api2d api
api_base ='https://oa.api2d.net/v1'  # api地址
models = ['gpt-3.5-turbo-0613', 'gpt-4-0613']   #模型名称,可以修改

block_css = """.importantButton {
    background: linear-gradient(45deg, #7e0570,#5d1c99, #6e00ff) !important;
    border: none !important;
}
.importantButton:hover {
    background: linear-gradient(45deg, #ff00e0,#8500ff, #6e00ff) !important;
    border: none !important;
}"""

default_theme_args = dict(
    font=["Source Sans Pro", 'ui-sans-serif', 'system-ui', 'sans-serif'],
    font_mono=['IBM Plex Mono', 'ui-monospace', 'Consolas', 'monospace'],
)

init_message = f"""欢迎使用 ChatGPT Gradio UI!"""

def respond(query, model, temperature, history_turns, chat_history):
    global chat_turns
    llm = ChatOpenAI(
        temperature=temperature,
        openai_api_key=api_key,
        openai_api_base=api_base,
        model_name=model
    )

    history=[]
    len_history = min(chat_turns, history_turns)
    if chat_turns > 0:
        for turn in range(len_history):
            history.append(HumanMessage(content=chat_history[len_history-turn][0]));
            history.append(AIMessage(content=chat_history[len_history-turn][1]));

    history.append(HumanMessage(content=query));
    #print(history)

    response = llm(history).content;

    chat_history.append((query, response));
    chat_turns += 1
    return "", chat_history

def clear(chat_history):
    global chat_turns
    chat_history = [(None, "已清除对话历史")]
    chat_turns = 0
    return chat_history

def setting_change(model ,temperature, history_turns ,chat_history):
    global chat_turns
    chat_history = [(None, f"设置更新:\n 模型名称:{model} \n 温度:{temperature} \n 记忆历史对话轮数:{history_turns}\n")]
    chat_turns =0
    return chat_history

with gr.Blocks(css=block_css, theme=gr.themes.Default(**default_theme_args)) as demo:

    gr.Markdown('ChatGPT Gradio')
    chat_turns = 0
    with gr.Row():
        with gr.Column(scale=10):
            chatbot = gr.Chatbot([[None, init_message]],
                                 elem_id="chat-box",
                                 label="聊天历史")
            query = gr.Textbox(label="输入问题",
                               placeholder="请输入提问内容,按回车进行提交")
            clear_button = gr.Button("重新对话", visible=True)

        with gr.Column(scale=5):
            model = gr.Radio(models,
                            label="请选择使用模型",
                            value=models[0], interactive=True)

            temperature = gr.Slider(0,1,
                                    value=0.8,
                                    step=0.1,
                                    label="Temperature",
                                    interactive=True)

            history_turns = gr.Slider(1, 20,
                                 value=5,
                                 step=1,
                                 label="对话轮数",
                                 info='记录历史对话轮数',
                                 interactive=True)

            settings_button = gr.Button("更新设置", visible=True)

            settings_button.click(fn=setting_change, inputs=[model, temperature, history_turns, chatbot], outputs=[chatbot])

    query.submit(respond, [query, model, temperature, history_turns, chatbot], [query, chatbot])

    clear_button.click(fn=clear,
                    inputs=[chatbot],
                    outputs=[chatbot])

demo.launch()

需要的库,requirement.txt 文件

langchain
openai
gradio

\

相关文章
|
3月前
|
数据采集 自然语言处理 监控
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
正是通过微调大模型使得GPT3成为了可以聊天发布指令的ChatGPT。聊天大模型在通用大模型的基础上加一层微调就实现人人能用的大模型,使得通用大模型的能力被更多人使用和了解。
62 4
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
|
Kubernetes 安全 机器人
私密离线聊天新体验!llama-gpt聊天机器人:极速、安全、搭载Llama 2,尽享Code Llama支持!
私密离线聊天新体验!llama-gpt聊天机器人:极速、安全、搭载Llama 2,尽享Code Llama支持!
私密离线聊天新体验!llama-gpt聊天机器人:极速、安全、搭载Llama 2,尽享Code Llama支持!
|
7月前
|
Python
过年了,让GPT用Python给你写个放烟花的程序吧!
过年了,让GPT用Python给你写个放烟花的程序吧!
103 0
|
7月前
|
机器学习/深度学习 人工智能 安全
GPT-4硬核揭秘:能力,操纵性,局限性,聊天GPT Plus等
OpenAI创建了 GPT-4,这是 OpenAI 扩大深度学习努力的最新里程碑...
163 0
|
机器学习/深度学习 自然语言处理 安全
【网安AIGC专题10.11】论文1:生成式模型GPT\CodeX填充式模型CodeT5\INCODER+大模型自动程序修复(生成整个修复函数、修复代码填充、单行代码生产、生成的修复代码排序和过滤)
【网安AIGC专题10.11】论文1:生成式模型GPT\CodeX填充式模型CodeT5\INCODER+大模型自动程序修复(生成整个修复函数、修复代码填充、单行代码生产、生成的修复代码排序和过滤)
198 0
|
人工智能 搜索推荐 测试技术
如何使用聊天GPT自定义说明
探索 ChatGPT 自定义说明功能。了解如何微调响应,探索教师、企业家和内容创建者的用例。
321 0
|
人工智能 iOS开发 异构计算
3天近一万Star,无差体验GPT-4识图能力,MiniGPT-4看图聊天、还能草图建网站
3天近一万Star,无差体验GPT-4识图能力,MiniGPT-4看图聊天、还能草图建网站
194 0
|
存储 人工智能 Prometheus
面向GPT-4编程的时代来了:GitHub Copilot大升级,首次集成聊天功能
面向GPT-4编程的时代来了:GitHub Copilot大升级,首次集成聊天功能
700 0
|
5月前
|
存储 SQL 数据库
Python 金融编程第二版(GPT 重译)(四)(4)
Python 金融编程第二版(GPT 重译)(四)
53 3

热门文章

最新文章

下一篇
DataWorks