」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 用於建構生成式人工智慧應用程式的開源框架

用於建構生成式人工智慧應用程式的開源框架

發佈於2024-11-09
瀏覽:316

Open Source Frameworks for Building Generative AI Applications

有許多令人驚嘆的工具可以幫助建立生成式人工智慧應用程式。但開始使用新工具需要時間學習和練習。

因此,我創建了一個儲存庫,其中包含用於建立生成人工智慧應用程式的流行開源框架的範例。

這些範例也展示瞭如何將這些框架與 Amazon Bedrock 結合使用。

您可以在這裡找到存儲庫:

https://github.com/danilop/oss-for-generative-ai

在本文的其餘部分,我將描述我選擇的框架、儲存庫中範例程式碼的內容以及如何在實踐中使用它們。

包含的框架

  • LangChain:用於開發由語言模型驅動的應用程式的框架,具有以下範例:

    • 基礎模型呼叫
    • 連結提示
    • 建構 API
    • 建立客戶端
    • 實作聊天機器人
    • 使用基岩代理
  • LangGraph:LangChain 的擴展,用於使用大型語言模型 (LLM) 構建有狀態的多參與者應用程式

  • Haystack:用於建立搜尋系統和語言模型應用程式的端到端框架

  • LlamaIndex:基於 LLM 的應用程式的資料框架,範例包括:

    • RAG(檢索增強生成)
    • 建立代理人
  • DSPy:使用大型語言模型解決人工智慧任務的框架

  • RAGAS:評估檢索增強生成(RAG)管道的框架

  • LiteLLM:標準化來自不同提供者的 LLM 的使用的庫

框架概述

浪鏈

用於開發由語言模型支援的應用程式的框架。

主要特點:

  • 適用於法學碩士應用程式的模組化組件
  • 複雜 LLM 工作流程的鍊和代理
  • 情境互動的記憶系統
  • 與各種資料來源和API整合

主要用例:

  • 建構對話式人工智慧系統
  • 創造特定領域的問答系統
  • 開發人工智慧驅動的自動化工具

郎圖

LangChain 的擴展,用於建立有狀態的多參與者。法學碩士申請

主要特點:

  • 基於圖的工作流程管理
  • 複雜代理交互的狀態管理
  • 設計與實作多代理系統的工具
  • 循環工作流程與回饋循環

主要用例:

  • 創建協作人工智慧代理系統
  • 實施複雜、有狀態的人工智慧工作流程
  • 開發人工智慧驅動的模擬和遊戲

草垛

用於建立生產就緒的 LLM 應用程式的開源框架。

主要特點:

  • 具有靈活管道的可組合人工智慧系統
  • 多模態AI支援(文字、圖像、音訊)
  • 生產就緒,具有可序列化的管道和監控

主要用例:

  • 建構 RAG 管道和搜尋系統
  • 開發對話式人工智慧與聊天機器人
  • 內容產生與摘要
  • 創建具有複雜工作流程的代理管道

駱駝指數

用於建立 LLM 支援的應用程式的資料框架。

主要特點:

  • 進階資料攝取與索引
  • 查詢處理與回應合成
  • 支援各種數據連接器
  • 可自訂的檢索和排名演算法

主要用例:

  • 創建知識庫與問答系統
  • 在大型資料集上實現語意搜尋
  • 建構情境感知人工智慧助理

DSPy

透過聲明性和可優化的語言模型程式解決人工智慧任務的框架。

主要特點:

  • LLM互動的聲明式程式設計模型
  • LLM提示與參數自動最佳化
  • LLM 輸入/輸出的基於簽章的型別系統
  • 用於自動提示改進的提詞器(現在是優化器)

主要用例:

  • 開發強大且優化的 NLP 管道
  • 創造自我改進的人工智慧系統
  • 利用法學碩士實施複雜的推理任務

拉加斯

檢索增強生成(RAG)系統的評估架構。

主要特點:

  • RAG 管道的自動評估
  • 多種評估指標(忠實度、上下文相關性、答案相關性)
  • 支援不同類型的問題和資料集
  • 與流行的 RAG 框架整合

主要用例:

  • RAG 系統效能基準測試
  • 確定 RAG 管道需要改進的領域
  • 比較不同的 RAG 實作

萊特法學碩士

多個 LLM 提供者的統一介面。

主要特點:

  • 100 個 LLM 模型的標準化 API
  • 自動回退與負載平衡
  • 快取與重試機制
  • 使用情況追蹤與預算管理

主要用例:

  • 簡化多元法學碩士申請發展
  • 實施模式冗餘與後備策略
  • 管理不同提供者之間的 LLM 使用

結論

如果您使用過這些工具,請告訴我。我錯過了你想與他人分享的東西嗎?請隨意回饋儲存庫!

版本聲明 本文轉載於:https://dev.to/aws/open-source-frameworks-for-building-generative-ai-applications-532b?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php 您的目標可能是檢索“ varnum”屬性值,其中提取數據的傳統方法可能會使您留下PHP陷入困境。 使用simplexmlelement :: attributes()函數提供了簡單的解決方案。此函數可訪問對XML元素作為關聯數組的屬性: - > attributes()為$ att...
    程式設計 發佈於2025-02-19
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在java中的多個返回類型:一個誤解介紹,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但是,情況確實如此嗎? 通用方法:拆開神秘 [方法僅具有單一的返回類型。相反,它採用機制,如鑽石符號“ ”。 分解方法簽名: :本節定義了一個通用類型參數,E。它表示該方法接受擴展FOO類的...
    程式設計 發佈於2025-02-19
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-02-19
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    [2最後一行與數據集中的每個不同標識符關聯。考慮以下數據: 1 2014-02-01 kjkj 1 2014-03-11 ajskj 3 2014-02-01 sfdg 3 2014-06-12 fdsa 為了檢索數據集中每個唯一ID的最後一行信息,您可以在操作員上使用Postgres的有效效...
    程式設計 發佈於2025-02-19
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 github.com/coreos/etcd/integration imports :解析GO.mod:模塊將其路徑聲明為: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&&&&&&&&&&&&& github.com/coreos/b...
    程式設計 發佈於2025-02-19
  • 在沒有密碼提示的情況下,如何在Ubuntu上安裝MySQL?
    在沒有密碼提示的情況下,如何在Ubuntu上安裝MySQL?
    在ubuntu 使用debconf-set-selections 在安裝過程中避免密碼提示mysql root用戶。這需要以下步驟: sudo debconf-set-selections
    程式設計 發佈於2025-02-19
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError:SomeClass實...
    程式設計 發佈於2025-02-19
  • 如何以不同的頻率控制Android設備振動?
    如何以不同的頻率控制Android設備振動?
    控制使用頻率變化的Android設備振動是否想為您的Android應用程序添加觸覺元素?了解如何觸發設備的振動器至關重要。您可以做到這一點:生成基本振動以生成簡單的振動,使用振動器對象:這將導致設備在指定的持續時間內振動。 許可要求通過上述技術,您可以創建在您的Android應用程序中自定義振動,以...
    程式設計 發佈於2025-02-19
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 //錯誤:“ cance redeclare foo()” 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定...
    程式設計 發佈於2025-02-19
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在默認值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 這種限制源於遺產實現的關注,這些限制需要為Current_timestamp功能提供特定的實現。消息和相關問題 current_timestamp值: 創建表`foo`( `...
    程式設計 發佈於2025-02-19
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    如何為JavaScript對像變量創建動態鍵,嘗試為JavaScript對象創建動態鍵,使用此Syntax jsObj['key' i] = 'example' 1;將不起作用。正確的方法採用方括號:他們維持一個長度屬性,該屬性反映了數字屬性(索引)和一個數字屬性的數量。標準對像沒有模仿這...
    程式設計 發佈於2025-02-19
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mysql組使用mysql組來調整查詢結果。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的基於列的轉換。通過子句以及條件匯總函數,例如總和或情況。讓我們考慮以下查詢: select d.data_timestamp, sum(data_id = 1 tata...
    程式設計 發佈於2025-02-19
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> display:grid; grid-template-col...
    程式設計 發佈於2025-02-19
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-02-19
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction: connect to to to Database connect to t...
    程式設計 發佈於2025-02-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3