Dify 推出新架構,增強了靈活性和可擴充性

2024-01-10 | Levi Tian

Dify 是一個開源平臺,用於建立具有大型語言模型 (LLM) 的應用程式,它與 LangChain 和專注於單個接觸點的類似產品不同。Dify 提供了眾多的互動點,可以滿足更複雜的內建需求。它是一個尖端的多接觸點服務層,可確保不同介面和平臺之間的高度相容性和一致性。這保證了各種系統和應用程式之間的順利內建和互動。

2024年將是多式聯運發展的關鍵一年,要在行業中保持領先地位意味著要快速適應不斷變化的技術趨勢。我們明白,更好地為開發人員服務需要將我們架構的強大基礎與更高的靈活性、可擴充性和團隊合作功能相結合。這促使我們徹底改造了 Dify 的架構,轉向更加模組化的設計。此更新允許每個元件獨立開發、測試和部署。它還支援水平擴充,無需等待官方更新即可適應一系列應用場景,並保持 API 一致性,以實作不同觸點之間更平滑的相容性。

Dify Beehive 架構

我們非常高興 Dify 在這一領域處於領先地位,尤其是在這樣一個關鍵時刻。使用 Dify Beehive 架構在這個新時代留下我們的第一個印記是向前邁出的一大步。

正如它的名字一樣,Beehive 架構以類似於蜂巢的六邊形結構的方式組織事物。這種設計使每個部分既獨立又協作,同時又靈活又可擴展。它使整個系統更易於維護和升級,允許更改單個模組而不會弄亂整體結構。該架構包括構建 LLM 應用程式所需的所有關鍵技術,例如支援模型負載、易於使用的提示編排介面、一流的 RAG 引擎、靈活的代理框架以及一組簡單的介面和 API。這使開發人員不必從頭開始,讓他們更專注於提出新想法和滿足業務需求。

Beehive 架構的緊密集成還展示了 Beehive 的團隊合作性質,不同的部分和部分密切合作以完成複雜的任務。這種團隊合作是 Dify 一直致力於讓每個人都能使用 AI,即使是那些沒有技術技能的人。

下一步

展望未來,Dify 計劃將更多功能模組化,以提高其靈活性和增長能力。這包括:

  • RAG 發動機元件模組化:將RAG引擎分解為更小的部分,例如ETL、嵌入、索引構建和資料呼叫。開發人員將能夠為每個部分挑選他們的工具、模型和策略,為他們提供更多的自由和自訂選項。
  • 添加更多工具:Dify 將開始支援符合 OpenAPI 規範 API 標準的工具,並且可以與遵循 OpenAI 外掛程式標準的工具一起使用。這將極大地加強 Dify 的工具箱,使其適合更廣泛的用途和使用者需求。
  • 更靈活的工作流程設定: Dify 將允許開發人員調整工作流程以適應他們自己的業務流程和需求。這將使 Dify 成為各種行業和情況的首選工具,更好地滿足各種業務需求。

模型運行時

通過此次重組,我們推出了我們的第一個服務模組 Model Runtime,這標誌著重組計劃的開始,也是提高靈活性和可擴充性的關鍵一步。

在 0.4.0 版本發佈之前,Dify 已經支援了數百種流行的商業和開源模型,包括本地和基於 MaaS 的模型。這包括 LLM、文本嵌入、Rerank、Speech2Text、TTS 等。但是,Dify 對複雜、適應性較差的 LangChain 架構的依賴使得開發人員很難添加新模型。他們面臨的問題包括侵入性開發、沒有標準介面規範以及為前端和後端使用不同的程式設計語言。

Runtime 透過簡化模型外掛程式和讓開發人員靈活地設定模型提供程式來解決這個問題。這種隨插即用的方法意味著開發人員可以更快地添加各種模型。

主要進步

統一介面

所有模型類型(如文本嵌入或推理模型)都有一個簡化的統一介面。這種一致的存取方法簡化了內模組化型的過程,並使內模組化型的過程更加高效。

# Example using Anthropic's large language model, where all models inherit from a model base classclass AnthropicLargeLanguageModel(LargeLanguageModel):    # _invoke()is a universal entry point forcalling any model.    # Inthe LLM class,forexample,it returns generated text.def_invoke():        # Implements the call's specific logic, including handling input/output transformation, streaming, token counting...    # ... Otherfunctions

使用 YAML 簡化配置

使用指定的 DSL,我們以聲明的方式設定模型供應商和模型。代碼庫中的這種清晰度使添加新模型標準化,並使供應商和模型參數更具可讀性和易於理解性。

provider:anthropicdescription:  en_US:Anthropic’s powerful models,suchas Claude 2and Claude Instant.supported_model_types:- llm#...  credential_form_schemas:  - variable:anthropic_api_key    label:      en_US:API Key    type:secret-input# ...Other variables

前端獨立性

現在,模型完全在後端定義和設定,無需更改前端。模型邏輯與UI設計的這種分離使代碼更加模組化並加快了開發週期。

動態添加

模型供應商設定介面已得到改進。現在,可以檢視更具體的模型類別標籤,並且可以通過 Runtime 內建的模型動態添加到清單中。例如,添加Google Gemini:

前方的道路

在這段旅程中,我們想向 LangChain 和 LlamaIndex 等開拓者大喊大叫。他們的開創性工作和見解是我們成功推出 0.1 版本的關鍵。

這次重大的結構改造顯示了我們對創新和一流品質的執著追求。我們的目標是幫助我們更好地為使用者和開發者社群服務,並使我們在競爭激烈的市場中保持領先地位。我們對這次改造感到興奮,我們希望從一開始就與 Dify 在一起的開發人員能分享我們的熱情。

資料來源:https://dify.ai/blog/dify-rolls-out-new-architecture

Related posts