學習dify:一個開源的 LLM 應用開發平臺

Dify 是一個開源的 LLM 應用開發平臺。其直觀的界面結合了 AI 工作流、RAG 管道、Agent、模型管理、可觀測性功能等,讓您可以快速從原型到生產。以下是其核心功能列表:
?

1. 工作流: 在畫布上構建和測試功能強大的 AI 工作流程,利用以下所有功能以及更多功能。

2. 全面的模型支持: 與數百種專有/開源 LLMs 以及數十種推理提供商和自托管解決方案無縫集成,涵蓋 GPT、Mistral、Llama3 以及任何與 OpenAI API 兼容的模型。

?首先學習dify

dify 官網:https://github.com/langgenius/dify

入門指南:Dify:企業級 Agentic AI 解決方案開發平臺

手冊:產品簡介 - Dify Docs

本想嘗試手工部署dify,但是看到這段一定要裝docker才能部署嗎 · Issue #2826 · langgenius/dify:

是的,您可以不使用Docker從源代碼啟動應用程序。主要的應用服務(服務器和前端服務)的部署并不固定需要Docker,因為我們提供的指南包括了在主機上設置環境和直接運行服務的步驟。然而,中間件服務(如PostgresSQL,Redis,Weaviate)建議使用Docker Compose啟動,但如果Docker不是選項,這些中間件服務也可以直接在主機或其他合適的環境上安裝和運行。

所以最終決定還是用Docker部署吧,這樣就不用再去配置PostgresSQL、Redis等中間件了。

快速啟動:

啟動 Dify 服務器的最簡單方法是運行我們的?docker-compose.yml?文件。在運行安裝命令之前,請確保您的機器上安裝了?Docker?和?Docker Compose:

cd docker
cp .env.example .env
docker compose up -d

運行后,可以在瀏覽器上訪問?http://localhost/install?進入 Dify 控制臺并開始初始化安裝操作。

Ollama部署DeepSeek具體參考:

使用Ollama 在Ubuntu運行deepseek大模型:以deepseek-r1為例_ubuntu deepseek-CSDN博客

在Windows下安裝Ollama并體驗DeepSeek r1大模型

實踐

Dify 社區版即開源版本。

下載源代碼

首先下載dify的源代碼

git clone https://githubfast.com/langgenius/dify

安裝docker

sudo apt install docker-compose-v2

運行docker

cd dify/docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d

啟動API

進入目錄

cd api

準備環境變量

cp .env.example .env

?生成隨機密鑰并替換 .env 文件中的 SECRET_KEY 值

這句還沒執行:

awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env

分步執行,以免出錯:

openssl rand -base64 42
V8Ye+wDwIWMLLeMghrPv6NZ019GtsltpuycNT3vlRyNc3T3SVvkST62U

?將秘鑰放入.env文件:

SECRET_KEY=V8Ye+wDwIWMLLeMghrPv6NZ019GtsltpuycNT3vlRyNc3T3SVvkST62U

安裝依賴

uv sync

如果慢,就加上鏡像

uv sync -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

?執行數據庫遷移

uv run flask db upgrade

遷移升級完成

INFO  [alembic.runtime.migration] Running upgrade 4474872b0ee6 -> 0ab65e1cc7fa, remove sequence_number from workflow_runs
INFO  [alembic.runtime.migration] Running upgrade 0ab65e1cc7fa -> 58eb7bdb93fe, add mcp server tool and app server
INFO  [alembic.runtime.migration] Running upgrade 58eb7bdb93fe -> 1c9ba48be8e4, add uuidv7 function in SQL
INFO  [alembic.runtime.migration] Running upgrade 1c9ba48be8e4 -> 71f5020c6470, tool oauth
INFO  [alembic.runtime.migration] Running upgrade 71f5020c6470 -> 1a83934ad6d1, update models
INFO  [alembic.runtime.migration] Running upgrade 1a83934ad6d1 -> 375fe79ead14, oauth_refresh_token
INFO  [alembic.runtime.migration] Running upgrade 375fe79ead14 -> 8bcc02c9bd07, add_tenant_plugin_autoupgrade_table

啟動API服務

uv run flask run --host 0.0.0.0 --port=5001 --debug

安裝web

安裝pnpm

npm i -g pnpm

進入 web 目錄

cd web

安裝依賴

pnpm install --frozen-lockfile

Done in 4m 23.1s using pnpm v10.13.1?

?修改.env.local文件

# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED or CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

構建web服務

pnpm build

啟動web服務

pnpm start

待續?

先進行到這里,以后再繼續

未知,也許是最后一步吧

?然后用瀏覽器配置:

http://127.0.0.1/install

創建一個用戶,登錄

創建空白應用

?集成ollama模型

調試

啟動docker compose -f docker-compose.middleware.yaml up -d報錯

docker compose -f docker-compose.middleware.yaml up -d unknown shorthand flag: 'f' in -f

后來發現,原來以前這樣安裝的:

sudo apt install docker.io

需要這樣安裝

sudo apt install docker-compose

最后知道需要安裝版本2

?啟動docker compose報錯ERROR: Invalid interpolation format for "db" option in service "services":

docker-compose -f docker-compose.middleware.yaml up
ERROR: Invalid interpolation format for "db" option in service "services": "${POSTGRES_PASSWORD:-difyai123456}"

插值語法沖突?
${VAR:-default}是標準的shell變量替換語法,但Docker Compose對某些版本(特別是v2.3以下)要求嚴格遵循${VAR}$VAR格式?12

  • 檢查當前版本:docker-compose --version
  • 升級到最新版可解決大多數語法兼容性問題?

看下版本

docker-compose -version
docker-compose version 1.25.0, build unknown

升級

sudo apt update
sudo apt upgrade docker-compose

升級docker-compose的時候報錯

E: Failed to fetch http://repo.huaweicloud.com/ubuntu/pool/main/i/intel-microcode/intel-microcode_3.20250211.0ubuntu0.20.04.1_amd64.deb ?404 ?Not Found [IP: 120.52.95.245 80]
E: Failed to fetch http://repo.huaweicloud.com/ubuntu/pool/main/l/linux-meta/linux-generic_5.4.0.211.206_amd64.deb ?404 ?Not Found [IP: 120.52.95.245 80]
E: Failed to fetch http://repo.huaweicloud.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_5.4.0.211.206_amd64.deb ?404 ?Not Found [IP: 120.52.95.245 80]
E: Failed to fetch http://repo.huaweicloud.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_5.4.0.211.206_amd64.deb ?404 ?Not Found [IP: 120.52.95.245 80]
E: Failed to fetch http://repo.huaweicloud.com/ubuntu/pool/main/s/sosreport/sosreport_4.7.2-0ubuntu1~20.04.2_amd64.deb ?404 ?Not Found [IP: 120.52.95.245 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

嘗試

sudo apt update --fix-missing

不行

嘗試

該錯誤表明華為云鏡像源中部分軟件包已失效或路徑變更,需按以下步驟處理:


一、立即修復方案

  1. ?清理緩存并重試?

    sudo apt cleansudo apt update --fix-missing

    哦了,果然清理緩存之后就好了!

怎么更新之后還是老版本??

?docker-compose -v
docker-compose version 1.25.0, build unknown

原來如此啊,需要安裝版本2

apt search docker-compose
Sorting... Done
Full Text Search... Done
docker-compose/focal,focal,now 1.25.0-1 all [installed]Punctual, lightweight development environments using Dockerdocker-compose-v2/focal-updates 2.27.1+ds1-0ubuntu1~20.04.1 amd64tool for running multi-container applications on Docker

安裝docker-compose-v2:?

sudo apt install docker-compose-v2

刪除老版本

sudo apt remove docker-compose

啟動用這句話
?

sudo docker compose -f docker-compose.middleware.yaml up

docker啟動報錯Error response from daemon: Get "https://registry-1.docker.io/v2/":

Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

上網問題,配置加速鏡像即可。參考:Python、Ubuntu、FreeBSD、docker、Huggingface、github、npm等常用加速鏡像_清華大學github鏡像-CSDN博客

pnpm build報錯

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----1: 0xe16044 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [node]2: 0x11e0dd0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]3: 0x11e10a7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]4: 0x140e985  [node]5: 0x140e9b3  [node]6: 0x1427a8a  [node]7: 0x142ac58  [node]8: 0x1c90921  [node]
Aborted (core dumped)ELIFECYCLE? Command failed with exit code 134.

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

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

相關文章

VEX實現物體沿線條流動

1. 效果如下:float offset fit01(rand(ptnum654),0.5,1)*Time*chf("speed") rand(ptnum547);int num nprimitives(1); vector pos primuv(1,"P",ptnum%num,offset%1);P pos;2.效果如下: float min detail(1,"min");…

puppeteer 系列模塊的系統性、詳細講解

puppeteer 系列模塊的系統性、詳細講解 🧩 一、核心模塊介紹 1. puppeteer全功能 Puppeteer 包,默認包含 Chromium 瀏覽器npm install puppeteer包含內容:Puppeteer API Chromium 瀏覽器適合場景: 想直接運行,不關心瀏…

golang實現一個規則引擎,功能包括實時增加、修改、刪除規則

以下是一個用 Go 實現的輕量級規則引擎,支持實時增加、修改、刪除規則,并基于表達式評估觸發規則動作: package mainimport ("errors""fmt""sync" )// Rule 定義規則結構體 type Rule struct {ID string // 規則唯一標…

算法訓練營day34 動態規劃② 62.不同路徑、63. 不同路徑 II、343整數拆分、96.不同的二叉搜索樹

動態規劃的第二篇博客!進階題目,有一說一,尤其最后一道題,真的難想到這種解法 找規律!!! 62.不同路徑 注意本題是路徑不是路程!!! 動態規劃 確定dp數組&am…

Spring 5 事務詳解

一、核心使用方式聲明式事務(推薦)通過 Transactional 注解實現,需配合配置啟用:Configuration EnableTransactionManagement public class AppConfig {Beanpublic PlatformTransactionManager txManager(DataSource dataSource) …

[ctfshow web入門]web99 in_array的弱比較漏洞

信息收集 array_push(array, value):向數組最后的位置插入value in_array(value, array, type):其中value是要查找的值,array是需要查找的的數組,type是查找的類型,如果沒有指定類型,則以弱比較方式查找 i…

mysql5.6 常用查詢sql

mysql5.6 常用查詢sql 文章目錄 mysql5.6 常用查詢sql 1.查詢版本 2.MySQL 運行狀態(Ping) 3.慢查詢數量 4.連接數 5.最大連接數 6.InnoDB 緩沖池命中率 7.表鎖等待次數 8.二進制日志狀態 9.表空間使用率 10.查詢緩存效率 11.每次自動擴展空間大小 12.導入導出 ? 一、導出(…

【在Unity游戲開發中Dictionary、List介紹】

在Unity游戲開發中&#xff0c;Dictionary和List是最核心的兩種數據結構&#xff0c;它們各自有優勢和應用場景。以下是介紹&#xff1a;&#x1f9e0; 數據結構本質對比特性Dictionary<TKey, TValue>List底層結構哈希表&#xff08;Hash Table&#xff09;動態數組&…

windows平臺計劃任務批處理實現定時任務

無限循環加定時延時計劃任務用戶登錄執行一次下文中300代表300秒執行一次第2,3,4行為vbs隱藏窗口C:\me\corn\test.batecho off if "%1""hide" goto CmdBegin start mshta vbscript:createobject("wscript.shell").run("""%~0&quo…

深入理解 TCP 協議:從原理到實踐的技術解析

目錄 一、TCP 協議的核心定位與特性 1.1 協議棧中的位置 1.2 五大核心特性 二、TCP 連接建立與終止的底層邏輯 2.1 三次握手&#xff08;連接建立&#xff09; 2.2 四次揮手&#xff08;連接終止&#xff09; 三、TCP 可靠傳輸的核心機制 3.1 序列號與確認機制 3.2 滑…

JAVA后端開發——“全量同步”和“增量同步”

“全量同步”和“增量同步”是數據處理、系統集成和數據庫領域中兩個基本概念。描述了兩種截然不同的數據同步策略&#xff0c;理解它們的區別對于設計任何數據系統都至關重要。全量同步 核心思想&#xff1a;全部替換&#xff0c;一步到位。在技術上&#xff0c;全量同步通常意…

修改CentOS的SSH登錄端口(22端口)

要修改CentOS系統的SSH服務默認端口(22端口)&#xff0c;請按照以下步驟操作&#xff1a; 備份SSH配置文件 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak編輯SSH配置文件 sudo vi /etc/ssh/sshd_config查找并修改端口設置 找到以下行(大約在第13行左右)&#xff1a;…

python導包機制-更優方式

在學習某個大模型應用的后端時&#xff0c;發現&#xff1a; xxx |-----src |------\---modules |------\------\------b.py |-----app.py在app.py中可以使用src.modules.b來進行導入。之前我導入時是形如.modules.b這種形式&#xff08;前面有.&#xff09;&#xff0c;但是當…

檢索召回率優化探究一:基于 LangChain 0.3集成 Milvus 2.5向量數據庫構建的智能問答系統

背景 基于 LangChain 0.3集成 Milvus 2.5向量數據庫構建的 NFRA&#xff08;National Financial Regulatory Administration&#xff0c;國家金融監督管理總局&#xff09;政策法規智能問答系統&#xff0c;第一個版本的檢索召回率是 79.52%&#xff0c;尚未達到良好、甚至是優…

《整合Spring Cache:本地緩存、Redis與Caffeine對比實踐》

&#x1f680; 整合Spring Cache&#xff1a;本地緩存、Redis與Caffeine對比實踐 &#x1f4cc; 前言 在高并發、高性能的系統設計中&#xff0c;緩存始終扮演著不可替代的角色。Spring Cache 作為 Spring 框架原生提供的緩存抽象層&#xff0c;極大簡化了緩存接入的復雜度。…

easyexcel填充方式導出-合并單元格并設置邊框

填充的模板最后導出效果實體 /*** 賬戶實體類* author test* date 2025-07-28*/ Getter Setter class Test {/*** 賬戶類型*/private String accType;/*** 賬戶余額*/private String money; }導出邏輯 /*** 導出文件邏輯*/ public void exportReport(List<Test> data) { …

Jenkins + SonarQube 從原理到實戰一:基于 K8s 部署與使用(含中文插件與 Python 掃描)

前言 公司開發部門希望在 Jenkins 構建過程中自動集成 C/C 的代碼掃描&#xff0c;正好我也沒接觸過 SonarQube&#xff0c;于是記錄下從零開始部署 SonarQube 服務并集成到 CI/CD 的過程&#xff0c;供后來者參考。 一、SonarQube 原理與工作機制詳解 1.1 什么是 SonarQube&…

Linux(Centos 7.6)命令詳解:sz

1.命令作用使用ZMODEM/YMODEM/XMODEM協議發送文件(Send file(s) with ZMODEM/YMODEM/XMODEM protocol)注意: 需要yum install lrzsz (yum provides sz可以查看rz命令是什么rpm包提供的)2.命令語法Usage: sz [options] file ...or: sz [options] -{c|i} COMMAND3.參數詳解OPTION…

智能運維中的數據轉換

《智能運維實踐 蘇娜 孫琳 王鴿著 人工智能技術叢書 自然語言處理的常用算法 日志異常檢測 根因定位 網絡流量異常檢測 清華大學出版社》【摘要 書評 試讀】- 京東圖書 數據轉換是數據預處理中的關鍵步驟&#xff0c;用于將數據從原始格式轉換為適合分析和建模的形式。這一過程…

IAR編輯器如何讓左側的工具欄顯示出來?

在IAR編輯器中恢復左側工具欄顯示&#xff0c;可通過以下方法操作&#xff1a; 一、通過菜單欄啟用工具欄 ?進入視圖菜單? 點擊頂部菜單欄的 ?"View"? → 在彈出列表中勾選 ?"Workspace"? 若工具欄仍不顯示&#xff0c;查看菜單欄右側是否有 ?"…