目录

前言

安装chailint

创建中文语言环境

创建chailint页面客户端


前言

本篇章将会基chailit框架实现页面进行AI对话。

若没有自己的本地模型对话,需要查看专栏内的文章,或者点击链接进行学习部署

AI智能体(Agent)大模型入门【2】--基于llamaindx部署本地的聊天模型。-CSDN博客

后期篇章将会脱离chailit别人封装好的框架体系,而是使用vue实现创建自己的页面聊天。

那么现在,开始我们的学习吧。

安装chailint

想要自己去深入学习了解的可以通过官方文档链接

https://docs.chainlit.io/get-started/overview

没有耐心,想要快速开始的,那么跟上我的脚步开始快速开始创建。

首先要在控制安装它的包内容。

安装指令

pip install chainlit

注:

1.若安装失败,请注意一下自己的python解析器是否满足高于3.9版本

2.是否开启能够访问外网的加速软件。

创建中文语言环境

因为llamaindex不支持中文,需要我们自己去创建一个中文语言的环境。

为了简化你们去查询资料的内容,我这里已经有创建好的py文件了。

embeddings.py
from llama_cloud import HuggingFaceInferenceApiEmbedding
from llama_index.embeddings.huggingface import HuggingFaceEmbeddingdef embed_model_local_bge_small(**kwargs):embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-zh-v1.5",cache_folder="./embedding_cache",**kwargs)return embed_model

创建chailint页面客户端

需要创建一个app.py文件来进行创建。

导入模块包

# 导⼊chainlit库,⽤于构建和部署AI应⽤
import chainlit as cl
# 导⼊Settings类,⽤于配置llama_index的核⼼设置
from llama_index.core import Settings
# 导⼊SimpleChatEngine类,⽤于实现简单的聊天引擎
from llama_index.core.chat_engine import SimpleChatEngine
# 导⼊deepseek_llm,可能是⼀个⾃定义的或第三⽅的语⾔模型库
from llms import deepseek_llm,qwen_llm

然后定义两个异步函数,用于处理聊天机器人的启动和消息交互。

start()函数在聊天开始时初始化聊天引擎并发送欢迎消息

chat()函数处理用户消息并生成流式响应。

@cl.on_chat_start
async def start():Settings.llm = qwen_llm()chat_engine = SimpleChatEngine.from_defaults()cl.user_session.set("chat_engine", chat_engine)await cl.Message(author="Assistant",content="你好,我是AI智能助手,你可以向我提问任何问题。",).send()@cl.on_message
async def chat(message: cl.Message):query_engine = cl.user_session.get("chat_engine")msg = cl.Message(content="",author="Assistant")res = await cl.make_async(query_engine.stream_chat)(message.content)for token in res.response_gen:await msg.stream_token(token)await msg.send()

代码讲解

函数start()函数在聊天开始时初始化聊天引擎并发送欢迎消息

1.这个函数就是通过设置模型为qwen模型,

2.通过chat_engine设置模型为聊天模型,然后cl.message来设置模型聊天的角色,

3.里面的content是可以通过你去设置提示词来进行ai回答内容的选定的。

chat()函数处理用户消息并生成流式响应。

1.query_engine获取聊天对话的引擎

2.msg为聊天引擎对话的角色方式

3.res则是接收返回对话的内容

4.通过for循环来进行对消息的流式输出

我是这么理解的,如有出错请见谅,你也可以通过其他工具来理解意思

此时我们就完成了基本的chailint

确保文件夹下含有这些模块包

现在需要启动它了

通过在控制台输入指令

chailit run .\app.py -w

注:本地端口的8000不能被占用,否则运行失败

若出现卡在界面无法运行的还有一种情况,那就是访问外网的工具没开启导致无法启动。

运行效果演示

通过在输入框输入对话内容实现与大模型对话,实现页面对话效果。

本篇章,并没有很多实际运行的操作,更多的是在上一篇章的进一步操作理解优化,OK,到这里希望你也学会基于chainlit的页面实现对话操作了,那么下一篇章就是实现走本地知识库对话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/97910.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/97910.shtml
英文地址,请注明出处:http://en.pswp.cn/web/97910.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高并发内存池——项目】定长内存池——开胃小菜

提示:高并发内存池完整项目代码,在主页专栏项目中 文章目录 提示:高并发内存池完整项目代码,在主页专栏项目中 先设计一个定长的内存池 一、为什么需要定长内存池? 🏢 传统内存分配的痛点 🏭 内…

6-获取磁盘分区信息

观察文件 获取server端电脑里面存在哪些盘符 int MakeDriveInfo() { //1>A 2>B &#xff08;原本属于软盘的 &#xff09;3>C ... 26>Zstd::string result;for (int i 1; i < 26; i) { //让其循环if (_chdrive(i) 0) //改变当前的驱动,_chdrive函数(c和c中)应…

每天认识一个电子器件之LED灯

LED选型核心参数一览表参数类别关键参数说明 & 为什么重要基本电气参数正向电压 (Vf)LED正常发光时两端的电压降。必须匹配您的电路电压。红/黄光约1.8-2.2V&#xff0c;蓝/绿/白光约2.8-3.6V。正向电流 (If)LED正常发光时所需的电流。决定了LED的亮度&#xff0c;必须用电…

Spring Boot 集成 Flowable 7.1.0 完整教程

一、引言 在企业级应用开发中&#xff0c;工作流管理是不可或缺的一部分。从简单的请假审批到复杂的业务流程&#xff0c;工作流引擎能够显著提升系统的灵活性和可维护性。​​Flowable​​ 作为一个轻量级、基于 Java 的开源工作流引擎&#xff0c;完美支持 ​​BPMN 2.0​​…

uniapp离线打包安卓apk详细教程,从HbuilderX新建项目到Android Studio详细配置(一)

目录 一、基础离线打包&#xff0c;无引入模块&#xff0c;无原生插件 1. HbuilderX新建项目&#xff0c;开发者后台申请证书和离线key 2.HbuilderX生成本地包 二、Android Studio配置 1.下载离线SDK&#xff0c;解压&#xff0c;SDK版本需要和HbuilderX 版本一致&#xf…

蓝牙鼠标频繁卡顿?一招解决 Win10/11 的 USB 省电机制干扰问题

蓝牙鼠标频繁卡顿&#xff1f;一招解决 Win10/11 的 USB 省电机制干扰问题 问题背景 在使用蓝牙鼠标时&#xff0c;很多用户会遇到以下问题&#xff1a; 鼠标移动卡顿、延迟明显偶尔断连&#xff0c;需重新配对尤其在笔记本合盖或待机后恢复时更明显 这些问题在 Windows 10/11 …

领码方案|Spring Boot 异步请求深度剖析:从原理到 AI 驱动的吞吐量优化

摘要 本文以“领码方案”为核心&#xff0c;深入剖析 Spring Boot 异步请求的底层原理、线程模型、三种常用实现方式&#xff08;Callable、WebAsyncTask、DeferredResult&#xff09;的运行机制与性能特征&#xff0c;并结合 AI 驱动的自适应线程池调优、云原生架构下的弹性伸…

C++基础(13)——list类的模拟实现

目录 一、接口函数和类总览 二、节点结构体的实现 构造函数 三、迭代器结构体的实现 迭代器模版参数 构造函数 重载运算符 重载--运算符 重载运算符 重载*运算符 重载->运算符 四、list的模拟实现 默认成员函数 构造函数 拷贝构造函数 赋值运算符重载函数 …

从 APP 界面设计到用户体验优化:如何让你的应用脱颖而出?

作为一个经验丰富的设计师&#xff0c;在产品优化方面我踩过不少坑&#xff0c;也见过很多团队在界面设计和用户体验上的误区。APP 的外观决定了用户的第一印象&#xff0c;但能不能留住用户、让他们愿意持续使用&#xff0c;最终还是看体验。今天就结合自己的经验&#xff0c;…

Kafka如何配置生产者拦截器和消费者拦截器

Kafka 的生产者拦截器和消费者拦截器允许你在消息发送前后以及消息消费前后嵌入自定义逻辑&#xff0c;用于实现监控、审计、消息修改等功能。本文我们就用一个最常见的传递TraceId的案例来说明下这两类拦截器如何来使用。 生产者发送拦截器 生产者拦截器需要实现 org.apache.k…

vue表单弹窗最大化无法渲染复杂组件内容

背景&#xff1a;最大化后选然后复杂组件内容丢失&#xff0c;如下拉框、图片上传组件修复方案&#xff1a;使用深拷贝核心代码this.maximizeDialog {visible: true,title: 患者申请 - 最大化查看,formModel: JSON.parse(JSON.stringify(this.formModel || [])),formLogic: JS…

经典俄罗斯方块游戏 | 安卓三模式畅玩,暂时无广告!

大家好&#xff0c;今天想跟大家分享一款安卓版的俄罗斯方块游戏。适合无聊的时候玩玩&#xff0c;换换脑子&#xff0c;这款游戏太经典。80、90都玩过这个游戏。之前我也给大家推荐过一些离线小游戏&#xff0c;但有些用着用着就开始出现弹窗广告&#xff0c;这就有点烦&#…

今天开始学习新内容“服务集群与自动化”--crond服务、--syslog服务以及DHCP协议

一.crond简介1、基本介绍crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程&#xff0c;与windows下的计划任务类似&#xff0c;当安装完成操作系统后&#xff0c;默认会安装此服务工具&#xff0c;并且会自动启动crond进程&#xff0c;crond进程每分钟…

从go语言出发,搭建多语言云原生场景下全链路观测体系

一、方案背景 在公司内部devops平台的微服务化改造过程中&#xff0c;我们遇到了典型的分布式系统观测难题&#xff1a;服务间调用链路复杂、性能瓶颈难以定位、故障排查效率低下。特别是在生产环境出现问题时&#xff0c;往往需要花费大量时间在各个服务的日志中寻找蛛丝马迹。…

Vue 进阶实战:从待办清单到完整应用(路由 / 状态管理 / 性能优化全攻略)

Vue 进阶实战&#xff1a;从待办清单到完整应用&#xff08;路由 / 状态管理 / 性能优化全攻略&#xff09; 在上一篇博客里&#xff0c;我们一起实现了能本地存储的待办清单&#xff0c;不少朋友留言说&#xff1a;“学会了基础&#xff0c;但遇到‘登录后才能访问页面’‘多…

uniApp开发XR-Frame微信小程序 | 动态加载与删除模型

在使用xr-frame开发3D小程序时&#xff0c;我们经常需要根据需求去动态加载模型或删除模型&#xff0c;在官方的说明中&#xff0c;提到了相关方法&#xff0c;但并不太明确&#xff0c;也没有确切的实例。 我们先来看一下官方给出的说明。 一. Shadow元素 我们需要用代码动…

把多个 PPT 合并在一起,三步告别复制粘贴

制作部门汇报分册、项目阶段文件等工作需要将多个零散的PPT合并为一份完整文档。手动复制粘贴不仅效率低下&#xff0c;还容易导致格式错乱、动画丢失。本文介绍一种高效方法&#xff0c;三步操作即可将多个PPT文件快速合并为单一文档。无论是整合汇报材料&#xff0c;还是准备…

安卓旋转屏幕后如何防止数据丢失-ViewModel入门

Android ViewModel 入门教程 在日常开发中&#xff0c;当 Activity 因为旋转屏幕或内存回收被销毁重建时&#xff0c;UI 中的数据也会丢失。 这时候&#xff0c;Android Jetpack 提供的 ViewModel 就能帮我们解决这个问题。 1. 什么是 ViewModel ViewModel 是一种架构组件。它专…

Linux 下的 Vim 使用与网络安全配置详解

目录 引言 一、Vim 编辑器的使用 1. Vim 的模式 2. 常用操作命令 3. 保存与退出 4. 多窗口与 Shell 切换 二、Linux 网络基础 1. 网络分类 2. IP 地址与分类 三、网络配置与工具 1. ifconfig 2. netstat 3. wget 4. 主机名与 IP 映射 四、Linux 防火墙与安全设置…

Docker 容器传输文件的常用方法

Docker 容器传输文件的常用方法 在 Docker 日常使用中&#xff0c;经常需要在主机与容器之间传输文件&#xff08;如配置文件、代码包、日志等&#xff09;。以下是四种最常用的实现方式&#xff0c;覆盖临时传输、持久共享、构建集成等不同场景。 1. 使用 docker cp 命令&…