当前位置:   article > 正文

Spring AI 教程(一)概述_springai 如何操作moondream

springai 如何操作moondream

前言

 我在23年11月那会儿关注了Spring AI项目,当时我恰好正热衷于大语言模型的开发,然而当时主流的开发语言只有Python,Java生态中并没有强大的框架供我们使用。

 我当时也是靠一些封装OpenAI接口的SDK包来玩ChatGPT的,但是整体的体验较差。好在我通过一些技术交流群了解了一个正在处于实验阶段的项目:Spring AI。于是果断前往它的Github仓库进行学习,而我也恰好见证了Spring AI从实验项目到正式项目的转变,从最开始的200 Star到如今的近2k Star。

 23年11月,我在CSDN上发表了一篇关于Spring AI的入门教程:Spring AI -使用Spring快速开发ChatGPT应用,如今这篇文章的阅读量也即将破万了;但是对于快速发展的Spring AI来说,我的那篇博客文章已经有点过时了,再加上前天突然刷到尚硅谷的直播,并且直播标题以“Spring AI”开头,我觉得我也应该蹭蹭大语言模型的热度,借此机会,特地整理了一个系列专门讲解Spring AI。

 本系列将讲述以下内容及实现方式:

  • 基于OpenAI接口实现的对话调用,包括:阻塞式对话和流式对话
  • 实现上下文检索,让AI赋予记忆力
  • 基于提示词工程,让AI赋予专业能力
  • 基于OpenAI接口实现的绘图调用
  • 基于AI自查功能,通过文本对话让AI自行判断是对话还是绘图
  • 基于OpenAI接口实现文本向量化处理
  • 基于文本向量化处理和向量数据库实现RAG(增强式检索)技术
  • 基于OpenAI接口实现音频转录功能,赋予AI语音对话能力
  • 基于数据库存储实现多Key轮询,突破API请求限制
  • 使用OneAPI项目,统一世界主流大语言模型的接口

 项目中涉及的所有代码可前往Github查看:https://github.com/NingNing0111/spring-ai-zh-tutorial

 语雀在线文档:https://www.yuque.com/pgthinker/spring-ai

概述

 Spring AI是Spring生态中应用于人工智能领域的应用框架,它的目标是将Spring 生态系统的设计原则(如可移植性、模块化设计)应用于AI领域,并在AI领域中推广使用POJO(Plain Old Java Objects)作为应用的构建模块。

Spring AI能做什么?

  • 支持目前主流大语言模型平台,例如 OpenAI、Microsoft、Amazon、Google 和 Huggingface;
  • 支持阻塞与流式的文本对话;
  • 支持图像生成(当前仅限OpenAI的dall-e-*模型和SD);
  • 支持嵌入模型;
  • 支持LLM生成的内容转为POJO;
  • 支持主流的向量数据库或平台:Azure Vector Search, Chroma, Milvus, Neo4j, PostgreSQL/PGVector, PineCone, Qdrant, Redis 和 Weaviate
  • 支持函数调用
  • 支持自动装配和启动器(与Spring Boot完美集成);
  • 提供用于数据处理工程的ETL框架;

相关资料

本教程使用的大语言模型接口均以OpenAI为例

版本说明:

  • JDK >= 17
  • Spring 6.x;Spring Boot 3.x
  • Spring AI 0.8.1-SNAPSHOT

准备工作

依赖配置:
父级pom.xml中加入:

<!-- 仓库定义 -->
<repositories>
    <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>
<!-- 依赖管理配置 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>0.8.1-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

完整信息:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.ningning0111</groupId>
    <artifactId>spring-ai-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
  
    <modules>
        <module>spring-ai-chat-demo</module>
    </modules>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-ai.version>0.8.1-SNAPSHOT</spring-ai.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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>

    <repositories>
        <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>

</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/684264
推荐阅读
相关标签
  

闽ICP备14008679号