使用Gradio搭建聊天UI实现质谱AI智能问答

2024-05-07 03:12

本文主要是介绍使用Gradio搭建聊天UI实现质谱AI智能问答,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用Gradio搭建聊天UI实现质谱AI智能问答

  • 一、调用智谱 AI API
  • 二、使用Gradio搭建聊天UI
  • 三、将流式处理添加到交互式聊天机器人

一、调用智谱 AI API

1、获取api_key

智谱AI开放平台网址:
https://open.bigmodel.cn/overview
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、安装库pip install zhipuai
3、执行一下代码,调用质谱api进行问答

from zhipuai import ZhipuAIclient = ZhipuAI(api_key="xxxxx")  # 填写您自己的APIKey
while True:prompt = input("user:")response = client.chat.completions.create(model="glm-4",  # 填写需要调用的模型名称messages=[{"role": "user", "content": prompt}],)answer = response.choices[0].message.contentprint("ZhipuAI:", answer)

二、使用Gradio搭建聊天UI

import gradio as gr
import random
import timefrom langchain_community.chat_models import ChatZhipuAI
from zhipuai import ZhipuAIimport configurellm = configure.chat
client = ZhipuAI(api_key="xxx")  # 填写您自己的APIKeywith gr.Blocks() as demo:chatbot = gr.Chatbot()msg = gr.Textbox()clear = gr.Button("清除")def respond(message, chat_history):response = client.chat.completions.create(model="glm-4",  # 填写需要调用的模型名称messages=[{"role": "user", "content": message}],)chat_history.append((message, response.choices[0].message.content))return "", chat_historymsg.submit(respond, [msg, chatbot], [msg, chatbot])clear.click(lambda: None, None, chatbot, queue=False)demo.launch()
  • Gradio的Textbox模块允许用户输入字符串并显示字符串输出。它创建一个文本区域,用户可以在其中输入文本或显示输出结果。
  • Button组件是Gradio中的一个模块,用于创建一个按钮,并可以为其分配任意的click()事件。按钮的标签(value)可以作为输入使用,或者通过函数的输出来设置。
  • chatbot模块是Gradio中的一个组件,用于展示聊天机器人的输出,包括用户提交的消息和机器人的回复。它支持一些Markdown语法,包括粗体、斜体、代码和图片等。Chatbot模块的输入不接受用户输入,而是通过函数返回的列表来设置聊天内容。返回的列表应包含多个内部列表,每个内部列表包含两个元素:用户消息和机器人回复。消息可以是字符串、元组或None。如果消息是字符串,可以包含Markdown格式的文本。如果消息是元组,应包含文件路径和可选的替代文本。值为None的消息将不会显示在聊天界面上。

三、将流式处理添加到交互式聊天机器人

import gradio as gr
import timefrom zhipuai import ZhipuAI
from typing import *client = ZhipuAI(api_key="your api key")  # 填写您自己的APIKey
# https://blog.csdn.net/sinat_26917383/article/details/133950480
# https://open.bigmodel.cn/dev/api#glm-4
# https://www.cnblogs.com/ddsuifeng/p/17989484
with gr.Blocks(title="智小优") as demo:gr.HTML("""<h1 align="center">智小优</h1>""")gr.Markdown("<h1><center>Welcome to my personal AI-OR assistant (powered by zhipu)</center></h1>")chatbot = gr.Chatbot(render=True)msg = gr.Textbox(placeholder="请输入你的问题")with gr.Row():submit = gr.Button('Submit')clear = gr.Button("Clear")def user(user_message: str, history: List[List]) -> Tuple:"""Args:user_message: 用户输入history: 历史问答Returns:"""return "", history + [[user_message, None]]def bot(history: List[List]) -> None:response = client.chat.completions.create(model="glm-4",  # 填写需要调用的模型名称messages=[{"role": "user", "content": history[-1][0]}],stream=True)history[-1][1] = ""for chunk in response:for choice in chunk.choices:content = choice.delta.contentif content:history[-1][1] += contenttime.sleep(0.05)yield historymsg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)# 触发事件监听submit.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)clear.click(lambda: None, None, chatbot, queue=False)if __name__ == '__main__':demo.queue().launch()

参考:

  • https://blog.csdn.net/sinat_26917383/article/details/133950480
  • https://zhuanlan.zhihu.com/p/681207328
  • https://blog.csdn.net/Alexa_/article/details/134485161
  • https://blog.csdn.net/u013558123/article/details/136118024
  • https://zhuanlan.zhihu.com/p/678228971
  • https://open.bigmodel.cn/dev/api#glm-4
  • https://www.cnblogs.com/ddsuifeng/p/17989484

这篇关于使用Gradio搭建聊天UI实现质谱AI智能问答的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966155

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项