【Linux】基于Ollama和Streamlit快速部署聊天大模型

1.環境準備

1.1 安裝Streamlit

在安裝Streamlit之前,請確保您的系統中已經正確安裝了Python和pip。您可以在終端或命令行中運行以下命令來驗證它們是否已安裝

python --version
pip --version

一旦您已經準備好環境,現在可以使用pip來安裝Streamlit了。在終端或命令行中運行以下命令:

pip install streamlit

安裝完成后,您可以使用以下命令驗證Streamlit是否成功安裝:

streamlit version

Streamlit運行文件方式

streamlit run app.py

1.2 安裝Ollama

curl -fsSL https://ollama.com/install.sh | sh

可能會出現斷傳,建議下載模型文件然后手動安裝

官網下載速度慢的話可以訪問?國內下載地址?下載

  • 直接下載后將壓縮包 傳到服務器上的文件夾上,解壓到usr目錄,輸入:
sudo tar -C /usr -xzvf 你的壓縮包所在位置

sudo systemctl daemon-reload
sudo systemctl enable ollama

服務啟停

2.python程序

import os
# 調用私有化的ollama
os.environ['OLLAMA_HOST'] = 'http://192.168.4.201:11434'
import ollamadef get_chat_response(messages, model):# 調用ollama對話接口,以流的方式交互并直接返回stream = ollama.chat(model= model, messages=messages, stream=True)return streamdef get_model():# 獲取deepseek 模型版本model_name = []result = ollama.list().modelsfor a in result:model_name.append(a.model)return tuple(model_name)

以下streamlit_ollama.py?是streamlit run 執行的文件

import streamlit as stfrom utils import get_chat_response, get_modelcontent = ''
# 這個方法是接收ollama的流,是一個generator,然后遍歷這個generator,提取其中的content字段,
# 通過yield關鍵字重新生成一個generator,交給 write_stream()方法流式輸出
def getContent(stream):global contentfor chunk in stream:c = chunk['message']['content']content += cyield cst.title("聊天機器人")# 從導航欄選擇要交互的模型版本
with st.sidebar:model = st.selectbox('請選擇你的對話模型:',get_model())
# 記錄對話歷史
if "messages" not in st.session_state:st.session_state['messages'] = [{'role':'assistant', 'content':'你好,請問有什么可以幫助你?'}]for message in st.session_state['messages']:st.chat_message(message['role']).write(message['content'])# 等待用戶輸入
prompt = st.chat_input()if prompt:st.session_state['messages'].append({'role':'user','content':prompt})st.chat_message('user').write(prompt)with st.spinner("思考中"):stream = get_chat_response(st.session_state['messages'], model)st.chat_message('assistant').write_stream(getContent(stream))st.session_state['messages'].append({'role':'assistant','content':content})content=''

最終效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915366.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915366.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915366.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jetpack - ViewModel、LiveData、DataBinding(數據綁定、雙向數據綁定)

一、ViewModel 1、基本介紹 ViewModel 屬于 Android Jetpack 架構組件的一部分,ViewModel 被設計用來存儲和管理與 UI 相關的數據,這些數據在配置更改(例如,屏幕旋轉)時能夠幸存下來,ViewModel 的生命周期與…

Go并發聊天室:從零構建實戰

大家好,今天我將分享一個使用Go語言從零開始構建的控制臺并發聊天室項目。這個項目雖然簡單,但它麻雀雖小五臟俱全,非常適合用來學習和實踐Go語言強大的并發特性,尤其是 goroutine 和 channel 的使用。 一、項目亮點與功能特性 …

瘋狂星期四第13天運營日報

網站運營第13天,點擊觀站: 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 昨日訪問量 昨天大概60個ip, 同比上個星期是高點的,但是與星期四差別還是太大了。😂 昨日搜索引擎收錄情況 百度依舊0收錄 …

吳恩達《AI for everyone》第二周課程筆記

機器學習項目工作流程以Echo/Alexa(語音識別AI)作為例子解釋: 1. collect data 收集數據——人為找很多人說 Alexa,并錄制音頻;并且還會讓一群人說其他詞語,比如hello 2. train model 訓練模型——用機器學…

uniapp props、$ref、$emit、$parent、$child、$on

1. uniapp props、ref、ref、ref、emit、parent、parent、parent、child、$on 1.1. 父組件和子組件 propsPage.vue導入props-son-view.vue組件的時候,我們就稱index.vue為父組件依次類推,在vue中只要能獲取到組件的實例,那么就可以調用組件的屬性或是方法進行操作 1.2. pr…

4、ubuntu | dify創建知識庫 | 上市公司個股研報知識庫

1、創建知識庫步驟 創建一個知識庫并上傳相關文檔主要涉及以下五個關鍵步驟: 創建知識庫:首先,需要創建一個新的知識庫。這可以通過上傳本地文件、從在線資源導入數據或者直接創建一個空的知識庫來實現。 指定分段模式:接下來是…

Kubernetes中為Elasticsearch配置多節點共享存儲

在Kubernetes中為Elasticsearch配置多節點共享存儲(ReadWriteMany)需結合存儲后端特性及Elasticsearch架構設計。 由于Elasticsearch默認要求每個節點獨立存儲數據(ReadWriteOnce),直接實現多節點共享存儲需特殊處理。 ??方案一:使用支持ReadWriteMany的存儲后端(推薦…

SpringBoot熱部署與配置技巧

配置文件SpringBoot 的熱部署Spring為開發者提供了一個名為spring-boot-devtools的模塊來使SpringBoot應用支持熱部署&#xff0c;提高開發者的開發效率&#xff0c;無需手動重啟SpringBoot應用相關依賴&#xff1a;<dependency> <groupId>org.springframework.boo…

Python與C#的三元運算符的寫法區別

一、語法結構對比??PyTorch示例??dev torch.device("cuda:0" if torch.cuda.is_available() else "cpu")??邏輯??&#xff1a;若torch.cuda.is_available()為真&#xff0c;則返回"cuda:0"&#xff0c;否則返回"cpu"。??作…

java 學習篇一

java知識點 一、windows不區分大小寫&#xff0c;linux區分大小寫 二、寫java需要JDK&#xff0c;一般運行環境需要JRE 三、JDK安裝一般是傻瓜是安裝 四、java主要工具javac、java&#xff1b;其中javac用于編譯.java -> .class&#xff1b;java用于執行.class文件執行時候不…

仙盟數據庫應用-外貿標簽打印系統 前端數據庫-V8--畢業論文-—-—仙盟創夢IDE

基于 Excel 標簽打印軟件的外貿打印流程優化與實踐摘要&#xff1a;在全球化外貿業務中&#xff0c;標簽打印是貨物流通、信息標識的關鍵環節。本文聚焦 “未來之窗云上打印技術” 的 Excel 標簽打印軟件&#xff0c;結合外貿平臺實際場景&#xff0c;分析其在打印流程中的應用…

【Linux】權限詳解 權限本質、權限屬性、su、sudo提權、chmod\chown\chgrp、文件類別

文章目錄一、權限的認識二、linux的權限本質三、linux的用戶su指令sudo提權四、linux角色五、文件權限屬性六、修改權限的指令操作chmod指令(權限只會驗證一次)chown/chgrp指令修改文件權限的八進制方案七、文件類別詳解一、權限的認識 什么是權限&#xff1f; 生活中處處都有權…

rman清理歸檔

1進入rman rman target / 2&#xff1a;列出所有歸檔日志的路徑 LIST ARCHIVELOG ALL; 3.然后在執行 crosscheck archivelog all;&#xff08;檢查 RMAN 存儲庫中記錄的歸檔日志是否在磁盤或備份存儲中實際存在。 4.然后在執行 delete noprompt expired archivelog all;&…

Selenium 處理動態網頁與等待機制詳解

在使用 Selenium 進行網頁自動化操作時&#xff0c;動態網頁往往是開發者遇到的第一個 “攔路虎”。想象一下&#xff1a;你明明在代碼中寫好了元素定位邏輯&#xff0c;運行時卻頻繁報錯 “元素不存在”&#xff0c;但手動打開網頁時元素明明就在眼前 —— 這很可能是因為網頁…

Salesforce 與外部系統實時集成:基于事件驅動的異步集成架構

在 Salesforce 與外部系統&#xff08;如 ERP、財務系統、物流系統等&#xff09;的實時集成中&#xff0c;“穩定性” 是核心挑戰 —— 既要保證數據同步的及時性&#xff0c;又要應對網絡波動、系統故障、并發沖突等不可控因素。以下從問題本質、技術瓶頸、解決方案細節三個維…

React 的 `cache()` 函數

文章目錄前言一、核心作用二、工作原理三、使用場景1. 避免重復數據請求2. 優化昂貴計算四、緩存規則詳解五、與其它緩存方式對比六、服務端特殊行為七、最佳實踐八、緩存失效策略九、使用限制十、與數據獲取庫集成總結&#xff1a;何時使用 cache()前言 React 的 cache() 函數…

大白編譯——autotools與cmake

注意: 本文內容于 2025-07-20 01:58:56 創建,可能不會在此平臺上進行更新。如果您希望查看最新版本或更多相關內容,請訪問原文地址:大白編譯——autotools與cmake。感謝您的關注與支持! 之前記錄了通過autotools編譯rpm包與deb包的步驟。參考小白編譯——rpm包與deb包 - …

react19+nextjs+antd切換主題顏色

在 React 19 Next.js Ant Design 項目中實現主題切換功能&#xff0c;可以通過以下步驟完成。這里將提供完整方案&#xff0c;包含靜態主題切換和動態實時切換兩種方式。一、基礎配置&#xff08;Ant Design 主題支持&#xff09; 1. 安裝必要依賴 npm install antd ant-desi…

Modbus Slave 使用教程:快速搭建模擬從站進行測試與開發

文章目錄Modbus Slave 使用教程&#xff1a;快速搭建模擬從站進行測試與開發步驟詳解&#xff1a;搭建 Modbus Slave1. 安裝與啟動2. 配置從站連接 (Connection Setup)連接3. 定義從站數據 (設置寄存器/線圈映射)4. 設置初始值與變化模式 (可選但重要)5. 連接 Master 進行測試高…

通俗易懂神經網絡:從基礎到實現

引言 神經網絡是人工智能和深度學習的核心&#xff0c;它模仿人腦的工作方式&#xff0c;通過數據學習復雜的模式。本文將以通俗易懂的方式講解神經網絡的基礎知識&#xff0c;包括單層神經網絡、多層神經網絡&#xff0c;最后用Python代碼實現一個簡單的神經網絡模型。1. 神經…