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 | 谷歌 | 双子座1.5专业版 | 16/21 | 云 |
6 | 4 | 谷歌 | 芽 | 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 等。这些是 LLM 支持的应用程序的“基元”。您可以完全控制如何组合它们,但您需要编写更多的粘合代码。
- 高级。在此级别,您可以使用 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
- 亚马逊的泰坦
- 谷歌 Vertex AI 掌上电脑
- 谷歌双子座
- 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
*
* 除非适用法律要求或书面同意,否则软件
* 根据许可证分发是在“按原样”基础上分发的,
* 不提供任何明示或暗示的保证或条件。
* 请参阅许可证以了解特定语言的管理权限和
* 许可证下的限制。