当前位置: 首页 > news >正文

实战二:基于网页端实现与大模型的问答交互

​一、需求描述

实战一是使用了python代码实现大模型的问答交互。本次实战为大模型的问答交互设计了一个网页端的交互界面,可以用于开发各种自然语言处理应用,如对话系统开发(智能客服、聊天机器人、问答系统等)。

效果图

​二、实现思路

总体思路

  1. 程序启动时加载模型
  2. 用户通过网页端的界面输入问题
  3. 系统调用模型回复问题
  4. 将模型的回复以界面的形式展示给用户

2.1 导入依赖库

import torch
from modelscope import AutoTokenizer, AutoModel, snapshot_download
import gradio as gr
  • torch: PyTorch深度学习框架,用于处理张量和神经网络;
  • modelscope: 由阿里巴巴达摩院推出的开源模型库;
    • AutoTokenizer: ModelScope 库的类,分词器应用场景包括自然语言处理(NLP)中的文本分类、信息抽取、问答、摘要、翻译和文本生成等任务。它通过提供一个统一的接口,使得开发者可以快速且方便地加载和使用不同的预训练模型,而不需要深入了解每个模型的细节‌;
    • AutoModel: ModelScope 库的类,允许用户在不知道具体模型细节的情况下,根据给定的模型名称或模型类型自动加载相应的预训练模型;
    • snapshotdownload: ModelScope 提供的一个函数,便于下载模型文件;
  • gradio: 用于创建Web界面的库,可以快速构建机器学习模型的演示界面。

2.2 对话框聊天功能

def chat(message, history):response, _history = model.chat(tokenizer, message, history=[])return response
  • chat: 定义聊天函数,接收用户消息和聊天历史;
  • response: 使用模型生成回复,并返回模型的回复。

2.3 加载模型

model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision="v1.0.0")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)with torch.no_grad():model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()
  • model_dir: 模型下载后的存储路径。使用snapshot_download 函数下载指定版本的模型;
  • AutoTokenizer.frompretrained: 加载预训练的分词器。其中,trustremotecode=True 表示信任远程代码;
  • with torch.nograd():表示在这个上下文中不计算梯度,以节省内存和计算资源;
    • AutoModel.frompretrained:加载预训练的模型,转换为半精度(half),并将模型移至 GPU(cuda)运行;
  • model.eval(): 模型设置为评估模式。

2.4 Gradio界面设置

demo = gr.ChatInterface(fn=chat,title="聊天机器人",description="这是一个聊天机器人",examples=["你好", "请介绍一下你自己", "你能做什么"],theme="soft"
)
  • gr.Interface():调用Gradio的Interface类,创建聊天界面;
    • fn=chat:指定处理函数为chat聊天函数,见2.2;
    • title:标题为“聊天机器人”;
    • description:描述为"这是一个聊天机器人";
    • examples:提供示例问题,为“你好”、“请介绍一下你自己"和"你能做什么”;
    • theme:使用了"soft"主题。

2.5 启动服务

demo.launch()
  • demo.launch():启动Web服务,默认在本地运行

三、完整代码

import torch
from modelscope import AutoTokenizer, AutoModel, snapshot_download
import gradio as grdef chat(message, history):response, _history = model.chat(tokenizer, message, history=[])return responseif __name__ == "__main__":# 加载模型model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision="v1.0.0")tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)with torch.no_grad():model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()model = model.eval()# 创建 Gradio 界面demo = gr.ChatInterface(fn=chat,title="聊天机器人",description="这是一个聊天机器人",examples=["你好", "请介绍一下你自己", "你能做什么"],theme="soft")# 启动服务demo.launch()

四、效果展示

在这里插入图片描述

相关文章:

  • 管家婆软件下载中心-管家婆软件辉煌安装包下载、应用程序、最新版软件
  • 校赛2025迎新杯题解
  • 构建安全可靠的电子商务平台的综合策略
  • CANopen转EtherCAT网关,从CANopen伺服到EtherCAT主站的通信
  • 门岗来访访客登记二维码制作,打印机打印粘贴轻松实现。
  • python 在本地项目下生成requestment方法汇总
  • 13-Linux启动流程和内核管理自我总结
  • 数据分析入门初解
  • Jsoup解析商品详情时,有哪些常见的标签和属性?
  • 《拆解问题的技术》笔记
  • 什么是EcoVadis审核?EcoVadis审核的评估框架,EcoVadis审核流程
  • Java常用类库大全(学习笔记)持续更新中
  • 美团NoCode的Database 使用指南
  • 【无用知识研究】如何把non-capturing lambda 手动cast到函数指针
  • WLAN 技术指南:从入门到原理
  • Spring Boot 项目中如何划分事务边界,避免长事务?
  • TSC TTP-244 打印机TSPL PUTBMP指令图片打印失败
  • LlamaIndex 工作流 上下文状态和流式传输事件
  • 梯度下降相关
  • FreeRTOS事件组
  • 深圳优质网站建设案例/综合搜索引擎
  • 建筑企业招聘网站/重庆关键词排名首页
  • 如何识别一个网站是否做的好/网络营销平台的主要功能
  • 宝安做网站哪家好/app推广营销
  • 总算把网站设计好了/seo查询友情链接
  • 郑州市做网站/如何免费发布广告