0
点赞
收藏
分享

微信扫一扫

【动植物毒性数据集】毒蛇识别 蘑菇毒性分类 人工智能 深度学习 目标检测 Python(含数据集)

暮晨夜雪 2024-11-06 阅读 5

总计30万奖金,Spring AI Alibaba 应用框架挑战赛开赛

点此了解

背景说明

在Java场景中,我们经常需要利用图像识别的能力来处理多种业务需求,比如自动分类商品图片、辅助医疗影像分析、提升安防监控效率等。过去,这类需求主要依赖于OCR(光学字符识别)技术或其他传统的图像处理方法,但这些方式的效果往往不尽如人意,尤其是在面对复杂多变的图像内容时。随着大模型技术的发展,如今我们可以借助更加先进的AI模型来进行图像识别任务,不仅提高了准确率和灵活性,而且能够更好地适应不同场景下的具体要求,从而显著改善了应用效果和服务体验。

本次例子使用spring ai alibaba完成,切实可执行,请按步骤一步一步做即可。

Spring AI 介绍:简化Java中AI功能集成的高效框架

在过去,Java 缺乏一个高效且易于使用的 AI 应用框架,这使得开发者在集成AI功能时面临着较大的挑战。为解决这一问题,Spring团队推出了Spring AI,它是一个专为调用各种AI组件而设计的应用框架。Spring AI 的核心优势在于提供了一套统一的接口,允许开发人员只需编写一次代码,并通过简单的配置更改就能切换不同的AI服务提供商。此外,该框架与Spring生态系统无缝兼容,同时支持Java面向对象编程范式,这极大地简化了AI应用程序的开发流程。对于需要处理图像识别任务的项目而言,使用 Java Spring AI 可以轻松接入多种图像识别模型,并将这些复杂的操作封装成简单的API调用来供业务逻辑层调用,从而加速开发进程并降低维护成本。

Spring AI的核心功能介绍

能力名字:模型 Model

一句话说明
Spring AI支持多模态的模型接入,包括但不限于文本、图像等,能够与大模型进行交互,实现对话、文生图、文生语音等多种AI能力。
输入输出举例

  • 输入:用户提供的文本或图片
  • 输出:根据请求内容生成的响应文字或者合成的语音文件

能力名字:提示 Prompt

一句话说明
允许开发者指定特定的输入格式给到AI模型,以指导其生成符合预期的结果。
输入输出举例

  • 输入:一段带有具体问题或指令的文字
  • 输出:基于输入的prompt生成的相关回答或执行结果

能力名字:提示词模板 Prompt Template

一句话说明
提供了一种方式来动态地构建Prompt,使得在不改变代码逻辑的情况下可以轻松调整提问的方式。
输入输出举例

  • 输入:模板中定义好的变量值(如用户ID)
  • 输出:根据变量填充后的完整Prompt字符串

能力名字:嵌入 Embedding

一句话说明
将非结构化数据转换为数值向量表示,便于进一步处理和分析。
输入输出举例

  • 输入:原始文本、图片等信息
  • 输出:对应的数据向量表示

能力名字:结构化输出 Structured Output

一句话说明
使AI生成的内容能够直接映射到预定义的Java对象上,简化了数据处理流程。
输入输出举例

  • 输入:需要被解析成结构化数据的自然语言描述
  • 输出:按照指定POJO格式组织的数据

能力名字:检索增强生成 RAG

一句话说明
结合私有知识库与大型语言模型,通过从知识库中检索相关信息来增强模型的回答质量。
输入输出举例

  • 输入:查询请求及相关的上下文信息
  • 输出:结合了外部知识库资料的答案

能力名字:函数调用 Function Calling

一句话说明
让AI能够在需要时调用预先定义的功能或工具,扩展了AI应用的可能性。
输入输出举例

  • 输入:包含对特定功能调用需求的对话消息
  • 输出:由该功能执行后返回的结果

能力名字:向量存储 Vector Store

一句话说明
提供了管理和操作向量数据的能力,支持高效地存储、查询大规模向量数据。
输入输出举例

  • 输入:待存储或查询的向量数据
  • 输出:匹配度最高的向量集合或成功添加/删除状态

以上是Spring AI所拥有的主要能力概述,它极大地简化了开发人员利用AI技术的过程,并提供了灵活且强大的功能支持。

Spring AI Alibaba介绍 :集成阿里云大模型的Spring AI框架

Spring AI Alibaba 是一个专为 Spring 生态系统设计的AI应用框架,专注于集成阿里云的国产大模型服务。它基于Spring AI API实现了对通义系列(如通义千问、通义万象)等国产大模型的支持,使得开发者能够便捷地开发出具备聊天、图像生成等功能的应用。

其核心优势在于提供了统一且标准的接口来访问多种AI能力,支持通过简单的配置变更来切换不同的AI服务提供者,从而极大简化了跨平台迁移和多AI提供商接入的工作。此外,Spring AI Alibaba 还支持包括流式处理在内的高级特性,进一步提升了应用开发效率和灵活性。

使用Spring AI Alibaba进行图像识别的详细示例

1. 前置准备

首先,确保你的开发环境满足以下要求:

  • JDK版本需在JDK 17及以上。
  • Spring Boot版本需在3.3.x及以上。

2. 申请并配置通义千问的API Key

  1. 访问阿里云百炼页面,登录您的阿里云账号。
  1. 开通“百炼大模型推理”服务,并等待开通成功的短信通知。
  1. 开通成功后,再次访问阿里云百炼页面,点击右上角的小人图标,选择API-KEY,然后点击【创建新的API-KEY】生成一个新的API-KEY。请记录下这个key,后续步骤需要用到。
  1. 在终端中执行如下命令来配置API Key(将${REPLACE-WITH-VALID-API-KEY}替换为你实际获取到的API Key):
export AI_DASHSCOPE_API_KEY=${REPLACE-WITH-VALID-API-KEY}

3. 开通通义万象图像生成模型

  1. 打开百炼控制台 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台。
  1. 在左侧列表栏选择模型广场,找到图像生成部分中的通义万象模型,并点击其对应的“API调用”按钮。
  1. 在打开的新页面左上角,复制模型的英文名称,本次使用的模型为qwen-vl-max-latest,这是一个专用于图片识别的特化模型。

4. 添加Spring仓库及依赖

由于spring-ai-alibaba-starter尚未提交至Maven官方仓库,请先在pom.xml文件中添加如下仓库信息以便下载相关库文件:

<repositories>
    <repository>
        <id>sonatype-snapshots</id>

        <url>https://oss.sonatype.org/content/repositories/snapshots</url>

        <snapshots>
            <enabled>true</enabled>

        </snapshots>

    </repository>

    <repository>
        <id>spring-milestones</id>

        <name>Spring Milestones</name>

        <url>https://repo.spring.io/milestone</url>

        <snapshots>
            <enabled>false</enabled>

        </snapshots>

    </repository>

    <repository>
        <id>spring-snapshots</id>

        <name>Spring Snapshots</name>

        <url>https://repo.spring.io/snapshot</url>

        <releases>
            <enabled>false</enabled>

        </releases>

    </repository>

</repositories>

接着,在pom.xml中加入对spring-ai-alibaba-starter的依赖:

<dependencies>
    <!-- Spring Boot Parent -->
    <parent>
        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>3.3.4</version>

        <relativePath/>
    </parent>

    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>

        <artifactId>spring-ai-alibaba-starter</artifactId>

        <version>1.0.0-M3.1</version>

    </dependency>

    <!-- 其他所需依赖... -->
</dependencies>

5. 构建读图代码

在你的项目中创建一个新的Controller类ChatModelController.java,内容如下所示:

@RestController
@RequestMapping("/ai")
public class ChatModelController {

    private static final Logger logger = LoggerFactory.getLogger(ChatModelController.class);

    @Value("classpath:catexample.png")
    private Resource imageResource;

    private final ChatModel chatModel;

    public ChatModelController(ChatModel chatModel) {
        this.chatModel = chatModel;
    }

    private static final String DEFAULT_PROMPT = "这些是什么?";
    private static final String DEFAULT_MODEL = "qwen-vl-max-latest";

    @GetMapping("/imageRecognition")
    public Flux<String> imageRecognition(
            @RequestParam(value = "prompt", required = false, defaultValue = DEFAULT_PROMPT) String prompt,
            HttpServletResponse response) throws Exception {
        response.setCharacterEncoding("UTF-8");

        List<Media> mediaList = List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageResource));
        UserMessage message = new UserMessage(prompt, mediaList);
        message.getMetadata().put(DashScopeChatModel.MESSAGE_FORMAT, MessageFormat.IMAGE);

        Flux<ChatResponse> fluxResponse = chatModel.stream(
                new Prompt(message, DashScopeChatOptions.builder()
                        .withModel(DEFAULT_MODEL)
                        .withMultiModel(true)
                        .build()));
        return fluxResponse.map(resp -> resp.getResult().getOutput().getContent());
    }
}

确保你已经在项目的src/main/resources目录下放置了一张名为catexample.png的测试图片。

6. 配置应用程序属性

application.propertiesapplication.yml文件中设置之前获取的API Key:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}

至此,您已完成了基于Spring AI Alibaba实现图像识别功能的所有准备工作。现在可以通过访问http://localhost:8080/ai/imageRecognition端点来测试您的应用,它会根据提供的Prompt返回流式处理的结果。

请注意,以上步骤提供了从零开始搭建此功能所需的全部指导;如果有任何未提及但同样重要的细节,请参考相关文档或社区支持以获得进一步帮助。

举报

相关推荐

0 条评论