使用gradio搭建服务(三)--多轮对话

部署运行你感兴趣的模型镜像

使用gr.Chatbot()对象保存每轮对话中用户的提问和大语言模型的回复。

#coding:utf-8
import json
import os
from time import time
import base64
import gradio as gr
from zhipuai import ZhipuAI
'''
智谱参考文档
https://open.bigmodel.cn/dev/api#glm-4
'''
parts = ['高颅顶', '精灵耳', '下颌缘', '下颏', '颞区', '颧区', '眉弓', '重睑', '眼袋', '卧蚕', '美鼻', '眉间纹','苹果肌', '法令纹', '丰唇', '口角囊袋', '鱼尾纹', '面颊']

zhipu_client = ZhipuAI(api_key="***")

def call_zhipu(content):
    response = zhipu_client.chat.completions.create(
        model="glm-4",  # 填写需要调用的模型名称
        # messages=[
        #     {"role": "user", "content": "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan"},
        #     {"role": "assistant", "content": "当然,为了创作一个吸引人的slogan,请告诉我一些关于您产品的信息"},
        #     {"role": "user", "content": "智谱AI开放平台"},
        #     {"role": "assistant", "content": "智启未来,谱绘无限一智谱AI,让创新触手可及!"},
        #     {"role": "user", "content": "创造一个更精准、吸引人的slogan"}
        # ],
        messages = content
    )
    return response.choices[0].message.content

with gr.Blocks() as demo:
    chatbot = gr.Chatbot()
    msg = gr.Textbox() ## 输入文本
    clear = gr.ClearButton([msg, chatbot])

    def respond(message, chat_history):
    	## 构建多轮对话的prompt. user和assistant的内容。
        if not len(chat_history):
            prompt = [{"role": "user", "content": message}]
        else:
            prompt = []
            for item in chat_history:
                prompt.append({"role": "user", "content": item[0]})
                prompt.append({"role": "assistant", "content": item[1]})
            prompt.append({"role": "user", "content": message})
        print('prompt',prompt)
        bot_message = call_zhipu(prompt)
        print('bot_message',bot_message)
		##
        chat_history.append((message, bot_message))
        # time.sleep(2)
        print('chat_history',chat_history)
        return "", chat_history
    msg.submit(respond, [msg, chatbot], [msg, chatbot])

if __name__ == "__main__":
    # demo.launch()
    demo.launch(server_name='0.0.0.0', server_port=8000)

您可能感兴趣的与本文相关的镜像

Qwen3-8B

Qwen3-8B

文本生成
Qwen3

Qwen3 是 Qwen 系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令执行、代理能力和多语言支持方面取得了突破性进展

### 创建基于类的多轮对话Chatbot并使用Gradio封装 为了构建一个多轮对话的聊天机器人,可以定义一个Python类来管理对话状态和逻辑。这个类负责处理用户的输入,并根据当前上下文返回合适的响应。 #### 定义对话管理器类 通过创建`DialogueManager`类,能够有效地追踪会话历史记录以及维护对话流程的状态: ```python class DialogueManager: def __init__(self): self.context = [] def add_message(self, message): """Add a new user or bot message to the context.""" self.context.append(message) def get_response(self, input_text): """Generate response based on current dialogue history and latest input.""" # Here you can implement more complex logic such as calling OpenAI API with accumulated conversation. reply = f"Echo: {input_text}" # Add both incoming text and generated answer into context self.add_message({"role": "user", "content": input_text}) self.add_message({"role": "assistant", "content": reply}) return reply ``` 此部分展示了如何初始化对话管理对象、更新消息队列以及生成回应[^1]。 #### 使用Gradio集成图形化界面 接下来利用Gradio库快速搭建交互式的Web应用,使用户可以通过浏览器与上述实现的聊天机器人互动: ```python import gradio as gr def chat_interface(user_input, state=None): if not isinstance(state, DialogueManager): # Initialize dialogue manager when needed state = DialogueManager() output = state.get_response(user_input) return output, state iface = gr.Interface( fn=chat_interface, inputs=[gr.inputs.Textbox(lines=2, placeholder="Enter your question here..."), 'state'], outputs=["text", 'state'] ).launch(share=True) ``` 这里说明了怎样设置Gradio接口函数接收来自前端的消息作为参数传递给后台处理器(`chat_interface`);同时保存对话状态以便支持连续性的交流过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值