26. AI-Agent-Dify

文章目錄

  • 前言
  • 一、Dify入門
    • 為什么使用 Dify?
    • Dify 能做什么?
  • 二、Dify私有化部署
    • Docker Compose 部署
    • 前提條件
    • 克隆 Dify 代碼
    • 啟動 Dify
    • 更新 Dify
    • 訪問 Dify
    • 自定義配置
  • 三、Dify構建企業級Agent應用
    • 定義
    • 如何使用智能助手
    • 添加助手需要的工具
    • 配置 Agent
    • 配置對話開場白
    • 調試與預覽
    • 應用發布


前言

Dify

??Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能參與到 AI 應用的定義和數據運營過程中。


一、Dify入門

官網:https://cloud.dify.ai/apps

Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能參與到 AI 應用的定義和數據運營過程中。

由于 Dify 內置了構建 LLM 應用所需的關鍵技術棧,包括對數百個模型的支持、直觀的 Prompt 編排界面、高質量的 RAG 引擎、穩健的 Agent 框架、靈活的流程編排,并同時提供了一套易用的界面和 API。這為開發者節省了許多重復造輪子的時間,使其可以專注在創新和業務需求上。

a90545c1331056aba35384f308c33d4f1736323696629f7f7ff2193314e86996e23b91fdc4355xossprocess=image%2Fresize%2Cw1237%2Climit0webp

為什么使用 Dify?

你或許可以把 LangChain 這類的開發庫(Library)想象為有著錘子、釘子的工具箱。與之相比,Dify 提供了更接近生產需要的完整方案,Dify 好比是一套腳手架,并且經過了精良的工程設計和軟件測試。

重要的是,Dify是開源的,它由一個專業的全職團隊和社區共同打造。你可以基于任何模型自部署類似 Assistants API 和 GPTs 的能力,在靈活和安全的基礎上,同時保持對數據的完全控制。

Dify 能做什么?

Dify 一詞源自 Define + Modify,意指定義并且持續的改進你的 AI 應用,它是為你而做的(Do it for you)。

  • 創業,快速的將你的 AI 應用創意變成現實,無論成功和失敗都需要加速。在真實世界,已經有幾十個團隊通過 Dify 構建 MVP(最小可用產品)獲得投資,或通過 POC(概念驗證)贏得了客戶的訂單。

  • 將 LLM 集成至已有業務,通過引入 LLM 增強現有應用的能力,接入 Dify 的 RESTful API 從而實現 Prompt 與業務代碼的解耦,在 Dify 的管理界面是跟蹤數據、成本和用量,持續改進應用效果。

  • 作為企業級 LLM 基礎設施,一些銀行和大型互聯網公司正在將 Dify 部署為企業內的 LLM 網關,加速 GenAI 技術在企業內的推廣,并實現中心化的監管。

  • 探索 LLM 的能力邊界,即使你是一個技術愛好者,通過 Dify 也可以輕松的實踐 Prompt 工程和 Agent 技術,在 GPTs 推出以前就已經有超過 60,000 開發者在 Dify 上創建了自己的第一個應用。

二、Dify私有化部署

參考文檔:https://github.com/langgenius/dify/blob/main/README_CN.md

Docker Compose 部署

前提條件

安裝 Dify 之前, 請確保你的機器已滿足最低安裝要求:

CPU >= 2 Core CPU >= 2 核;

RAM >= 4 GiB 內存 >= 4 GiB

操作系統軟件描述
macOS 10.14 or later
macOS 10.14 或更高版本
Docker Desktop Docker 桌面為 Docker 虛擬機(VM)至少分配 2 個虛擬 CPU(vCPU) 和 8GB 初始內存,否則安裝可能會失敗。有關更多信息,請參考 《在 Mac 內安裝 Docker 桌面端》
Linux platforms Linux 平臺Docker 19.03 or later
Docker Compose 1.28 or later
Docker 19.03 或更高版本 Docker Compose 1.28 或更高版本
請參閱安裝 Docker 和安裝 Docker Compose 以獲取更多信息。
Windows with WSL 2 enabled
啟用了 WSL 2 的 Windows
Docker Desktop
Docker 桌面
我們建議將源代碼和其他數據綁定到 Linux 容器中時,將其存儲在 Linux 文件系統中,而不是 Windows 文件系統中。有關更多信息,請參閱使用 WSL 2 后端在 Windows 上安裝 Docker Desktop。

克隆 Dify 代碼

倉庫克隆 Dify 源代碼至本地環境。git clone https://github.com/langgenius/dify.git

啟動 Dify

進入 Dify 源代碼的 Docker 目錄

  1. cd dify/docker

復制環境配置文件

  1. cp .env.example .env

啟動 Docker 容器根據你系統上的 Docker Compose 版本,選擇合適的命令來啟動容器。

你可以通過 $ docker compose version 命令檢查版本,詳細說明請參考 Docker 官方文檔:

如果版本是 Docker Compose V2,使用以下命令:

  1. docker compose up -d

如果版本是 Docker Compose V1,使用以下命令:

  1. docker-compose up -d

運行命令后,你應該會看到類似以下的輸出,顯示所有容器的狀態和端口映射:

[+] Running 11/11? Network docker_ssrf_proxy_network  Created                                                                 0.1s ? Network docker_default             Created                                                                 0.0s ? Container docker-redis-1           Started                                                                 2.4s ? Container docker-ssrf_proxy-1      Started                                                                 2.8s ? Container docker-sandbox-1         Started                                                                 2.7s ? Container docker-web-1             Started                                                                 2.7s ? Container docker-weaviate-1        Started                                                                 2.4s ? Container docker-db-1              Started                                                                 2.7s ? Container docker-api-1             Started                                                                 6.5s ? Container docker-worker-1          Started                                                                 6.4s ? Container docker-nginx-1           Started                                                                 7.1s

最后檢查是否所有容器都正常運行:

docker compose ps

在這個輸出中,你應該可以看到包括 3 個業務服務 ?api / worker / web?,以及 6 個基礎組件 ?weaviate / db / redis / nginx / ssrf_proxy / sandbox? 。

NAME                  IMAGE                              COMMAND                   SERVICE      CREATED              STATUS                        PORTS
docker-api-1          langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   api          About a minute ago   Up About a minute             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           About a minute ago   Up About a minute (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "sh -c 'cp /docker-e…"   nginx        About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        About a minute ago   Up About a minute (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                   sandbox      About a minute ago   Up About a minute             
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   About a minute ago   Up About a minute             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     About a minute ago   Up About a minute             
docker-web-1          langgenius/dify-web:0.6.13         "/bin/sh ./entrypoin…"   web          About a minute ago   Up About a minute             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   worker       About a minute ago   Up About a minute             5001/tcp

通過這些步驟,你應該可以成功在本地安裝 Dify。

更新 Dify

進入 dify 源代碼的 docker 目錄,按順序執行以下命令:

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

同步環境變量配置 (重要!)

  • 如果 .env.example 文件有更新,請務必同步修改你本地的 .env 文件。
  • 檢查 .env 文件中的所有配置項,確保它們與你的實際運行環境相匹配。你可能需要將 .env.example 中的新變量添加到 .env 文件中,并更新已更改的任何值。

訪問 Dify

你可以先前往管理員初始化頁面設置設置管理員賬戶:

# 本地環境
http://localhost/install# 服務器環境http://your_server_ip/install

Dify 主頁面:

# 本地環境
http://localhost# 服務器環境
http://your_server_ip

自定義配置

編輯 .env 文件中的環境變量值。然后重新啟動 Dify:

docker compose down
docker compose up -d

完整的環境變量集合可以在 docker/.env.example 中找到。

三、Dify構建企業級Agent應用

定義

智能助手(Agent Assistant),利用大語言模型的推理能力,能夠自主對復雜的人類任務進行目標規劃、任務拆解、工具調用、過程迭代,并在沒有人類干預的情況下完成任務。

如何使用智能助手

為了方便快速上手使用,你可以在“探索”中找到智能助手的應用模板,添加到自己的工作區,或者在此基礎上進行自定義。在全新的 Dify 工作室中,你也可以從零編排一個專屬于你自己的智能助手,幫助你完成財務報表分析、撰寫報告、Logo 設計、旅程規劃等任務。

選擇智能助手的推理模型,智能助手的任務完成能力取決于模型推理能力,我們建議在使用智能助手時選擇推理能力更強的模型系列如 gpt-4 以獲得更穩定的任務完成效果。

選擇智能助手的推理模型你可以在“提示詞”中編寫智能助手的指令,為了能夠達到更優的預期效果,你可以在指令中明確它的任務目標、工作流程、資源和限制等。

編排智能助手的指令提示詞

添加助手需要的工具

在“上下文”中,你可以添加智能助手可以用于查詢的知識庫工具,這將幫助它獲取外部背景知識。

在“工具”中,你可以添加需要使用的工具。工具可以擴展 LLM 的能力,比如聯網搜索、科學計算或繪制圖片,賦予并增強了 LLM 連接外部世界的能力。Dify 提供了兩種工具類型:第一方工具自定義工具

你可以直接使用 Dify 生態提供的第一方內置工具,或者輕松導入自定義的 API 工具(目前支持 OpenAPI / Swagger 和 OpenAI Plugin 規范)。

添加助手需要的工具

“工具”功能允許用戶借助外部能力,在 Dify 上創建出更加強大的 AI 應用。例如你可以為智能助理型應用(Agent)編排合適的工具,它可以通過任務推理、步驟拆解、調用工具完成復雜任務。

另外工具也可以方便將你的應用與其他系統或服務連接,與外部環境交互。例如代碼執行、對專屬信息源的訪問等。你只需要在對話框中談及需要調用的某個工具的名字,即可自動調用該工具。

配置 Agent

在 Dify 上為智能助手提供了 Function calling(函數調用)和 ReAct 兩種推理模式。已支持 Function Call 的模型系列如 gpt-3.5/gpt-4 擁有效果更佳、更穩定的表現,尚未支持 Function calling 的模型系列,我們支持了 ReAct 推理框架實現類似的效果。

在 Agent 配置中,你可以修改助手的迭代次數限制。

Function Calling 模式

ReAct 模式

配置對話開場白

你可以為智能助手配置一套會話開場白和開場問題,配置的對話開場白將在每次用戶初次對話中展示助手可以完成什么樣的任務,以及可以提出的問題示例。

配置會話開場白和開場問題

調試與預覽

編排完智能助手之后,你可以在發布成應用之前進行調試與預覽,查看助手的任務完成效果。

調試與預覽應用發布

應用發布

應用發布為 Webapp


本文的引用僅限自我學習如有侵權,請聯系作者刪除。
參考知識

如何基于Dify快速構建AI原生應用


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

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

相關文章

云原生:微服務與Serverless指南

Copilot時代的開發者效能提升 代碼生成與補全:減少重復性編碼工作,加快開發速度錯誤檢測與修復:實時提示潛在問題,降低調試時間知識獲取與學習:幫助開發者快速掌握新語言或框架協作效率:通過AI輔助減少團隊…

SpringBoot + Apache Tika:一站式解決文件數據提取難題

在日常開發中,你是否也遇到過這樣的窘境:領導甩來需求“把用戶上傳的 Word、Excel、PDF 里的關鍵信息扒出來存庫”,你卻要對著不同格式逐個攻堅——解析 Word 用 POI 還要處理 .doc/.docx 兼容,解析 Excel 要啃合并單元格、公式計…

車牌模擬生成器:Python3.8+Opencv代碼實現與商業應用前景(C#、python 開發包SDK)

車牌模擬生成器:Python代碼實現與商業應用前景引言在智慧城市建設和汽車行業數字化浪潮中,車牌作為車輛的唯一標識,其相關技術應用正變得越來越重要。今天我們將介紹一個基于Python的車牌模擬生成器,探討其技術實現、功能特點以及…

小程序非主頁面的數據動作關聯主頁面的數據刷新操作

如果在主頁面跳轉到其他頁面。比如說我的收藏頁面,然后有取消收藏的動作,當返回到主頁面的時候,如果有關聯數據顯示在主頁面,刷新頁面對應的狀態。 下面的代碼是實現://卡片收藏/取消if (newCollectd) {this.setData({…

后端(fastAPI)學習筆記(CLASS 1):擴展基礎

一、python的類型聲明1、類型聲明的背景和作用python 3.6 版本引入了“類型提示”1、類型提示是一種新的語法,用來聲明變量的類型2、提高編譯器和工具的支持能力為什么要學習類型提示1、了解類型提示不僅僅對使用FastAPI有幫助,也能提高代碼的可讀性度和…

2023年系統分析師上半年論文試題分析

試題一 論信息系統的可行性分析信息系統可行性分析的目的是確認在當前條件下企業是否有必要建設新系統,以及建設新系統的工作是否具備必要的條件。如何進行可行性分析是系統分析師所必須面臨的問題。請圍繞信息系統可行性分析論題,依次從以下三個方面進行…

洛谷 P1967 [NOIP 2013 提高組] 貨車運輸(kruskal 重構樹 + 求路徑最小邊權)

題目鏈接 題目難度 洛谷上是藍題&#xff0c;本人認為評高了&#xff0c;此題思維和實現都不難&#xff0c;應該是綠題。 題目解法概括 kruskal 重構樹 倍增優化求路徑最小邊權 代碼 #include <iostream> #include <cstdio> #include <vector> #inclu…

【01】針對開源收銀系統icepos (寶塔面板) 詳細安裝教程詳細參考-優雅草卓伊凡

【01】針對開源收銀系統icepos (寶塔面板) 詳細安裝教程詳細參考-優雅草卓伊凡引言本文做參考&#xff0c;下篇文章 直接實踐&#xff0c;由于已經選型本系統是服務端php開發的系統&#xff0c;他的系統環境如下&#xff1a;系統安裝 環境要求ICEPOS對服務器或電腦硬件要求不高…

MySQL的常用命令

目錄1. 連接MySQL數據庫基本連接語法連接參數說明2. 數據庫操作2.1 查看數據庫2.2 創建數據庫2.3 刪除數據庫3. 表操作3.1 查看表信息3.2 創建表3.3 常用數據類型3.4 修改表結構3.5 刪除表4. 數據操作 (CRUD)4.1 插入數據 (CREATE)4.2 查詢數據 (READ)基本查詢條件查詢排序和分…

Linux: config: CONFIG_CHECKPOINT_RESTORE;CRIU

文章目錄 config CHECKPOINT_RESTORE commit related 簡介 參考 如何使用 Checkpoint/Restore 功能 步驟 1:確保內核支持 步驟 2:安裝 CRIU 步驟 3:檢查點(Checkpoint) 步驟 4:恢復(Restore) 步驟 5:驗證 常見應用場景 注意事項 python config CHECKPOINT_RESTORE bo…

eclipse怎么把項目設為web

在 Eclipse 中將一個項目設置為 Web 項目&#xff08;或稱動態 Web 項目&#xff09;主要有兩種場景&#xff1a;?創建新的 Web 項目? 和 ?將現有項目轉換為 Web 項目。我將為你詳細講解這兩種方法。前提條件&#xff1a;確保你有必要的 Eclipse 組件在開始之前&#xff0c;…

CVPR 2025|基于視覺語言模型的零樣本3D視覺定位

論文信息題目&#xff1a;Zero-Shot 3D Visual Grounding from Vision-Language Models基于視覺語言模型的零樣本3D視覺定位作者&#xff1a;Rong Li, Shijie Li, Lingdong Kong, Xulei Yang, Junwei Liang論文創新點提出全新框架&#xff1a;論文提出SeeGround這一無需訓練的零…

Realtime API 語音代理端到端接入全流程教程(含 Demo,延遲 280ms)

在現代應用中&#xff0c;實時語音交互已經成為重要功能&#xff0c;而低延遲的語音傳輸更是用戶體驗的關鍵指標。本文將詳細介紹如何使用 Realtime API 實現 語音代理 的端到端接入&#xff0c;包括環境搭建、接口調用、低延遲優化及 Demo 演示。通過本教程&#xff0c;開發者…

AI賦能辦公:用Python解決發票合并打印難題

一、問題的提出今天網友提問&#xff1a;報銷時&#xff0c;財務要求要把發票合并打印&#xff0c;即兩張合成一張放在A4紙上&#xff0c;中間還要加一道黑色分界線&#xff0c;如何快速完成數十張發票的打印&#xff1f;問題的提出二、問題分析這個問題可以采用兩種方法解決&a…

Shell編程之正則表達式與文本處理工具

一、正則表達式基礎1. 正則表達式概述?定義?&#xff1a;正則表達式&#xff08;Regular Expression&#xff0c;簡稱Regex&#xff09;是由普通字符?&#xff08;如字母、數字、標點符號&#xff09;與元字符?&#xff08;具有特殊含義的專用字符&#xff09;組成的字符串…

使用 Spring AI Alibaba Graph 實現工作流

1 依賴<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId><version>1.0.0.2</version> </dependency><dependency><groupId>com.alibaba.cloud.…

碰一碰系統源碼于小程序打通技術開發整合方案,驅動AI技術開發源代碼

碰一碰系統結合小程序開發數據互通&#xff0c;驅動AI技術開發源代碼碰一碰系統作為門店獲客技術落地的核心載體&#xff0c;已從標準化產品向實體店定制演進。本文從源碼d的形式出發&#xff0c;解析企業級數字人分身系統的交互系統&#xff0c;為技術團隊提供可落地的開發指南…

深度學習——自然語言處理NLP

自然語言處理中的詞向量技術演進與實踐一、傳統統計語言模型的困境與突破1.1 統計語言模型的局限性早期NLP主要依賴統計語言模型&#xff0c;如n-gram模型&#xff0c;通過統計詞序列的頻率來預測語言概率。這類模型存在兩個根本缺陷&#xff1a;早期統計語言模型的局限性1. 維…

uni-app頭像疊加顯示

展示代碼<view class"bmBox"><view class"bmLeft">已報名&#xff1a;<text class"blueColor">10人</text></view><view class"bmRight dflex"><view class"avatarList"><ima…

私有化部署Ragflow的預訓練模型

部署ragflow代碼庫中的det.onnx模型&#xff08;通常是目標檢測或文檔結構解析類模型&#xff0c;如版面分析模型&#xff09;到火山云&#xff0c;需基于ONNX Runtime推理框架&#xff0c;結合火山云的計算資源和服務能力實現。以下是具體步驟&#xff1a; 一、模型特性與依賴…