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

零基础玩转ERNIE-4.5:用vllm和chainlit轻松搭建AI对话助手

零基础玩转ERNIE-4.5用vllm和chainlit轻松搭建AI对话助手1. 准备工作认识ERNIE-4.5与部署工具1.1 ERNIE-4.5模型简介ERNIE-4.5是百度推出的新一代大语言模型系列其中ERNIE-4.5-0.3B-PT是一个轻量级版本特别适合快速部署和实际应用。这个模型具有以下特点轻量高效参数规模约3亿在普通显卡上即可流畅运行中文优化针对中文理解和生成任务进行了专门训练多模态能力支持文本与视觉信息的联合处理部署友好提供多种部署方式包括我们今天使用的vllm方案1.2 技术栈介绍我们将使用两个核心工具来搭建这个AI对话助手vllm一个高性能的模型推理服务框架能显著提升大语言模型的推理速度chainlit一个专门为AI应用设计的Web界面框架可以快速构建聊天界面这套组合的优势在于部署简单无需复杂配置性能优秀响应速度快界面美观用户体验好2. 环境准备与模型部署2.1 检查模型服务状态如果你使用的是预置的镜像环境模型服务可能已经在后台运行。我们可以通过以下命令检查服务状态cat /root/workspace/llm.log正常运行的日志会显示类似以下内容INFO 07-10 14:30:29 llm_engine.py:291] LLM engine is ready如果服务未启动可以手动运行以下命令python -m vllm.entrypoints.openai.api_server \ --model baidu/ERNIE-4.5-0.3B-PT \ --served-model-name ernie-4.5 \ --port 8000 \ --max-model-len 40962.2 验证API服务服务启动后我们可以测试API是否正常工作curl http://localhost:8000/v1/models正常响应应该返回类似以下JSON数据{ object: list, data: [ { id: ernie-4.5, object: model, created: 1688980000, owned_by: vllm } ] }3. 构建chainlit前端界面3.1 创建基础应用新建一个名为app.py的文件添加以下代码import chainlit as cl import requests import json VLLM_API_URL http://localhost:8000/v1/chat/completions cl.on_chat_start async def start_chat(): await cl.Message( content你好我是ERNIE-4.5 AI助手有什么可以帮你的吗 ).send() cl.on_message async def main(message: cl.Message): msg cl.Message(content) await msg.send() try: payload { model: ernie-4.5, messages: [ {role: user, content: message.content} ], temperature: 0.7, max_tokens: 1024, stream: True } response requests.post( VLLM_API_URL, jsonpayload, streamTrue, headers{Content-Type: application/json} ) full_response for line in response.iter_lines(): if line: line line.decode(utf-8) if line.startswith(data: ): data line[6:] if data ! [DONE]: try: chunk json.loads(data) if choices in chunk and len(chunk[choices]) 0: delta chunk[choices][0][delta] if content in delta: content delta[content] full_response content await msg.stream_token(content) except json.JSONDecodeError: continue if full_response: msg.content full_response await msg.update() else: await cl.Message(content抱歉我没有收到响应。).send() except Exception as e: await cl.Message(contentf出错了{str(e)}).send() if __name__ __main__: cl.run()3.2 添加界面配置创建chainlit.md文件定义欢迎信息# ERNIE-4.5聊天助手 这是一个基于ERNIE-4.5-0.3B-PT模型的智能对话应用。 ## 使用说明 1. 直接在下方输入框输入问题 2. 模型会逐步显示回答内容 3. 支持连续对话上下文会自动保留创建config.toml定制界面样式[UI] name ERNIE-4.5聊天助手 description 基于ERNIE-4.5-0.3B-PT模型的智能对话 [Theme] primaryColor #4f46e5 backgroundColor #ffffff4. 启动与使用完整流程4.1 启动应用在终端运行以下命令启动chainlit前端chainlit run app.py应用启动后默认会在http://localhost:8000提供服务。4.2 使用对话界面打开浏览器访问应用地址你将看到一个简洁的聊天界面左侧面板显示对话历史记录中间区域主聊天窗口底部输入框输入问题并发送4.3 测试对话功能尝试输入不同类型的问题知识问答中国的首都是哪里创意写作写一个关于太空探险的短故事实用建议如何提高Python编程技能观察模型的回答质量和响应速度。5. 常见问题解决方案5.1 服务启动失败如果遇到服务无法启动的问题可以尝试以下步骤检查端口占用netstat -tlnp | grep :8000修改服务端口在app.py中VLLM_API_URL http://localhost:8001/v1/chat/completions5.2 响应速度慢优化建议调整生成参数payload { temperature: 0.5, # 降低创造性提高稳定性 max_tokens: 512, # 减少生成长度 }检查硬件资源nvidia-smi # 查看GPU使用情况 free -h # 查看内存使用6. 进阶功能扩展6.1 添加对话记忆修改app.py实现多轮对话cl.on_chat_start async def start_chat(): cl.user_session.set(history, []) cl.on_message async def main(message: cl.Message): history cl.user_session.get(history, []) history.append({role: user, content: message.content}) if len(history) 6: # 保留最近3轮对话 history history[-6:] payload { model: ernie-4.5, messages: history, temperature: 0.7, stream: True } # ... 发送请求和处理响应 ... history.append({role: assistant, content: full_response}) cl.user_session.set(history, history)6.2 支持文件上传扩展文件处理能力cl.on_message async def main(message: cl.Message): if message.elements: for element in message.elements: if element.type file: with open(element.path, r) as f: content f.read() enhanced_prompt f文件内容\n{content}\n\n问题{message.content} messages [{role: user, content: enhanced_prompt}]7. 总结与展望通过本教程我们完成了ERNIE-4.5-0.3B-PT模型的完整部署流程使用vllm部署高性能模型服务通过chainlit构建美观的聊天界面实现前后端集成和基础对话功能扩展了记忆和文件处理等进阶功能这套方案的优势在于部署简单快捷资源需求适中用户体验良好易于功能扩展未来可以进一步探索添加更多自定义工具集成知识库增强回答准确性优化界面交互体验获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

零基础玩转ERNIE-4.5:用vllm和chainlit轻松搭建AI对话助手

零基础玩转ERNIE-4.5:用vllm和chainlit轻松搭建AI对话助手 1. 准备工作:认识ERNIE-4.5与部署工具 1.1 ERNIE-4.5模型简介 ERNIE-4.5是百度推出的新一代大语言模型系列,其中ERNIE-4.5-0.3B-PT是一个轻量级版本,特别适合快速部署…...

数据标准应用程度量化评价指标

为科学、客观、精准衡量数据标准的实际应用效果,破解“标准制定与应用脱节”的痛点,立足数据“供得出、流得动、用得好、保安全”的核心目标,结合数据全生命周期管理要求,构建多维度、可量化的评价指标体系,覆盖标准应…...

信号处理工程师必看:双对数坐标中的‘斜率‘在线性坐标中到底意味着什么?

信号处理工程师必看:双对数坐标中的斜率在线性坐标中到底意味着什么? 在信号处理领域,工程师们经常需要分析功率谱或其他频域数据。为了更清晰地观察数据特征,双对数坐标(log-log plot)成为了不可或缺的工具…...

从MYCIN到GPT-4:专家系统40年进化史中的5个关键转折点

从MYCIN到GPT-4:专家系统40年进化史中的5个关键转折点 1976年,斯坦福大学的传染病专家们面对一个棘手问题:如何快速准确诊断脑膜炎患者的病原体类型?传统实验室检测需要48小时,而患者往往等不起。这个临床需求催生了MY…...

Unity游戏开发:DoTween回调函数全解析(附实战代码示例)

Unity游戏开发:DoTween回调函数全解析(附实战代码示例) 在Unity游戏开发中,动画效果的流畅性和交互响应速度直接影响用户体验。DoTween作为一款轻量高效的动画插件,其回调函数系统为开发者提供了精准控制动画生命周期的…...

从自动驾驶到VR看房:深度相机点云数据在实际项目里到底怎么用?

深度相机点云数据的实战应用全景:从自动驾驶到VR看房的技术落地指南 当Livox激光雷达在无人车上每秒生成数十万个三维坐标点,当Orbbec Astra Pro深度相机为VR看房应用重建出毫米级精度的室内模型,点云技术正在悄然重塑多个行业的底层技术架构…...

MSPM0L1306工程独立化移植指南:零SDK路径依赖

1. MSPM0L1306工程移植技术指南:构建可复用的独立开发环境 在嵌入式硬件产品开发周期中,工程文件的跨团队、跨环境交付是高频且关键的技术协作环节。当基于TI MSPM0L1306微控制器的原型系统完成初步验证后,往往需要将完整工程移交至其他工程师…...

揭秘Odoo开源商业模式:社区协作与商业服务的完美平衡

揭秘Odoo开源商业模式:社区协作与商业服务的完美平衡 【免费下载链接】odoo Odoo. Open Source Apps To Grow Your Business. 项目地址: https://gitcode.com/GitHub_Trending/od/odoo Odoo作为一款全面的开源企业管理软件,通过独特的商业模式实现…...

SHT30温湿度传感器I²C驱动开发与嵌入式实践

1. SHT30数字温湿度传感器硬件与驱动实现详解1.1 器件选型与工程定位SHT30是 Sensirion 公司推出的高精度数字温湿度传感器,广泛应用于环境监测、工业控制、智能楼宇及消费电子等领域。其核心优势在于0.3℃的温度测量精度与2%RH的湿度测量精度,配合-40℃…...

5分钟搞定OpenCV车牌定位:C++实战教程(附完整代码)

OpenCV车牌定位实战:从原理到C代码实现 引言 车牌识别系统在现代交通管理、智能停车场和安防监控中扮演着重要角色。作为计算机视觉的经典应用场景,车牌定位是整个识别流程的第一步,也是最关键的环节之一。本文将带您深入了解车牌定位的技术原…...

Odoo邮件服务器终极配置指南:Postfix集成与反垃圾邮件策略完整教程

Odoo邮件服务器终极配置指南:Postfix集成与反垃圾邮件策略完整教程 【免费下载链接】odoo Odoo. Open Source Apps To Grow Your Business. 项目地址: https://gitcode.com/GitHub_Trending/od/odoo Odoo作为一款强大的开源ERP系统,其邮件服务器配…...

企业IT必看:如何用DISM命令将Microsoft Defender更新集成到WIM镜像(附完整命令清单)

企业IT实战指南:通过DISM命令实现Microsoft Defender离线更新集成 每次批量部署新系统时,最让人头疼的就是成百上千台设备同时联网更新Defender病毒库造成的网络拥堵。作为经历过多次凌晨紧急部署的老IT,我发现将安全更新直接集成到系统镜像才…...

终极算法可视化指南:通过cp-algorithms项目直观理解复杂数据结构与算法过程

终极算法可视化指南:通过cp-algorithms项目直观理解复杂数据结构与算法过程 【免费下载链接】cp-algorithms Algorithm and data structure articles for https://cp-algorithms.com (based on http://e-maxx.ru) 项目地址: https://gitcode.com/GitHub_Trending/…...

Backtrader回测数据准备全攻略:从Tushare到Akshare的平滑迁移指南

Backtrader数据源迁移实战:从Tushare到Akshare的高效转换策略 当Tushare逐渐退出历史舞台,量化开发者们不得不面对数据源迁移的现实挑战。作为Backtrader生态中曾经的主流选择,Tushare的数据接口变更让许多策略回测工作陷入停滞。本文将深入解…...

如何快速实现Fiber集成测试:使用TestContainers的完整指南

如何快速实现Fiber集成测试:使用TestContainers的完整指南 【免费下载链接】fiber ⚡️ Express inspired web framework written in Go 项目地址: https://gitcode.com/GitHub_Trending/fi/fiber Fiber是一个受Express启发的Go语言Web框架,以其高…...

基于Rust架构的番茄小说下载器技术实现与应用实践

基于Rust架构的番茄小说下载器技术实现与应用实践 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader Tomato-Novel-Downloader是一款采用Rust语言重构的跨平台小说下载解决方案&a…...

深入ByteTrack算法:YOLOv8目标跟踪背后的卡尔曼滤波优化技巧

深入ByteTrack算法:YOLOv8目标跟踪背后的卡尔曼滤波优化技巧 在计算机视觉领域,目标跟踪技术正经历着从传统方法到深度学习融合的快速演进。当YOLOv8以其卓越的检测性能成为行业标杆时,其内置的ByteTrack算法通过巧妙结合卡尔曼滤波与检测框关…...

如何快速构建移动端管理后台:CoreUI Bootstrap模板与Ionic集成终极指南

如何快速构建移动端管理后台:CoreUI Bootstrap模板与Ionic集成终极指南 【免费下载链接】coreui-free-bootstrap-admin-template coreui/coreui-free-bootstrap-admin-template: CoreUI-Free-Bootstrap-Admin-Template 是一套免费的Bootstrap 4/5管理模板&#xff0…...

Verilog实战:如何避免组合逻辑与时序逻辑的常见设计陷阱?

Verilog实战:如何避免组合逻辑与时序逻辑的常见设计陷阱? 在数字电路设计中,Verilog作为硬件描述语言的核心价值,在于它能精准映射硬件行为。但许多工程师在从理论转向实践时,常陷入组合逻辑与时序逻辑的混用陷阱——某…...

全文降AI率vs分段降AI率:哪种方式效果更好?三款工具实测对比

全文降AI率vs分段降AI率:哪种方式效果更好?三款工具实测对比 处理论文AI率的时候,有两种常见的操作方式:一种是把全文直接丢给工具处理(全文降AI率),另一种是把论文拆成几段分别处理再拼回去&am…...

Superset 0.37版本Dashboard背景色扩展教程:从透明到自定义颜色的完整配置

Superset 0.37版本Dashboard背景色扩展教程:从透明到自定义颜色的完整配置 在数据可视化领域,Superset作为一款开源工具,其灵活性和可扩展性一直备受开发者青睐。特别是在企业级应用中,定制化Dashboard的外观往往成为刚需——统一…...

UVM环境自动化构建:基于Python与tkinter的uvm_testbench_gen实践指南

1. UVM环境自动化构建工具概述 在芯片验证领域,搭建UVM测试平台是个重复性高但又必须严谨对待的工作。传统手工编写SystemVerilog代码的方式不仅效率低下,还容易引入人为错误。这就是为什么我们需要uvm_testbench_gen这样的自动化工具——它用Python和tk…...

硬件设计:RS485差分信号实战解析

1. RS485差分信号基础:从理论到实战的第一课 第一次接触RS485时,我被它的抗干扰能力震撼到了。记得有次在电机车间调试,周围全是变频器和伺服驱动器,RS232通信动不动就丢包,换成RS485后立刻稳如老狗。这种神奇的表现&…...

如何使用Mac CLI:开发者必备的macOS命令行管理工具

如何使用Mac CLI:开发者必备的macOS命令行管理工具 【免费下载链接】Mac-CLI  macOS command line tool for developers – The ultimate tool to manage your Mac. It provides a huge set of command line commands that automatize the usage of your Mac. 项…...

Qwen2大模型轻量化微调实战-命名实体识别(NER)任务(LoRA高效训练)

1. 为什么选择Qwen2进行NER任务微调 命名实体识别(NER)作为自然语言处理的基础任务,在信息抽取、知识图谱构建等场景中扮演着关键角色。传统NER模型如BiLSTM-CRF虽然效果不错,但需要针对不同领域重新训练。而基于Qwen2这样的开源大…...

CNN架构优化提升LingBot-Depth深度估计精度的研究

CNN架构优化提升LingBot-Depth深度估计精度的研究 1. 引言 深度估计是计算机视觉领域的核心任务之一,它让机器能够"看见"三维世界。但在实际应用中,我们常常遇到这样的问题:透明物体、反光表面、复杂纹理区域等场景下&#xff0c…...

终极恶搞设计指南:SVG与PNG格式在IT贴纸创作中的实战对比

终极恶搞设计指南:SVG与PNG格式在IT贴纸创作中的实战对比 【免费下载链接】misbrands The worlds most hated IT stickers 项目地址: https://gitcode.com/gh_mirrors/mi/misbrands GitHub 加速计划的 misbrands 项目专注于创建"世界上最令人讨厌的IT贴…...

深入解析LLVM全局值编号:提升编译器优化效率的完整指南

深入解析LLVM全局值编号:提升编译器优化效率的完整指南 【免费下载链接】llvm-project llvm-project - LLVM 项目是一个编译器和工具链技术的集合,用于构建中间表示(IR)、优化程序代码以及生成机器代码。 项目地址: https://gitcode.com/GitHub_Trendi…...

motrix-webextension:提升下载管理效率的创新方法 - 开源工具用户指南

motrix-webextension:提升下载管理效率的创新方法 - 开源工具用户指南 【免费下载链接】motrix-webextension A browser extension for the Motrix Download Manager 项目地址: https://gitcode.com/gh_mirrors/mo/motrix-webextension motrix-webextension是…...

OpenModelica新手避坑指南:从安装到第一个RLC电路仿真(附常见错误解决)

OpenModelica新手避坑指南:从安装到第一个RLC电路仿真 第一次打开OpenModelica时,面对满屏的英文界面和专业术语,很多电气工程专业的学生都会感到无从下手。作为一款开源的Modelica建模与仿真工具,OpenModelica在学术研究和工业应…...