Spring AI,Java工程师也能玩转大模型

开发 前端
Spring AI是一个人工智能工程应用框架。它的目标是将Spring生态系统的设计原则,如可移植性和模块化设计,应用到AI领域,并推广使用POJO作为AI应用程序的构建模块。

在这个人工智能的春天,我们迎来了Spring AI。在这篇文章中,将介绍Spring AI以及如何将其与Ollama本地模型集成。

一、Spring AI简介

图片图片

官方正式宣布,Spring AI已经列入Spring Initializr。它提供了一种更简洁的方式来与AI交互,降低了将LLM模型集成到Java操作中的学习曲线。它现在可以在start.spring.io上使用和构建。

Spring AI是一个人工智能工程应用框架。它的目标是将Spring生态系统的设计原则,如可移植性和模块化设计,应用到AI领域,并推广使用POJO作为AI应用程序的构建模块。

二、特性

可移植的API支持跨AI提供商的交互,包括聊天、文本到图像和嵌入模型。它支持同步和流API选项。它还支持配置参数以访问特定模型。

支持的聊天模型:

  • OpenAI。
  • Azure Open AI。
  • Amazon Bedrock。
  • Anthropic的Claude。
  • Cohere的Command。
  • AI21 Labs的Jurassic-2。
  • Meta的LLama 2。
  • Amazon的Titan。
  • Google Vertex AI。
  • HuggingFace——HuggingFace上的众多模型,如Llama2。
  • Ollama——支持在没有GPU的情况下在本地运行AI模型。

支持的文本到图像模型:

  • OpenAI与DALL-E。
  • StabilityAI。

支持的向量模型:

  • OpenAI。
  • Azure OpenAI。
  • Ollama。
  • ONNX。
  • PostgresML。
  • Bedrock Cohere。
  • Bedrock Titan。
  • Google VertexAI。

官方文档:spring.io/projects/spring-ai

三、快速入门

使用IDEA快速启动一个新项目,选择需要的AI模型依赖项。

在这里,以Ollama模型为例:

图片图片

3.1 Ollama

Ollama使我们能够在不需要GPU资源的情况下在本地计算机上轻松构建大型模型,并提供控制台和RestfulAPI,以便在Ollama上快速测试和集成大型模型。

Ollama支持哪些模型?

图片图片

Ollama网站:ollama.com/library

提示:

  • Gemma是Google Meta最近发布的一个模型。
  • llama2模型对中文支持不太友好,而gemma模型对中文更加友好。

3.2 引入依赖项

提示:Spring AI相关的依赖项不在Maven中央资源库中,因此需要配置Spring的资源库。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3.3 启动Ollama模型

在本地计算机控制台中运行ollama run gemma:2b(这里使用gemma模型)。

图片图片

第一次运行会下载模型文件(约3GB,可能需要一些时间)。

下载模型资源后,模型将自动启动,如上所示,你可以在控制台中测试和与模型交互。

3.4 配置Ollama模型

修改该项目的application.yml配置文件,添加以下内容:

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: gemma:2b

3.5 测试

@Test
void contextLoads() {
    String message = """
                Who is Donald Trump?                               
            """;
    System.out.println(chatClient.call(message));
}

图片图片

3.6 流式访问

@Test
  void streamChat() throws ExecutionException, InterruptedException {
      // 构建一个异步函数来手动关闭测试函数
      CompletableFuture<Void> future = new CompletableFuture<>();

      String message = """
              year-end work summary report
              """;
      PromptTemplate promptTemplate = new PromptTemplate("""
              You are a Java development engineer, and you are good at writing the company’s year-end work summary report.
              Write a 100-word summary report based on: {message} scenario
              """);
      Prompt prompt = promptTemplate.create(Map.of("message", message));
      chatClient.stream(prompt).subscribe(
              chatResponse -> {
                  System.out.println("response: " + chatResponse.getResult().getOutput().getContent());
              },
              throwable -> {
                  System.err.println("err: " + throwable.getMessage());
              },
              () -> {
                  System.out.println("complete~!");
                  // 关闭函数
                  future.complete(null);
              }
      );
      future.get();
  }

责任编辑:武晓燕 来源: Java学研大本营
相关推荐

2024-11-12 13:41:49

2012-07-19 14:42:58

Windows 8微软

2023-07-27 07:37:48

2023-04-25 10:05:56

Windows 98ChatGPT聊天机器人

2009-02-20 10:14:00

路由器路由应用ADSL

2023-04-07 11:33:24

AIAI大模型

2018-08-16 09:41:46

开源项目资源

2018-10-16 17:57:57

开源架构

2020-03-06 15:38:10

编程语言PythonJava

2023-03-28 16:25:23

ChatGPT

2021-07-05 10:29:59

AI 工程师人工智能

2024-04-10 10:28:47

2024-09-24 07:31:52

2024-07-02 10:24:35

2024-08-07 09:30:00

2019-11-08 11:08:29

测试工程师AI人工智能

2024-09-20 11:30:14

2017-06-11 21:55:47

深度学习神经网络模型

2021-08-14 06:46:45

Windows 11操作系统微软

2020-05-27 09:30:52

算法工程师程序员
点赞
收藏

51CTO技术栈公众号