《史上最简单的SpringAI+Llama3.x教程》-00-Spring AI概述,快速入门

人工智能(AI)已经成为众多应用不可或缺的一部分。

尽管如此,许多开发者在尝试将AI技术融入其应用时,仍面临着效率低下和耗时的挑战。

正是为了应对这一挑战,Spring AI应运而生,旨在简化AI功能的整合流程,让开发者能够更加便捷地为其应用增添智能特性,同时避免陷入不必要的复杂细节之中。

什么是Spring AI

Spring AI是一个面向AI工程的应用框架,它的目标是将Spring生态系统设计原则(如可移植性和模块化设计)应用于AI领域,并推广使用POJO(Plain Old Java Object)作为AI领域应用程序的构建块。

Spring AI的推出是为了简化包含人工智能功能的应用程序的开发,同时避免不必要的复杂性。

该项目的设计理念借鉴了LangChain和LlamaIndex等著名Python项目,但在实现上针对Java环境进行了优化。

官网:Spring AI

Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design and promote using POJOs as the building blocks of an application to the AI domain.

SpringAI 的 9 大特征

Spring AI的核心是提供抽象,作为开发AI应用程序的基础。这些抽象有多种实现方式,只需极少的代码改动即可轻松实现各个大模型之间的切换。

Spring AI支持所有主要模型提供商,例如OpenAI、Microsoft、Amazon、Google和Huggingface,支持的模型类型包括“聊天”和“文本到图像”,还有更多模型类型正在开发中。

此外,Spring AI还提供跨AI提供商的可移植API,用于聊天和嵌入模型,支持同步和流API选项,还支持下拉访问模型特定功能。如下9大特征:

  1. 支持Chat Models 聊天模型
  2. 支持Text-to-image Models 文本到图像模型
  3. 支持Transcription (audio to text) Models 转录(音频到文本)模型
  4. 支持Embedding Models 嵌入模型
  5. 支持 Vector Store API,提供了跨不同提供商的 可移植性 ,其特点是提供了一种新颖的类似 SQL 的元数据过滤API,以保持可移植性。
  6. 提供丰富的Starter:用于AI模型和矢量存储的Spring Boot自动配置和启动器;(xxxx-spring-ai-starter)
  7. 函数调用,您可以声明java.util.Function的OpenAI模型的函数实现,用于其提示响应。如果在应用程序上下文中注册为@Bean,则可以直接将这些函数作为对象提供,或者引用它们的名称。这一功能最大限度地减少了不必要的代码,并使人工智能模型能够要求更多信息来完成其响应;
  8. 用于数据工程的ETL框架
    1. ETL框架的核心功能是使用Vector Store促进文档向模型提供者的传输。ETL框架基于Java函数式编程概念,可帮助您将多个步骤链接在一起;
    2. 支持阅读各种格式的文档,包括PDF、JSON等;
    3. 该框架允许数据操作以满足您的需求。这通常包括拆分文档以遵守上下文窗口限制,并使用关键字增强它们以提高文档检索效率;
    4. 最后,处理后的文档存储在矢量数据库中,以便将来检索;
  9. 广泛的参考文档、示例应用程序和研讨会/课程材料;
    1. 未来的版本将在此基础上提供对其他人工智能模型的访问,例如,谷歌刚刚发布的Gemini多模式模态,一个评估人工智能应用程序有效性的框架,更方便的API,以及帮助解决“查询/汇总我的文档”用例的功能。

应用场景

Spring AI可以在多个领域和场景中落地,以下是一些具体的例子:

  1. 智能客服和聊天机器人:Spring AI可以用于开发智能客服系统,通过自然语言处理和机器学习技术,理解和回应用户的问题和请求。
  2. 推荐系统:在电子商务、内容平台等领域,Spring AI可以帮助构建个性化的推荐系统,根据用户的历史行为和偏好提供定制化的推荐。
  3. 图像识别应用:Spring AI的图像识别功能可以应用于医疗图像分析、安全监控、质量检测等多个领域,提高效率和准确性。
  4. 语言翻译和本地化:Spring AI的自然语言处理能力可以应用于多语言支持和内容本地化,帮助企业拓展国际市场。
  5. 情感分析和品牌监测:通过分析社交媒体和用户评论,Spring AI可以帮助企业了解公众对品牌的看法,及时调整市场策略。
  6. 知识管理和信息检索:可以用于组织和管理大量文本信息,提供高效的信息检索和问答服务。
  7. 对话系统和虚拟助手:可以用于开发智能对话系统,如虚拟客服、智能家居助手等。
  8. 法律和合规性分析:在法律领域,可以帮助分析法律文档,提供合规性建议和风险评估。
  9. 医疗和健康咨询:可以用于医疗文献分析和患者咨询,提供医疗建议和健康信息。
  10. 等等。

Spring AI 开发准备

从 HelloWorld 开始

Spring AI应用程序也是基于Spring Boot进行开发;

1、建项目:创建一个Spring Boot项目;

2、加依赖:加入spring-ai-ollama-spring-boot-starter依赖;

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

因为maven暂时下载不了SpringAIOllama依赖,引用Spring快照依赖包

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
</repositories>

首先,我们需要配置Spring AI,以便连接到我们选择的AI模型提供商和向量数据库。在application.yml文件中添加以下配置:

spring:
  ai:
    ollama:
      chat:
        options:
          model: llama3.1
          temperature: 0.5
      base-url: http://localhost:11434

接下来需要传创建一个Controller 类

/**
 * ollama hello world
 *
 * @author JingYu
 * @date 2024/06/29
 */
@AllArgsConstructor
@RequestMapping("/cases")
@RestController
public class HelloWorldController {

    private final OllamaChatModel ollamaChatModel;


    @GetMapping("/hello")
    String chat(@RequestParam String message) {
        return ollamaChatModel.call(message);
    }

    @GetMapping("/stream/hello")
    Flux<String> chatStream(@RequestParam String message) {
        return ollamaChatModel.stream(message);
    }
}

找到项目启动类进行启动,然后调用服务接口即可完成体验。

@SpringBootApplication
public class ChatModelsSimpleCasesApplication {
    public static void main(String[] args) {
        SpringApplication.run(ChatModelsSimpleCasesApplication.class, args);
    }
}

源代码:jingyu-spring-ai-llm-apps/jingyu-00-simple-cases at main · JingYu-365/jingyu-spring-ai-llm-apps

写在最后

经由上述实例,呈现出了 Spring AI 使用方式,在下一篇文章当中,我们会探究更多的高级功能和使用窍门,协助您更进一步地优化和拓展您的 AI 应用。

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静愚 AGI

你的善意终将流回自己,加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值