AI智能體(Agent)大模型入門【3】--基于Chailit客服端實現頁面AI對話

目錄

前言

安裝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 命令&…