SpringAI1.0.0最新版本快速入门

SpringAI简介

Spring AI 提供了抽象,作为开发 AI 应用程序的基础。 这些抽象具有多种实现,支持以最少的代码更改轻松交换组件。

Spring AI 提供以下功能:

  • 跨 AI 提供商的可移植 API 支持,用于聊天、文本到图像和嵌入模型。支持同步和流式处理 API 选项。此外,还可以访问特定于模型的特征。

  • 支持所有主要的 AI 模型提供商,例如 Anthropic、OpenAI、Microsoft、Amazon、Google 和 Ollama。支持的模型类型包括:

    • 聊天完成

    • 嵌入

    • 文本到图像

    • 音频转录

    • 文本到语音

    • 适度

  • 结构化输出 - AI 模型输出到 POJO 的映射。

  • 支持所有主要的矢量数据库提供商,例如 Apache Cassandra、Azure Cosmos DB、Azure Vector Search、Chroma、Elasticsearch、GemFire、MariaDB、Milvus、MongoDB Atlas、Neo4j、OpenSearch、Oracle、PostgreSQL/PGVector、PineCone、Qdrant、Redis、SAP Hana、Typesense 和 Weaviate。

  • 跨 Vector Store 提供商的可移植 API,包括新颖的类似 SQL 的元数据过滤器 API。

  • 工具/函数调用 - 允许模型请求执行客户端工具和函数,从而根据需要访问必要的实时信息并采取措施。

  • 可观察性 - 提供对 AI 相关作的见解。

  • 数据工程的文档摄取 ETL 框架。

  • AI 模型评估 - 帮助评估生成的内容并防止幻觉响应的实用程序。

  • AI 模型和向量存储的 Spring Boot 自动配置和启动器。

  • ChatClient API - 用于与 AI 聊天模型通信的 Fluent API,惯用性类似于 WebClient 和 RestClient API。

  • Advisors API - 封装重复的生成式 AI 模式,转换发送到和传出语言模型 (LLM) 的数据,并提供跨各种模型和用例的可移植性。

  • 支持 Chat Conversation Memory and Retrieval Augmented Generation (RAG)。

此功能集允许您实施常见使用案例,例如“就您的文档进行问答”或“与您的文档聊天”。

概念部分提供了 AI 概念及其在 Spring AI 中的表示的高级概述。

  1. pom.xml

 我这里使用的是通义千问的聊天模型 因为通义千问兼容OpenAI所以可以直接通过SpringAI调用

            
            
                org.springframework.ai
                spring-ai-bom
                1.0.0
                pom
                import
            

            
                org.springframework.ai
                spring-ai-starter-model-openai
            

     2.配置文件

spring:
  ai:
    openai:
      base-url: https://dashscope.aliyuncs.com/compatible-mode
       #阿里云开发者平台申请
      api-key: sk-**********
      chat:
        options:
          model: qwen-max-latest

    3.代码编写

文字模型的配置主要有三个功能块  提示词,会话记忆,工具调用(工具调用当扩展)

1.先写一个AI模型的总配置类 在类中定义一个最简单的文字模型

@Configuration
public class CommonConfiguration {
    //如上面的依赖一样 如果你引入的是OpenAI 那么定义的bean中形参要填写的OpenAiChatModel以此类推
    //如果是deepseek 就是 DeepSeekChatModel 
    @Bean
    public ChatClient pmortCharclinet(OpenAiChatModel model){
        return ChatClient
                .builder(model)
                .defaultSystem("你就是一个人工智能")
                .build();
    }
}

2.AI调用

根据官方文档调用有两种方式 第一种是 阻塞响应 , 第二种流式响应 

代码示例


@PostMapping(value = "/service", produces = "text/html;charset=utf-8")
    public String service(@RequestBody @Validated PromptDTO prompt) {
    
        return pmortCharclinet.prompt()
                //用户对话的内容
                .user(prompt.getPrompt())
                //阻塞式响应
                .call()
                .content();
    }


    @PostMapping(value = "/pmort", produces = "text/html;charset=utf-8")
    public Flux pmort(@RequestBody @Validated PromptDTO prompt){
        return  pmortCharclinet.prompt()
                //用户对话的内容
                .user(prompt.getPrompt())
                //流式响应
                .stream()
                .content();
    }

调用结果

SpringAI1.0.0最新版本快速入门_第1张图片

总结 

这是最简单的调用AI文字模型,后续我还会将文字模型的其他配置发布

你可能感兴趣的:(SpringAI,java,spring)