DeepSeek16-open-webui Pipelines開發填坑

一、虛擬環境安裝

mkdir open_webui_pipelines
cd open_webui_pipelines
python -m venv py3119_env
call py3119_env\Scripts\activate 

二、下載服務以及安裝依賴

git clone https://github.com/open-webui/pipelines.git
cd pipelines
pip install -r requirements.txt

三、跑個簡單示例

copy .\examples\pipelines\providers\ollama_pipeline.py .\pipelines\
start.bat

輸出如下,表示已加載ollama_pipeline

INFO:root:Created subfolder: ./pipelines\ollama_pipeline
INFO:root:Created valves.json in: ./pipelines\ollama_pipeline
Loaded module: ollama_pipeline
INFO:root:Loaded module: ollama_pipeline
on_startup:ollama_pipeline

四、修改使用該PipeLine文件

  1. 修改文件,指向自己的ollama模型。

    修改剛才拷入的 \pipelines\ollama_pipeline.py。

    在 32行和33行,指向自己的ollama模型地址和名稱。源代碼如下:

            OLLAMA_BASE_URL = "http://localhost:11434"MODEL = "llama3"
    
  2. 修改完重啟服務

  3. 設置:
    添加 API 連接(url為pipelines服務的端口)

    • 進入 Open WebUI 管理員面板 > 設置 > 外部鏈接,打開【OpenAI API】
    • 點擊 + 添加新連接。
    • 設置 API URLhttp://localhost:9099API 密鑰0p3n-w3bu!(默認值。必填)。
  4. 使用:
    點擊【新對話】,在模型下拉中選擇【Ollama Pipeline】,開啟對話。
    pipelines服務后臺輸出日志,表示已經啟用改pipeline。

五、完善

1、修改\pipelines\ollama_pipeline.py文件,完成以下任務:

  • 在頁面可以配置ollama服務和模型
  • 修改一部分python不符合項
  • 將print修改為logger輸出
import logging
import os
from typing import List, Union, Generator, Iteratorfrom pydantic import BaseModel, Fieldimport requestsclass Pipeline:class Valves(BaseModel):OLLAMA_BASE_URL: str = Field(default="http://localhost:11434",description="ollama base url")OLLAMA_DEFAULT_MODEL: str = Field(default="llama3", description="ollama default model name")def __init__(self):# self.id = "ollama_pipeline"self.name = "Ollama Pipeline"self.valves = self.Valves(**{k: os.getenv(k, v.default) for k, v inself.Valves.model_fields.items()})self.log = logging.getLogger(__name__)passasync def on_startup(self):self.log.info(f"on_startup:{__name__}")passasync def on_shutdown(self):self.log.info(f"on_shutdown:{__name__}")passdef pipe(self, user_message: str, model_id: str, messages: List[dict], body: dict) -> Union[str, Generator, Iterator]:# This is where you can add your custom pipelines like RAG.self.log.info(f"pipe:{__name__}, model_id:{model_id}, messages:{messages}")ollama_base_url = self.valves.OLLAMA_BASE_URLmodel = self.valves.OLLAMA_DEFAULT_MODELif "user" in body:self.log.info("######################################")self.log.info(f'# User: {body["user"]["name"]} ({body["user"]["id"]})')self.log.info(f"# Message: {user_message}")self.log.info("######################################")try:r = requests.post(url=f"{ollama_base_url}/v1/chat/completions",json={**body, "model": model},stream=True,)r.raise_for_status()if body["stream"]:return r.iter_lines()else:return r.json()except Exception as e:return f"Error: {e}"
  1. 刪除pipelines\ollama_pipeline目錄
  2. 重啟服務

六、填坑:當pipelines文件中含有漢字時,文件編碼會引起pipeline加載失敗。

  1. 文件為utf-8時錯誤如下:
Error loading module: ollama_pipeline
'gbk' codec can't decode byte 0xaf in position 781: illegal multibyte sequence
WARNING:root:No Pipeline class found in ollama_pipeline
  1. 文件為gbk時錯誤如下:
Error loading module: ollama_pipeline
(unicode error) 'utf-8' codec can't decode byte 0xc6 in position 0: invalid continuation byte (ollama_pipeline.py, line 28)
WARNING:root:No Pipeline class found in ollama_pipeline
  1. 處理:
    修改pipelines\main.py文件,將文件中open()的函數調用,使用了文本方式的讀寫,都添加encoding=“utf-8”
137: with open(module_path, "r", encoding="utf-8") as file
193: with open(valves_json_path, "w", encoding="utf-8") as f
201: with open(valves_json_path, "r", encoding="utf-8") as f
580: with open(valves_json_path, "w", encoding="utf-8") as f:
  1. 然后將pipelines文件保存為utf-8即可
  2. 刪除pipelines\ollama_pipeline目錄
  3. 重啟服務

? 著作權歸作者所有

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

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

相關文章

蘭亭妙微APP 界面設計與軟件開發綜合服務商

蘭亭妙微作為 APP 界面設計公司與軟件開發公司,自 2011 年成立以來,由清華團隊主導,在軟件和互聯網 UI/UE 設計開發領域發展 16 年,積累了一定的行業經驗。 在 APP 界面設計方面,我們的團隊包含交互設計師、用戶體驗相…

【算法】動態規劃:1137. 第 N 個泰波那契數

1137. 第 N 個泰波那契數 簡單 相關標簽 premium lock icon 相關企業 提示 泰波那契序列 Tn 定義如下: T0 0, T1 1, T2 1, 且在 n > 0 的條件下 Tn3 Tn Tn1 Tn2 給你整數 n,請返回第 n 個泰波那契數 Tn 的值。 示例 1: 輸入&am…

[附源碼+數據庫+畢業論文]基于Spring+MyBatis+MySQL+Maven+jsp實現的校園家教兼職信息交流平臺管理系統,推薦!

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術,讓傳統數據信息的管理升級為軟件存儲,歸納,集中處理數據信息的管理方式。本校園家教兼職信息交流平臺就是在這樣的大環境下誕生,其可以幫助管理者在短時間內處理完畢龐大的…

vue-33(實踐練習:使用 Nuxt.js 和 SSR 構建一個簡單的博客)

實踐練習:使用 Nuxt.js 和 SSR 構建一個簡單的博客 使用 Nuxt.js 和 SSR 構建一個簡單的博客是鞏固你對服務器端渲染理解以及 Nuxt.js 如何簡化這一過程的好方法。這個練習將帶你完成設置基本博客結構、獲取數據并以用戶友好的格式展示,同時利用 SSR 的優勢來提升 SEO 和性能…

如何在 .Net 7 中使用 MQTT 客戶端

介紹 MQTT(消息隊列遙測傳輸)是一種輕量級消息傳遞協議,專為資源受限的環境而設計。MQTT 廣泛應用于物聯網 (IoT) 和機器對機器 (M2M) 通信。 本文將討論如何在 .NET 7 中實現 MQTT 消費者。我們將使用 MQTTnet 庫,這是 C# 中的高…

云上攻防—Docker安全容器逃逸特權模式危險掛載

前言 之前分享的是云服務安全,今天開始云原生安全,安全道路依舊很長。 什么是Docker呢,它是開源的容器化平臺,用于開發、部署和運行應用程序。它通過將應用程序及其依賴項打包在輕量級的容器中,實現環境一致性、快速…

2025API 開發工具Apipost 與 Apifox深度對比

在當今數字化時代,API 開發是構建各類軟件應用的關鍵環節。Apipost 和 Apifox 作為兩款知名的 API 開發工具,它們在實際開發場景中表現究竟如何呢?接下來,讓我們從多個功能點進行深入對比。 一、API 設計功能 接口定義與參數設置…

從零開始搭建Windows AI開發環境:QWQ-32B部署+Cursor插件優化實戰

文章目錄 前言1.安裝Ollama2.QwQ-32B模型安裝與運行3.Cursor安裝與配置4. 簡單使用測試5. 調用本地大模型6. 安裝內網穿透7. 配置固定公網地址總結 前言 本方案提出了一種基于Windows系統的智能化開發平臺搭建策略,通過融合Cursor智能編程平臺、Ollama模型運行框架…

PostgreSQL 中,若需顯示 不在 `IN` 子句列表中的數據

在 PostgreSQL 中,若需顯示 不在 IN 子句列表中的數據,可以通過以下方法實現: 方法 1:使用 NOT IN(注意 NULL 值) 直接篩選不包含在 IN 列表中的記錄: SELECT * FROM your_table WHERE your_c…

嘉訊科技:醫療信息化、數字化、智能化三者之間的關系和區別

隨著技術的不斷發展,醫療行業也在發生著巨大的變化。在這個過程中,醫療信息化、數字化、智能化成為三個重要方向。這些變化不僅帶來了醫療技術的進步,而且大大提高了醫療服務的質量和效率。 一、醫療信息化 醫療信息化是指醫療行業應用信息技…

Windows VMWare Centos Docker部署Springboot應用

接上篇文章:Windows VMWare Centos環境下安裝Docker并配置MySql-CSDN博客文章瀏覽閱讀370次,點贊3次,收藏4次。Windows VMWare Centos環境下安裝Docker并配置MySqlhttps://blog.csdn.net/u013224722/article/details/148928081 一、新建Sprin…

JavaEE-Spring事務和事務的傳播機制

事務 什么是事務 事務是?組操作的集合, 是?個不可分割的操作. 事務會把所有的操作作為?個整體, ?起向數據庫提交或者是撤銷操作請求. 所以這組操作要么同時成功, 要么同時失敗. 為什么需要事務? 事務的操作 Spring 中事務的實現 創建好數據庫后就是配置數據庫相關的配…

共享經濟視域下社群經濟的本質重構:基于開源AI智能名片鏈動2+1模式S2B2C商城小程序源碼的實證研究

摘要:社群經濟在互聯網時代呈現爆發式增長,但傳統社群運營存在情感維系成本高、商業轉化路徑長、技術賦能不足等痛點。本文以共享經濟理論為框架,結合開源AI智能名片鏈動21模式S2B2C商城小程序源碼的技術實踐,提出“思想-資源-機會…

測試方法的分類

靜態測試 核心分類依據:根據是否執行程序分為靜態測試和動態測試 靜態測試方法 執行特征:不運行被測程序,通過人工檢查或工具分析進行測試 測試對象:主要針對文檔(包括需求文檔、設計文檔等)和源代碼 實…

查看CPU支持的指令集和特性

1)gcc -c -Q -marchnative --helptarget 2)結果 The following options are target specific: -m128bit-long-double [enabled] -m16 [disabled] -m32 [disabled…

【大模型應用開發】Unity結合大模型實現智能問答功能

零、最終效果 Unity結合大模型實現智能問答功能 一、文本自動換行效果 新建一個Text文本,設置文本的最大寬度 然后添加Content Size Fitter組件,Vertical Fit選擇Preferred Size 二、背景隨文本長度變化效果 新建一個Image作為文本的背景&#xff0…

Python爬蟲-爬取汽車之家全部汽車品牌及車型數據

前言 本文是該專欄的第64篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文,筆者將基于汽車之家平臺,通過Python獲取全部的“汽車品牌以及車型”數據。 廢話不多說,具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。接下來,跟著筆者直接往下看正文詳…

簽名組件:uniapp 簽名組件開發,兼容小程序、H5、App等 電子簽名

描述 H5:1. 模擬橫屏。2. 提示信息、模擬態也通過模擬橫屏顯示 小程序:1. 自動橫屏展示 APP:1. 自動橫屏展示 rn-signature 個性簽名組件 組件名 rn-signature 簽名組件兼容H5、APP、小程序。橫屏簽名效果。 效果展示 h5端 小程序端 APP 端…

第10.4篇 使用預訓練的目標檢測網絡

在PyTorch提供的已經訓練好的圖像目標檢測中,均是R-CNN系列 的網絡,并且針對目標檢測和人體關鍵點檢測分別提供了容易調用的方 法。針對目標檢測的網絡,輸入圖像均要求使用相同的預處理方式,即先將每張圖像的像素值預處理到0~1之…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序源碼的運營機制沉淀與規范構建研究

摘要:在數字化商業生態中,運營機制的沉淀與規范構建是企業實現可持續增長的核心命題。本文以開源鏈動21模式、AI智能名片、S2B2C商城小程序源碼為技術基座,提出“機制設計-數據沉淀-規范生成-迭代優化”的四階閉環模型。通過某健康食品品牌的…