Gen Ai - Springboot / Langchain4J 範例
生成式人工智慧是指人工智慧的一個子集,可以根據輸入資料產生新內容。這包括可以創建文字、圖像、音樂甚至影片的模型。生成式人工智慧的例子包括 OpenAI 的 GPT-3 和 DALL-E 等語言模型,它們可以分別根據文字描述產生類似人類的文字和圖像。
生成式人工智慧模型通常在大量資料集上進行訓練,並使用深度學習技術來學習資料中的模式和結構。它們具有廣泛的應用,包括:
- 自然語言處理 (NLP):為聊天機器人、翻譯和內容創建生成類似人類的文字。
- 創意藝術:創作藝術品、音樂和設計元素。
- 資料增強:產生額外資料以訓練其他機器學習模型。
- 醫療保健:協助醫學影像並制定個人化治療計劃。
LangChain4J Gen AI API如何幫助開發者建立Spring Boot AI應用
LangChain4J 是一個 Java 程式庫,旨在簡化大型語言模型 (LLM) 和 AI 功能與 Java 應用程式(包括使用 Spring Boot 建立的應用程式)的整合。以下是它如何幫助開發人員:
- LLM 的統一 API:LangChain4J 提供統一的 API,支援 OpenAI 和 Google Vertex AI 等多個 LLM 供應商。這種抽象允許開發人員在不同的法學碩士之間切換,而無需顯著更改其程式碼庫。
- 嵌入儲存集成:它與各種嵌入儲存集成,可以有效處理向量化資料。這對於檢索增強生成(RAG)任務特別有用,其中從知識庫中獲取相關資訊以增強人工智慧回應。
- 功能工具箱:此程式庫包含一整套用於提示範本、記憶體管理和輸出解析的工具。這些工具透過提供高階抽象和即用型元件來幫助建立複雜的人工智慧應用程式。
- Spring Boot整合:LangChain4J支援Spring Boot,讓開發人員更容易創建健壯且可擴展的AI應用程式。此整合允許利用 Spring 的依賴注入和配置管理功能將 AI 服務無縫合併到 Spring Boot 應用程式中。
- 範例和文件:LangChain4J 提供了大量的文件和範例,指導開發人員完成各種用例,並演示如何在其應用程式中實現人工智慧驅動的功能。
案例研究:醫療保健應用程式 - Gen Ai 支援的診斷微服務
Gen AI 範例:8 個法學碩士(3 個基於雲端和 5 個本地)在企業功能方面的比較
以下比較是基於 LangChain4J API 中可用的功能(由 OpenAI ChatGPT 支援)。這些功能對於基於 Gen AI 的企業應用程式開發至關重要。
# | 例子 | GPT 4o | 元駱駝3 | 米斯特拉爾 | 微軟Phi-3 | 谷歌傑瑪 | TII 獵鷹 2 | 克勞德 3 | 雙子座1.5 |
---|
1. | 你好世界 | ? | ? | ? | ? | ? | ? | ? | ? |
2. | 複雜的世界 | ? | ? | ? M1 | ? | ? | ? | ? | ? |
3. | 自訂數據 | ? | ? | ? | ? | ? | ? F1 | ? | ? |
4. | 影像生成 | ? | ? L1 | ? M2 | ? P1 | ? | ? F2 | ? | ? |
5. | 提示模板 | ? | ? | ? M3 | ? | ? | ? | ? | ? |
6. | 工具 | ? | ? L2 | ? M4 | ? P2 | ? G1 | ? F3 | ? | ? G1 |
7. | 聊天記錄 | ? | ? | ? | ? P3 | ? G2 | ? | ? | ? G2 |
8. | 少射 | ? | ? | ? M5 | ? | ? | ? | ? | ? G3 |
9. | 語言翻譯 | ? | ? | ? M6 | ? | ? | ? | ? | ? |
10. | 情緒分析儀 | ? | ? | ? | ? | ? | ? | ? | ? |
11. | 資料擷取器 | ?奧1 | ? L3 | ? M7 | ? P4 | ? G3 | ? F4 | ? | ? G4 |
12. | 持久性儲存 | ? | ? | ? M8 | ? P5 | ? G4 | ? | ? | ? |
8 個法學碩士的檢索增強生成 (RAG) 範例
# | 例子 | GPT 4o | 元駱駝3 | 米斯特拉爾 | 微軟Phi-3 | 谷歌傑瑪 | TII 獵鷹 2 | 克勞德 3 | 雙子座1.5 |
---|
51. | 簡單的 | ? | ? | ? | ? | ? | ? | ? | ? |
52. | 段 | ? | ? | ? | ? | ? | ? | ? | ? |
53. | 查詢轉換器 | ? | ? | ? | ? | ? | ? | ? | ? |
54. | 查詢路由器 | ? | ? L4 | ? M9 | ? P6 | ? G4 | ? F5 | ? | ? G5 |
55. | 重新排名 | ? | ? | ? | ? | ? | ? | ? | ? |
56. | 元數據 | ? | ? | ? | ? | ? | ? | ? | ? |
57. | 多個內容檢索器 | ? | ? | ? | ? | ? | ? | ? | ? |
58. | 跳過內容檢索 | ? | ? | ? | ? | ? | ? | ? | ? |
59. | 醫療保健應用程式 | ? | ? | ? | ? | ? | ? | ? | ? |
基於企業特質的頂尖法學碩士排名
# | 秩 | 公司 | 法學碩士 | 分數 | 類別 |
---|
1 | 1 | 人擇 | 克勞德 3 俳句 | 21/21 | 雲 |
2 | 2 | 開放人工智慧 | 聊天 GPT 4o | 20/21 | 雲 |
3 | 3 | 元 | 駱駝3 | 17/21 | 當地的 |
4 | 4 | TII | 獵鷹2號 | 16/21 | 當地的 |
5 | 4 | Google | 雙子座1.5專業版 | 16/21 | 雲 |
6 | 4 | Google | 芽 | 16/21 | 當地的 |
7 | 5 | 微軟 | PH值3 | 15/21 | 當地的 |
8 | 6 | 米斯特拉爾 | 米斯特拉爾 | 12/21 | 當地的 |
附註:基於雲端的 LLM 將擁有超過 5000 億個參數支持,而本地 LLM 大多基於 80 億個參數。
查看有關測試分數的更多詳細信息
安裝本地法學碩士
使用 Ollama 安裝本地 LLM
- 元駱駝3
- 谷歌傑瑪
- 微軟PHI-3
- TII 獵鷹 2
- 米斯特拉爾
- 魔法師數學
查看安裝指南。
取得測試雲法學碩士的密鑰
註冊以取得 API 金鑰
- Open AI - ChatGPT(可在此處建立 API 金鑰:https://platform.openai.com/api-keys)
- Anthropic - Claude 3(可在此處建立 API 金鑰:https://console.anthropic.com/settings/keys)
- Google Cloud -(https://console.cloud.google.com/ - 檢查 AiConstants.java 以取得說明)
- Cohere -(API 金鑰位於:https://dashboard.cohere.com/welcome/register)
- HuggingFace -(此處的 API 金鑰:https://huggingface.co/settings/tokens)
- Rapid -(API 金鑰位於:https://rapidapi.com/judge0-official/api/judge0-ce)
在您的環境中設定這些鍵
// API Keys -----------------------------------------------------------------------
// OpenAI API key here: https://platform.openai.com/account/api-keys
public static final String OPENAI_API_KEY = System.getenv("OPENAI_API_KEY");
// Cohere API key here: // https://dashboard.cohere.com/welcome/register
public static final String COHERE_API_KEY = System.getenv("COHERE_API_KEY");
// Anthropic API key here:: https://console.anthropic.com/settings/keys
public static final String ANTHROPIC_API_KEY = System.getenv("ANTHROPIC_API_KEY");
// HuggingFace API key here: https://huggingface.co/settings/tokens
public static final String HF_API_KEY = System.getenv("HF_API_KEY");
// Judge0 RapidAPI key here: https://rapidapi.com/judge0-official/api/judge0-ce
public static final String RAPID_API_KEY = System.getenv("RAPID_API_KEY");
Gen AI - 代碼包結構
套件 io.fusion.air.microservice.ai.genai
- 控制器(用於測試範例的其餘端點)
- 核
- 助手(基於LangChain4J AiService)
- 模型(程式碼中使用的資料模型)
- 提示(具有特定輸出的結構化提示)
- 服務(LLM 特定業務邏輯在所有範例中重複使用。)
- 工具(基於LLM搜尋呼叫的函數)
- 例(Claude 3、Falcon 2、GPT 4o、Gemini、Gemma、Llama3、Mistral、Phi-3、Wizard Math)
- utils(用於建立 ChatLanguageModels 和設定、API 金鑰和控制台執行程式的通用程式碼)
程式碼結構
啟動SpringBoot App後快速測試
使用 ChatGPT 4o 進行情緒分析
使用 ChatGPT 4o 進行內容審核
使用 RAG(自訂資料)的 ChatBot - 案例研究:汽車租賃服務
RAG架構
檢索增強生成(RAG)透過整合權威的外部知識庫來增強大型語言模型(LLM)的輸出。雖然LLM 在海量資料集上進行訓練,並利用數十億個參數來產生問答、語言翻譯和文字完成等任務的回應,但RAG 透過引用模型訓練資料以外的特定、最新資訊來源來優化這些輸出。這個過程顯著擴展了法學碩士的能力,使其能夠滿足專業領域或組織的內部知識的需求,而無需進行模型重新培訓。因此,RAG 提供了一種經濟高效的解決方案,以確保產生的內容保持相關性、準確性和上下文適當性。
大型語言模型 (LLM) 面臨幾個挑戰:
- 當他們缺乏正確答案時,他們可能會提供虛假資訊。
- 當使用者期望特定的、當前的回應時,它們可以提供過時的或通用的資訊。
- 他們可能會根據非權威來源產生回應。
- 由於術語混亂,不同的培訓來源使用相同的術語來描述不同的概念,因此它們可能會產生不準確的回應。
檢索增強生成(RAG)透過指導模型從權威的、預先確定的知識源中獲取相關信息,解決了與法學碩士相關的幾個挑戰。這種方法允許組織對模型產生的內容進行更多控制,確保準確性和相關性。此外,它還為使用者提供了對法學碩士用於制定其答案的來源和流程的更清晰的見解。
使用法學碩士與(自訂數據)汽車租賃服務協議進行對話
使用 ChatGPT 4o 擷取數據
LangChain4J 在兩個抽象層級上運作:
- 低級。在此級別,您可以最自由地存取所有低級元件,例如 ChatLanguageModel、UserMessage、AiMessage、EmbeddingStore、Embedding 等。您可以完全控制如何組合它們,但您需要編寫更多的黏合程式碼。
- 高級。在此級別,您可以使用 AiServices 和 Chains 等高級 API 與 LLM 進行交互,這向您隱藏了所有複雜性和樣板檔案。您仍然可以靈活地調整和微調行為,但它是以聲明的方式完成的。
了解更多... LangChain4J簡介
封裝結構
先決條件
- SpringBoot 3.2.4
- 爪哇22
- Jakarta EE 10(jakarta.servlet. 、jakarta.persistence. 、javax.validation.*)
- PostgreSQL 資料庫 14
- 奧拉馬 0.1.38
預設情況下,應用程式將使用 H2 記憶體資料庫。為此無需設定資料庫。
步驟 1.1 - 開始
- git 克隆 https://github.com/arafkarsh/ms-springboot-324-ai.git
- cd ms-springboot-324-ai
- 光碟資料庫
- 閱讀 README.md 以設定您的資料庫(PostgreSQL 資料庫)
- 預設(開發模式)應用程式將使用記憶體中 H2 資料庫
步驟 1.2 - 編譯(程式碼準備好後)
1.2.1 編譯程式碼
從 ms-springboot-324-ai 執行“編譯”
- 編譯或 ./compile (在 Linux 和 Mac OS 中運行)
- mvn 乾淨; mvn -e 包; (所有平台)
- 使用 IDE 編譯選項
1.2.2 “編譯”腳本會做什麼
- 清理目標資料夾
- 產生建構號和建置日期(進行 application.properties 備份)
- 建置最終輸出 SpringBoot fat jar 和 maven Thin jar
- 將 jar 檔案(和相依性)複製到 src/docker 資料夾
- 將 application.properties 檔案複製到目前資料夾和 src/docker 資料夾
在步驟1.2.2中,application.properties檔案將由「compile」腳本自動產生。這是關鍵的一步。如果沒有產生 application.properties 文件,服務將無法運作。有預先建立的應用程式屬性檔。
步驟 1.3 - 運行
1.3.1 啟動服務
- run 或 ./run(在 Linux 或 Mac OS 中運行)
- 運行 prod (運行生產配置文件,預設為 dev 設定檔)
- mvn spring-boot:run(所有平台 - 設定檔 dev H2 記憶體資料庫)
- mvn spring-boot:run -Dspring-boot.run.profiles=prod(所有平台 - 設定檔 prod PostgreSQL DB)
1.3.2 測試服務
- test 或 ./test(在 Linux 或 Mac OS 中執行)
- 直接執行curl命令(來自測試腳本)
聊天模型
- OpenAI(提供範例)
- Ollama - 在本機上執行 AI 模型(提供範例)
- Azure 開放人工智慧
- 亞馬遜基岩
- 科赫的命令
- AI21 實驗室的侏羅紀 2
- 梅塔的駱駝 2
- 亞馬遜的泰坦
- Google Vertex AI 掌上電腦
- Google雙子座
- HuggingFace - 存取數千個模型,包括來自 Meta 的模型,例如 Llama2
- 米斯特拉爾人工智慧
文字到圖像模型
- OpenAI 與 DALL-E(提供範例)
- 穩定人工智慧
轉錄(音訊到文字)模型
嵌入模型
- 開放人工智慧
- 奧拉馬
- Azure 開放人工智慧
- 奧恩克斯
- PostgresML
- 基岩凝聚力
- 基岩泰坦
- 谷歌頂點人工智慧
- 米爾斯塔爾人工智慧
Vector Store API 提供跨不同提供者的可攜性,具有新穎的類似 SQL 的元資料過濾 API,可保持可攜性。
向量資料庫
- Azure 向量搜尋
- 色度
- 米爾烏斯
- 新4j
- PostgreSQL/PGVector
- 松果
- 雷迪斯
- 韋維阿特
- 奎德蘭特
支援的型號有
- 開放人工智慧
- Azure 開放人工智慧
- 頂點人工智慧
- 米斯特拉爾人工智慧
查看CRUD操作範例
- 使用 REST 端點設定 Postman 進行測試
- 增刪改查範例
- JWT 令牌範例
檢查 CRUD_Examples.md
(C) 版權所有 2024:Apache 2 許可證:作者:Araf Karsh Hamid
* 根據 Apache 授權 2.0 版(「授權」)取得授權;
* 除非遵守許可證,否則您不得使用此文件。
* 您可以在以下位置取得許可證副本:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 除非適用法律要求或書面同意,否則軟體
* 根據許可證分發是在「原樣」基礎上分發的,
* 不提供任何明示或暗示的保證或條件。
* 請參閱許可證以了解特定語言的管理權限和
* 許可證下的限制。