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

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

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

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]刪除
最新教學 更多>
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-07-03
  • 圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    在chrome 在使用Chrome and IE9中的圖像時遇到的一個頻繁的問題是圍繞圖像的持續薄薄邊框,儘管指定了圖像,儘管指定了;和“邊境:無;”在CSS中。要解決此問題,請考慮以下方法: Chrome具有忽略“ border:none; none;”的已知錯誤,風格。要解決此問題,請使用以下...
    程式設計 發佈於2025-07-03
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-07-03
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-07-03
  • 在Pandas中如何將年份和季度列合併為一個週期列?
    在Pandas中如何將年份和季度列合併為一個週期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 這個目標是通過組合“年度”和“季度”列來創建一個新列,以獲取以下結果: [python中的concate...
    程式設計 發佈於2025-07-03
  • 我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    將我的加密庫從mcrypt升級到openssl 問題:是否可以將我的加密庫從McRypt升級到OpenSSL?如果是這樣,如何? 答案:是的,可以將您的Encryption庫從McRypt升級到OpenSSL。 可以使用openssl。 附加說明: [openssl_decrypt()函數要求...
    程式設計 發佈於2025-07-03
  • 如何正確使用與PDO參數的查詢一樣?
    如何正確使用與PDO參數的查詢一樣?
    在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
    程式設計 發佈於2025-07-03
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    程式設計 發佈於2025-07-03
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-07-03
  • 用戶本地時間格式及時區偏移顯示指南
    用戶本地時間格式及時區偏移顯示指南
    在用戶的語言環境格式中顯示日期/時間,並使用時間偏移在向最終用戶展示日期和時間時,以其localzone and格式顯示它們至關重要。這確保了不同地理位置的清晰度和無縫用戶體驗。以下是使用JavaScript實現此目的的方法。 方法:推薦方法是處理客戶端的Javascript中的日期/時間格式化和...
    程式設計 發佈於2025-07-03
  • 如何在鼠標單擊時編程選擇DIV中的所有文本?
    如何在鼠標單擊時編程選擇DIV中的所有文本?
    在鼠標上選擇div文本單擊帶有文本內容,用戶如何使用單個鼠標單擊單擊div中的整個文本?這允許用戶輕鬆拖放所選的文本或直接複製它。 在單個鼠標上單擊的div元素中選擇文本,您可以使用以下Javascript函數: function selecttext(canduterid){ if(d...
    程式設計 發佈於2025-07-03
  • 如何簡化PHP中的JSON解析以獲取多維陣列?
    如何簡化PHP中的JSON解析以獲取多維陣列?
    php 試圖在PHP中解析JSON數據的JSON可能具有挑戰性,尤其是在處理多維數組時。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    程式設計 發佈於2025-07-03
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-07-03
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:局部chrome-inly-ly-ly-lyly solument 您可能希望將文本中心集中在選擇框中,以獲取優化的原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option> < o...
    程式設計 發佈於2025-07-03
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-07-03

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

Copyright© 2022 湘ICP备2022001581号-3