AI测试、大模型测试(七)Java主流大模型框架技术

目录

一、大模型按「应用领域」分类

[二、 主流框架技术特点](#二、 主流框架技术特点)

[2.1 Spring AI框架](#2.1 Spring AI框架)

[1、 pom依赖](#1、 pom依赖)

[2、 Spring AI特点](#2、 Spring AI特点)

[3、Spring AI 例子,Spring AI集成OpenAI并实现对话功能](#3、Spring AI 例子,Spring AI集成OpenAI并实现对话功能)

[2.2 LangChain4j框架](#2.2 LangChain4j框架)

[1、 LangChain4j简介](#1、 LangChain4j简介)

[2、 LangChain4j使用](#2、 LangChain4j使用)

3、调用示例


一、大模型按「应用领域」分类

大模型按「应用领域」分类,可分为: 自然语言处理大模型、计算机视觉大模型和多模态大模型。

1.自然语言处理大模型自然语言处理大模型专注于处理和理解自然语言文本,涵盖文本分类、情感分析、机器翻译、问答系统等领域。常见的模型包括BERT、GPT系列、RoBERTa和ALBERT等。

2.计算机视觉大模型计算机视觉大模型专注于图像、视频等视觉数据的处理和分析,涵盖图像识别、目标检测、图像分割和图像生成等任务。此类模型通常采用卷积神经网络及其变种,或基于Transformer架构提取图像特征。

3.多模态大模型多模态大模型能够同时处理文本、图像、音频等多种类型的数据,实现跨模态的信息表示、理解与交互。此类模型在智能交互领域展现出了较强的适应性。

二、 主流框架技术特点

Java生态系统提供了多种开发框架选择, 主流框架技术:

  • Spring AI:Spring生态集成,功能全面

  • LangChain4j:灵感来自Python LangChain,链式调用

  • Agents-Flex:国产框架,注重灵活性和性能

  • Haystack:面向生产环境的搜索增强生成

**技术选型考量因素**

  • 项目规模:大型项目适合Spring AI,轻量级场景考虑Agents-Flex

  • 团队熟悉度:熟悉Spring生态的团队可优先选择Spring AI

  • 性能要求:高并发场景需要评估框架的性能表现

  • 功能需求:复杂代理场景可能需要更专业的框架支持

注: Midjourney和Stable Diffusion是专门用于从文本生成图像的模型,而ChatGPT擅长处理文本交互

2.1 Spring AI框架

1、 pom依赖

<!-- Spring AI -->

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-openai-spring-boot-starter</artifactId>

<version>${spring-ai.version}</version>

</dependency>

2、 Spring AI特点

  • Spring AI支持处理语言、图像和音频等多种输入与输出格式。此外,Spring AI还提供对Embedding的支持,以实现更高级的用例,如多模态交互和跨领域应用。
  • Spring AI使用结构化输出转换器将字符串转换为JSON、XML或Java类等数据类型(大模型的输出是简单的字符串。即使请求以JSON格式返回,实际返回的也是字符串形式的JSON,而非真正的JSON数据结构)
  • Spring AI提供多种方法将用户数据和API集成到AI模型中,使其能够基于最新信息或外部系统数据进行响应。
  • 检索增强生成(Retrieval Augmented Generation,RAG)结合了检索与生成的优势,借助外部数据源弥补大模型自身知识的局限,提高生成内容的准确性和相关性,减少大模型的"幻觉"。

3、Spring AI 例子,Spring AI集成OpenAI并实现对话功能

注:Chat-Gpt是由OpenAI开发的基于GPT-3.5架构的大型语言模型。OpenAI是一个非营利性人工智能研究实验室

注:Spring AI 也可以集成deepseek实现对话功能。

DeepSeek: 适用于需要高精度和领域专业知识的场景,例如医疗病历分析、金融风险评估等等(在特定领域应用中用户体验较好,结果可靠;但在通用对话中可能不如ChatGPT流畅)

ChatGPT: 适用于广泛的对话和生成任务,例如客服自动化、教育辅助、内容创作、编程帮助等

注:在实现基于Spring Boot框架的对话功能时,集成GPT(Generative Pre-trained Transformer)模型,特别是OpenAI的GPT-3或GPT-4,可以提供强大的自然语言处理能力。

注:要在Spring Boot应用中集成DeepSeek或其他类似模型,步骤类似。

步骤一,使用Spring Initializr创建项目+添加Spring Web依赖和OpenAI依赖

步骤二,配置API key,application.properties中配置OpenAI的API地址和密钥

注: API key可以保存在文件中,有时也支持保存在大模型平台上

步骤三,创建Controller并利用ChatClient通过链式调用实现对话功能

步骤四,访问/hwc/chat路径时,ChatClient响应请求并将应答结果返回至客户端

2.2 LangChain4j框架

1、 LangChain4j简介

LangChain4j 是 LangChain 的 Java 实现,一款基于Java的轻量级框架, 专为构建基于大语言模型(LLM)的应用程序而设计。它是 LangChain 框架在 Java 社区的移植版本,旨在提供类似于 Python 中 LangChain 的功能和灵活性。LangChain 本身是用 Python 编写的,但它可以通过各种方式与 Java 应用程序集成;

LangChain4j的核心组件包括语言模型(Language Model)、记忆(Memory)、工具(Tool)等。其中,语言模型是核心,负责生成文本;记忆用于存储对话历史,以便模型能够进行上下文相关的回答;工具则可以扩展模型的能力,例如进行搜索、调用API等。

适用场景:

  • 聊天机器人:通过对话能力实现智能客服、虚拟助手等。
  • 问答系统:结合知识库,提供准确的问答服务。
  • 文本生成:生成文章、故事、代码等

2、 LangChain4j使用

第一步:

复制代码
<dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-core</artifactId>
        <version>最新版本号</version>
    </dependency>
    <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-open-ai</artifactId>
        <version>最新版本号</version>
    </dependency>

第二步:通常需要在 application.properties 或 application.yml 文件中设置必要的配置,例如 API 密钥、模型选择

如果使用OpenAI的模型,需要在OpenAI官网注册账号并获取API Key

以OpenAI为例:langchain4j.openai.apiKey=你的OpenAI API Key

第三步:对话能力使用

复制代码
@Service
public class ChatService {
    private final ChatLanguageModel model;

    public ChatService() {
        model = new OpenAiChatModel();
    }

    public String chat(String userMessage) {
        ConversationalRetrievalChain chain = ConversationalRetrievalChain.builder()
                .chatLanguageModel(model)
                .build();
        return chain.execute(userMessage);
    }
}
  • 设置角色参数:

你是一个{{role}},请用专业的角度回答:{{question}}

  • 设置会话记忆:
  • 自定义模型: 自定义模型允许开发者根据需求实现自己的语言模型,例如使用本地模型或自定义逻辑。

使用本地模型:例如使用本地的Transformer模型。

自定义逻辑:例如实现特定的文本生成逻辑。

  • 自定义工具允许开发者根据需求实现自己的工具,例如调用外部API或执行特定操作

调用外部API:例如调用天气API获取天气信息。

执行特定操作:例如调用系统命令执行操作。

  • 自定义链允许开发者根据需求实现自己的链,例如将多个任务串联起来。

串联多个任务:例如先进行文本生成,再进行情感分析。

实现复杂逻辑:例如根据条件选择不同的任务。

3、调用示例

https://cloud.tencent.com/developer/article/2512470

相关推荐
xinyu_Jina2 小时前
人像精灵 AI 智能相馆:特征解耦与条件生成对抗网络(cGANs)在人像重构中的应用
人工智能·生成对抗网络·重构
木卫二号Coding2 小时前
第五十七篇-ComfyUI+V100-32G+安装SD1.5
人工智能
码农很忙2 小时前
从0到1搭建智能分析OBS埋点数据的AI Agent:实战指南
数据库·人工智能
JoannaJuanCV2 小时前
自动驾驶—CARLA仿真(5)Actors与Blueprints
人工智能·机器学习·自动驾驶
Saniffer_SH2 小时前
【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?
运维·服务器·网络·人工智能·驱动开发·fpga开发·硬件工程
V1ncent Chen2 小时前
机器是如何识别图片的?:卷积神经网络
人工智能·神经网络·cnn
背心2块钱包邮2 小时前
第9节——部分分式积分(Partial Fraction Decomposition)
人工智能·python·算法·机器学习·matplotlib
辛勤的程序猿2 小时前
改进的mamba核心块—Hybrid SS2D Block(适用于视觉)
人工智能·深度学习·yolo