使用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

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import