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

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

發佈於2024-11-08
瀏覽:367

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]刪除
最新教學 更多>
  • PDO如何防止SQL注入並取代轉義單引號?
    PDO如何防止SQL注入並取代轉義單引號?
    PDO防止SQL注入的方法如果你已經從mysql函式庫過渡到PDO,你可能想知道如何取代real_escape_string來轉義發往資料庫的字串中的單引號的函數。雖然向每個字串添加斜杠可能看起來很麻煩,但 PDO 提供了一種更有效的替代方案。 PDO 準備的強大功能為了防止 SQL 注入,PDO ...
    程式設計 發佈於2024-11-09
  • 透過「專案:使用互斥體同步多執行緒列印」課程釋放您的編碼潛力
    透過「專案:使用互斥體同步多執行緒列印」課程釋放您的編碼潛力
    您準備好深入多執行緒程式設計的世界並學習如何使用互斥體來同步字串的列印了嗎? LabEx 提供的項目:使用互斥體同步多執行緒列印課程就是您的最佳選擇。 在這個基於專案的綜合課程中,您將踏上了解互斥體在協調多執行緒執行方面的重要性的旅程。您將首先修改現有的「混沌打字機」程序,確保字串以正確的順序列印...
    程式設計 發佈於2024-11-09
  • 為什麼我在 MySQL 中收到「\'create_date\'時間戳欄位的預設值無效」錯誤?
    為什麼我在 MySQL 中收到「\'create_date\'時間戳欄位的預設值無效」錯誤?
    “create_date”時間戳字段的預設值無效建立帶有時間戳列的表並指定預設值“0000-”時00-00 00:00:00',可能會出現錯誤,指示「'create_date'的預設值無效」。這個錯誤是由 MySQL 的 SQL 模式 - NO_ZERO_DATE 所造成的。...
    程式設計 發佈於2024-11-09
  • 儘管出現「頁面已移動」錯誤,如何使用 cURL 檢索頁面內容?
    儘管出現「頁面已移動」錯誤,如何使用 cURL 檢索頁面內容?
    使用 cURL 檢索頁面內容在此上下文中,您試圖使用 cURL 抓取 Google 搜尋結果頁面的內容。儘管嘗試設定使用者代理程式和各種選項,但您仍無法成功檢索頁面內容。重定向或“頁面移動”錯誤繼續困擾著您。 據信此問題可能源自於查詢字串中特殊字元的編碼。為了緩解這種情況,需要更改 PHP 程式碼。...
    程式設計 發佈於2024-11-09
  • 如何使用 JPA 和 Hibernate 以 UTC 格式儲存日期/時間?
    如何使用 JPA 和 Hibernate 以 UTC 格式儲存日期/時間?
    使用JPA 和Hibernate 在UTC 時區儲存日期/時間在JPA/ 中處理日期和時間時擔心時區差異休眠應用程式?本文探討如何在 UTC (GMT) 時區有效儲存和檢索時態數據,確保跨不同時區進行一致且準確的處理。 考慮以下附註的 JPA 實體:public class Event { ...
    程式設計 發佈於2024-11-09
  • 如何使用 CSS 建立動態擴充的文字輸入欄位?
    如何使用 CSS 建立動態擴充的文字輸入欄位?
    透過 CSS 增強文字輸入回應能力製作 Web 表單時,控製文字輸入欄位的大小至關重要。 CSS 提供了一種簡單的方法來定義其初始尺寸。但是,如果您希望輸入隨著使用者鍵入而動態擴展並達到最大寬度,該怎麼辦?本文深入研究了僅 CSS 和基於 HTML 的技術來實現此行為。 CSS 和內容可編輯利用 C...
    程式設計 發佈於2024-11-09
  • 關於 Javascript Promise 的有趣事實
    關於 Javascript Promise 的有趣事實
    Promise 始終是異步的 Promise 的回呼總是在同步程式碼之後執行 const promise = Promise.resolve(); promise.then(() => console.log('async')); console.log('sync');...
    程式設計 發佈於2024-11-09
  • LightFlow:Go 的任務編排框架
    LightFlow:Go 的任務編排框架
    我發展了 LightFlow,一個任務編排框架,旨在簡化 Go 中複雜工作流程的管理。它專注於執行時序並減少對外部設定檔的需求。 主要特點: 獨立上下文:每個步驟都通過獨立上下文鏈接,僅允許訪問相關數據。 可合併流程:您可以靈活組合任務流程,以便在不同流程中重複使用。 檢查點恢...
    程式設計 發佈於2024-11-09
  • 使用 HTML、CSS 和 JavaScript 建立簡單的連結檢查器工具
    使用 HTML、CSS 和 JavaScript 建立簡單的連結檢查器工具
    使用 HTML、CSS 和 JavaScript 建立簡單的連結檢查器工具 作為...
    程式設計 發佈於2024-11-09
  • ## 為什麼 GetSystemTimeAdjustment 並不總是反映 Windows 7 上的真實時間調整?
    ## 為什麼 GetSystemTimeAdjustment 並不總是反映 Windows 7 上的真實時間調整?
    Windows 7 計時函數:了解GetSystemTimeAdjustment如您所觀察到的,在Windows 7 上使用GetSystemTimeAdjustment 函數的結果可能會令人費解。為了更好地理解,讓我們解決您的問題:問題1:假設的正確性您的假設總體上是正確的。如果系統時間定期同步,...
    程式設計 發佈於2024-11-09
  • 掌握 JavaScript:初學者的基本技巧
    掌握 JavaScript:初學者的基本技巧
    JavaScript 是一種多功能且功能強大的程式語言,構成了現代 Web 開發的支柱。如果您是 JavaScript 新手,這裡有一些基本技巧可幫助您掌握其概念並開始建立互動式 Web 應用程式: 1. 了解基礎: 變數和資料類型:了解變數、它們的類型(數字、字串、布林值、物件、陣...
    程式設計 發佈於2024-11-09
  • 如何在 Python 中安全地儲存使用者憑證而不損害資料隱私?
    如何在 Python 中安全地儲存使用者憑證而不損害資料隱私?
    在 Python 中保護使用者憑證在 Python 中,儲存使用者名稱和密碼等敏感資訊需要仔細考慮。在編寫定期從第三方服務檢索資料等任務的腳本時,您需要一種可靠且安全的方法來儲存憑證而不損害資料隱私。 一個選擇是利用 Python 金鑰環庫,它與作業系統加密整合機制。在 Windows 中,金鑰環採...
    程式設計 發佈於2024-11-09
  • 在 Go 中何時使用限制為切片類型的切片參數與通用切片參數?
    在 Go 中何時使用限制為切片類型的切片參數與通用切片參數?
    泛型切片參數:理解區別在Go 中,泛型編程引入了類型參數,允許函數對不同類型進行操作。感興趣的一個領域是限制為切片類型的切片參數和通用切片參數之間的區別。 限制為切片類型的切片參數考慮使用 slices.Grow 函數第一個參數受 ~[]E 約束。這意味著該參數的類型必須是元素類型為 E 的切片類型...
    程式設計 發佈於2024-11-09
  • 簡單DIY心率監測器+心電圖顯示器
    簡單DIY心率監測器+心電圖顯示器
    目標 這個迷你專案/教學的目標是用最少的組件製作一個超級簡單的心率監視器和滾動心電圖顯示。 要求: Python 音訊介面 1/4吋線/吉他線/樂器線(只需透過音訊介面連接電腦即可) 快速背景 心臟的肌肉產生電訊號。其中一些訊號可以在皮膚表面檢測到。 我們可以使用表面電極來擷取這些訊號。問題是,...
    程式設計 發佈於2024-11-09
  • 生態倡議地圖:CSS(第 2 部分)
    生態倡議地圖:CSS(第 2 部分)
    Introducción En este tutorial, aprenderás cómo mejorar la apariencia visual de tu página HTML aplicando estilos CSS de manera gradual. A lo l...
    程式設計 發佈於2024-11-09

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

Copyright© 2022 湘ICP备2022001581号-3