Gradio从入门到精通(10)---基于星火大模型的聊天机器人


前言

前面的章节介绍了Gradio的接口类,组件,让我们对Gradio有了整体的认识,接下来,我们使用Gradio一步一步搭建一个基于大模型的聊天机器人,整个过程循序渐进,从最简单的问答,到多模态,再到引入大模型,langchain等,让我们开始吧;

一、傻瓜机器人

在Gradio中构建聊天机器人只需要调用gr.ChatInterface()接口即可完成界面搭建,接下来我们写一个很傻瓜的机器人示例代码如下

import random
import gradio as gr

def alternatingly_agree(message, history):
    if len(history) % 2 == 0:
        return f"Yes, I do think that '{message}'"
    else:
        return "I don't think so"

gr.ChatInterface(alternatingly_agree).launch()

在这里插入图片描述

二、流媒体聊天机器人

我们在使用聊天机器人时,机器人响应往往是流式传输,所以这里我们模拟一个流式响应的机器人回复;当响应流式传输时,“提交”按钮会变成“停止”按钮,可用于停止生成器功能。您可以使用“stop_btn”参数自定义“停止”按钮的外观和行为。

import time
import gradio as gr

def slow_echo(message, history):
    for i in range(len(message)):
        time.sleep(0.3)
        yield "You typed: " + message[: i+1]

gr.ChatInterface(slow_echo).launch()

在这里插入图片描述

三、自定义聊天界面

gr.ChatInterface包含许多参数,您可以使用这些参数来自定义聊天机器人的外观及功能,使其符合你的需求

参数名描述
fn要围绕聊天界面包装的函数。该函数应接受两个参数:一个字符串输入消息和一个由形如[[user_message, bot_message], ...]的两元素列表组成的列表,表示聊天历史,并返回一个字符串响应。有关聊天历史格式的更多信息,请参阅Chatbot文档。
multimodal如果为True,聊天界面将使用gr.MultimodalTextbox组件作为输入,允许上传多媒体文件。如果为False,聊天界面将使用gr.Textbox组件作为输入。
chatbot如果想要自定义聊天机器人的属性,则可以使用gr.Chatbot组件的实例作为聊天界面的聊天机器人。如果未提供,将创建一个默认的gr.Chatbot组件。
textbox如果想要自定义文本框的属性,则可以使用gr.Textboxgr.MultimodalTextbox组件的实例作为聊天界面的文本框。如果未提供,将创建默认的gr.Textboxgr.MultimodalTextbox组件。
additional_inputs聊天机器人所需的额外输入的Gradio组件实例(或其字符串快捷方式)的单个实例或实例列表。如果组件尚未在周围的Blocks中渲染,则这些组件将在聊天机器人下方的手风琴(accordion)中显示。
additional_inputs_accordion_name已弃用。将在Gradio的未来版本中移除。请使用additional_inputs_accordion参数代替。
additional_inputs_accordion如果提供字符串,则这是用于包含额外输入的gr.Accordion的标签。也可以提供gr.Accordion对象来配置包含额外输入的容器的其他属性。默认为gr.Accordion(label="Additional Inputs", open=False)。此参数仅在提供additional_inputs时使用。
examples函数的示例输入;如果提供,则显示在聊天机器人下方,并可通过点击来填充聊天机器人。

代码如下(示例):

import gradio as gr

def yes_man(message, history):
    if message.endswith("?"):
        return "Yes"
    else:
        return "Ask me anything!"

gr.ChatInterface(
    yes_man,
    chatbot=gr.Chatbot(height=300),
    textbox=gr.Textbox(placeholder="Ask me a yes or no question", container=False, scale=7),
    title="Yes Man",
    description="Ask Yes Man any question",
    theme="soft",
    examples=["Hello", "Am I cool?", "Are tomatoes vegetables?"],
    cache_examples=True,
    retry_btn=None,
    undo_btn="Delete Previous",
    clear_btn="Clear",
).launch()

在这里插入图片描述

四、使用火星大模型的聊天机器人

搜索了一下火星大模型送一些免费的token,所以这里调用火星大模型做一个实例,几行代码就可以打造一个基于大模型的聊天机器人。
在逛网注册后,进入服务管理
在这里插入图片描述
创建新应用,名字自定义
在这里插入图片描述
创建完成后,选择对应模型可以看到对应的APIKey和APISecret在这里插入图片描述
有了这些信息,我们通过OpenAI SDK 几行代码就可以做一个聊天机器人,将下列代码中的key和secret换成你的

# 导入SDK,发起请求

from openai import OpenAI  # 从openai模块导入OpenAI类,用于实例化客户端
import gradio as gr  # 导入gradio库,用于创建交互式Web界面

# 控制台获取key和secret拼接,假使APIKey是key123456,APISecret是secret123456
spark_api_key="key123456:secret123456"   #这里一定要换成你的哦  !!!!!!!!!!!!!!!
spark_base_url = 'https://spark-api-open.xf-yun.com/v1' # 指向讯飞星火的请求地址
spark_model='generalv3.5'  # 指定请求的版本
client = OpenAI(api_key=spark_api_key,base_url=spark_base_url)  # 使用你的API密钥实例化OpenAI客户端
 
 
# 定义predict函数,它接受用户的消息和聊天历史作为输入
def predict(message, history):
    history_openai_format = []  # 创建一个空列表用于存储处理过的历史记录
    for human, assistant in history:  # 遍历历史对话
        # 将每条历史消息按照OpenAI所需的格式添加到列表中
        history_openai_format.append({"role": "user", "content": human })
        history_openai_format.append({"role": "assistant", "content":assistant})
    # 将最新的用户消息也以相同的格式添加到列表
    history_openai_format.append({"role": "user", "content": message})
  
    # 使用客户端请求GPT-3.5-turbo模型的回复,传入处理过的历史消息和其他参数
    response = client.chat.completions.create(model=spark_model,
    messages= history_openai_format,
    temperature=1.0,
    stream=True)
 
    #print(response.choices[0].message)  # 打印OpenAI的响应
    partial_message = ""  # 初始化用于收集模型响应的字符串
    for chunk in response:  # 遍历响应中的每个部分
        if chunk.choices[0].delta.content is not None:  # 如果响应部分有内容
              partial_message += chunk.choices[0].delta.content  # 将其添加到累积的响应字符串completion.choices[0].message
              yield partial_message  # 使用yield返回累积的响应字符串,实现流式响应
 
 
gr.ChatInterface(predict).launch()  # 使用Gradio的ChatInterface调用predict函数,并启动Web界面

好了,看看效果吧
在这里插入图片描述


总结

本章展示了一步一步使用gradio和火星大模型打造聊天机器人的过程,可以看到打造基于gradio的应用速度非常快,几行代码就可以完成一个应用。

<think>好的,用户想要下载Gradio库的特定版本5.22.0的wheel文件。首先,我需要确认用户的环境是否支持直接通过pip安装,或者是否需要手动下载wheel文件。用户之前可能遇到了需要Rust编译器的问题,引用[1]提到过,如果pip版本过旧,可能无法安装预构建的wheel,从而需要Rust编译器。所以用户可能遇到了类似的问题,想要直接下载wheel文件来避免编译依赖。 接下来,我应该检查Gradio 5.22.0在PyPI上的可用性。访问PyPI的Gradio页面,查看历史版本是否存在5.22.0的wheel文件。假设存在的话,用户可以使用pip下载命令来获取。如果用户的环境无法直接安装,可能需要手动下载。 另外,用户提到在云端环境配置A100 GPU,引用[2]可能涉及到环境配置的问题。用户可能是在类似Google Colab的环境中操作,需要注意系统架构和Python版本是否匹配wheel文件。 然后,考虑到用户可能遇到pip版本过旧的问题,需要提醒用户升级pip,这有助于确保能够正确处理wheel文件的安装。同时,如果用户需要手动下载,指导他们从PyPI或其他可信源获取,并注意平台和Python版本的兼容性,比如Linux的许多wheel文件是manylinux版本,而Windows和MacOS有不同的命名规则。 最后,用户可能担心依赖问题,特别是如果Gradio 5.22.0有特定依赖版本要求,需要确保这些依赖也被正确安装。此外,如果用户在使用过程中遇到问题,可能需要检查错误信息,确认是否与架构或依赖有关,并考虑使用虚拟环境隔离安装。 总结步骤:检查PyPI是否存在该版本的wheel,提供pip下载命令,提醒升级pip,手动下载的注意事项,依赖处理,以及故障排除建议。需要确保回答清晰,分步骤,并且引用相关的用户引用内容,如避免Rust编译的问题。</think>要下载Gradio库的特定版本5.22.0的wheel文件,可按照以下步骤操作: --- ### **1. 直接通过pip下载wheel** ```bash pip download gradio==5.22.0 --no-deps ``` - **作用**:仅下载Gradio 5.22.0的wheel文件(不安装依赖) - **输出路径**:默认保存在当前目录的`gradio-5.22.0-py3-none-any.whl`(文件名可能因平台而异) - **注意事项**: - 如果遇到`ERROR: Could not find a version`,需检查PyPI是否提供该版本的预编译包[^1] - 若需升级pip版本:`pip install --upgrade pip` --- ### **2. 手动从PyPI下载** 1. 访问Gradio的PyPI页面:https://pypi.org/project/gradio/5.22.0/#files 2. 根据系统选择对应的wheel文件: - **Linux**: `gradio-5.22.0-py3-none-any.whl` - **Windows**: `gradio-5.22.0-py3-none-any.whl` - **MacOS**: 同上 3. 下载后通过pip安装: ```bash pip install /path/to/gradio-5.22.0-py3-none-any.whl ``` --- ### **3. 云端环境适配(如Google Colab)** - **GPU配置**:确保已正确配置A100/A10G等GPU环境[^2] - **依赖冲突处理**: ```bash pip install gradio==5.22.0 --force-reinstall ``` --- ### **4. 常见问题排查** - **Rust编译器错误**:若提示需Rust环境,说明PyPI未提供预编译包,需升级pip或改用其他版本[^1] - **量化模型适配**:注意部分库版本可能对量化模型(如Int4)支持不完善[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶与花语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值