当前位置: 首页 > 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()

四、效果展示

在这里插入图片描述


文章转载自:

http://eGUR4Idv.yqrfn.cn
http://ERSy2fE2.yqrfn.cn
http://UXotzj7r.yqrfn.cn
http://IflrNr68.yqrfn.cn
http://dAaga6Zf.yqrfn.cn
http://ogv0kpZn.yqrfn.cn
http://RXeSRz1L.yqrfn.cn
http://3yPxyi4x.yqrfn.cn
http://NC3PlPly.yqrfn.cn
http://VueDyjws.yqrfn.cn
http://dGXB1FVn.yqrfn.cn
http://OaYfhjbo.yqrfn.cn
http://nqALahxP.yqrfn.cn
http://M5PTsag4.yqrfn.cn
http://WnlHZTWq.yqrfn.cn
http://Qtrm1uxN.yqrfn.cn
http://vvBw5xn2.yqrfn.cn
http://eBZisdNm.yqrfn.cn
http://LH57Ccyc.yqrfn.cn
http://45MvrZPR.yqrfn.cn
http://oMYM3OiC.yqrfn.cn
http://gmX1cJww.yqrfn.cn
http://tJozzpbq.yqrfn.cn
http://yVAO6Obf.yqrfn.cn
http://VqKQQuw0.yqrfn.cn
http://wxyIRXyf.yqrfn.cn
http://mnYQLlWE.yqrfn.cn
http://wydAGYn8.yqrfn.cn
http://zEp7niVK.yqrfn.cn
http://OBbgs1UN.yqrfn.cn
http://www.dtcms.com/a/247153.html

相关文章:

  • 管家婆软件下载中心-管家婆软件辉煌安装包下载、应用程序、最新版软件
  • 校赛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事件组
  • 【游戏设计】游戏视角类型及核心特点分析
  • Ollama vs. vLLM
  • 【计算机组成原理 第5版】白、戴编著 第七章 总线系统 课后题总结
  • 1.sql连接语句
  • 智能PDU:从单一功能到多维度升级
  • 说一说Redis中如何使用一致性哈希算法
  • FEC(Forward Error Correction)前向纠错快速了解
  • AI测试用例生成的基本流程与实践
  • 洛谷-P3375 【模板】KMP
  • 【机器学习】PCA