Spring AI

Spring AI

文章目录

  • Spring AI
    • 关于 Spring AI
    • 使用
      • Spring CLI
      • Spring Initializr
      • 添加 Milestone 和 Snapshot Repositories
      • 依赖管理
      • 为特定组件添加依赖项
        • Embeddings Models
        • Chat Models
        • Image Generation Models
        • Vector Databases
    • 示例工程


关于 Spring AI

  • github : https://github.com/spring-projects/spring-ai
  • 官方文档:https://docs.spring.io/spring-ai/reference/

  • Spring 中文网 - Spring AI 简介
    https://springdoc.cn/spring-ai-intro/

Spring AI 项目旨在简化 包含AI 功能的 应用程序的开发,而不会带来 不必要的复杂性。
该项目的灵感来自著名的Python项目,如LangChain和LlamaIndex,但Spring AI并不是这些项目的直接端口。
Spring AI 相信,下一波Generative AI应用程序将不仅面向Python开发人员,而且将在许多编程语言中无处不在。

Spring AI的核心是 提供抽象,作为开发人工智能应用程序的基础。
这些抽象有多个实现,能够以最小的代码更改实现简单的组件交换。

Spring AI提供以下功能:

  • 支持所有主要的模型,如OpenAI、微软、亚马逊、谷歌和Huggingface。
  • 支持的模型类型有聊天和文本到图像,还有更多。
  • 跨AI 提供 的 可移植聊天API 和 嵌入模型。同时支持同步和流API选项。还支持下拉访问特定于型号的功能。
  • 人工智能模型输出到POJO的映射。
  • 支持所有主要的向量数据库提供商,如Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis和Weaviate
  • 跨矢量存储提供商的可移植API,包括一个新的 类似SQL 的元数据过滤器API,它也是可移植的。
  • 函数调用
  • 用于AI模型和矢量存储的Spring Boot自动配置和启动器。
  • 用于数据工程的ETL框架

此功能集允许您实现常见用例,如“文档问答”或“与文档聊天”


使用

本节提供了如何开始使用Spring AI的切入点。

您应该根据自己的需要,按照以下各节中的步骤进行操作。


Spring CLI

Spring CLI 详见:https://docs.spring.io/spring-cli/reference/index.html

Spring CLI 简化了直接从终端创建新应用程序的过程。

与熟悉JavaScript生态系统的用户使用的 create-react-app 命令一样,Spring CLI提供了一个 spring boot new 命令来创建基于Spring的项目。

Spring CLI还提供了将外部代码库集成到当前项目中的功能,以及许多其他功能。

重要的是要理解,“Spring CLI”是一个与“Spring Boot CLI”不同的项目,每个项目都有自己的一组功能。


要开始创建Spring AI应用程序,请执行以下步骤:

1、下载最新的Spring CLIRelease并遵循安装说明.
2、要创建一个简单的基于OpenAI的应用程序,请使用以下命令:

spring boot new --from ai --name myai
Copied!

3、要将相同的简单AI 应用程序添加到现有项目中,请执行:

spring boot add ai
Copied!

Spring CLI允许用户定义自己的项目目录,定义可以创建哪些项目或将其添加到现有代码库中。


Spring Initializr

前往start.spring.io并选择要在新应用程序中使用的AI模型和矢量存储。

添加 Milestone 和 Snapshot Repositories

如果您喜欢手动添加依赖项片段,请按照以下部分中的说明进行操作。

要使用Milestone 和 Snapshot版本,您需要在构建文件中添加对 Spring Milestone 和/或Snapshot 存储库的引用。

对于Maven,根据需要添加以下存储库定义:

  <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>
Copied!

对于 Gradle,添加如下:

repositories {mavenCentral()maven { url 'https://repo.spring.io/milestone' }maven { url 'https://repo.spring.io/snapshot' }
}
Copied!

依赖管理

Spring AI Bill of Materials (BOM) 声明了给定版本的Spring AI所使用的所有依赖项的推荐版本。

使用应用程序构建脚本中的BOM可以避免您自己指定和维护依赖项版本。

相反,您使用的BOM的版本决定了所使用的依赖关系版本。它还确保默认情况下使用受支持和测试的依赖关系版本,除非您选择覆盖它们。

如果您是Maven用户,您可以通过将以下内容添加到pom.xml文件中来使用BOM-

<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>
Copied!

Gradle用户还可以通过利用Gradle(5.0+)本机支持 使用Maven BOM声明依赖关系约束,来使用Spring AI BOM。

这是通过将“平台”依赖关系 处理程序方法,添加到Gradle构建脚本的依赖关系部分来实现的。

如下面的片段所示,然后可以为您希望使用的一个或多个spring-ai模块(例如 spring-ai-openai)声明Starter依赖项的无版本声明。

dependencies {implementation platform("org.springframework.ai:spring-ai-bom:0.8.1-SNAPSHOT")// Replace the following with the starter dependencies of specific modules you wish to useimplementation 'org.springframework.ai:spring-ai-openai'
}
Copied!

为特定组件添加依赖项

文档中的以下每个部分都显示了 需要添加到项目构建系统中的依赖项。

Embeddings Models
  • Embeddings API
    • Spring AI OpenAI Embeddings
    • Spring AI Azure OpenAI Embeddings
    • Spring AI Ollama Embeddings
    • Spring AI Transformers (ONNX) Embeddings
    • Spring AI PostgresML Embeddings
    • Spring AI Bedrock Cohere Embeddings
    • Spring AI Bedrock Titan Embeddings
    • Spring AI VertexAI Embeddings
    • Spring AI MistralAI Embeddings

Chat Models
  • Chat Completion API
    • OpenAI Chat Completion (streaming and function-calling support)
    • Microsoft Azure Open AI Chat Completion (streaming and function-calling support)
    • Ollama Chat Completion
    • HuggingFace Chat Completion (no streaming support)
    • Google Vertex AI PaLM2 Chat Completion (no streaming support)
    • Google Vertex AI Gemini Chat Completion (streaming, multi-modality & function-calling support)
    • Amazon Bedrock
      • Cohere Chat Completion
      • Llama2 Chat Completion
      • Titan Chat Completion
      • Anthropic Chat Completion
    • MistralAI Chat Completion (streaming and function-calling support)

Image Generation Models
  • Image Generation API
    • OpenAI Image Generation
    • StabilityAI Image Generation

Vector Databases
  • Vector Database API
    • Azure Vector Search - The Azure vector store.
    • ChromaVectorStore - The Chroma vector store.
    • MilvusVectorStore - The Milvus vector store.
    • Neo4jVectorStore - The Neo4j vector store.
    • PgVectorStore - The PostgreSQL/PGVector vector store.
    • PineconeVectorStore - PineCone vector store.
    • QdrantVectorStore - Qdrant vector store.
    • RedisVectorStore - The Redis vector store.
    • WeaviateVectorStore - The Weaviate vector store.
    • SimpleVectorStore - A simple (in-memory) implementation of persistent vector storage, good for educational purposes.

示例工程

You can clone these projects on GitHub to get started.

你可以在GitHub上克隆这些项目 来开始。

  • OpenAI
    github.com/rd-1-2022/ai-openai-helloworld
  • Azure OpenAI
    • github.com/rd-1-2022/ai-azure-openai-helloworld
    • github.com/Azure-Samples/spring-ai-azure-workshop

2024-04-23(二)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mapbox中filter表达式

起初让我研究的原因使一个报错&#xff1a; layers.TRSA.filter[2][1][2]: string, number, or boolean expected, array found 我很确定筛选条件没问题&#xff0c;那么为何报错呢&#xff1f;百度&#xff0c;找到原因&#xff1a; https://docs.mapbox.com/style-spec/refe…

【WSL报错】执行:wsl --list --online;错误:0x80072ee7

【WSL报错】执行:wsl --list --online&#xff1b;错误:0x80072ee7 问题情况解决方法详细过程 问题情况 C:\Users\17569>wsl --list --online 错误: 0x80072ee7 解决方法 开系统代理&#xff0c;到外网即可修复&#xff01;&#xff01;&#xff01;&#xff01;&#x…

电商市场已饱和,各大平台都在卷价格?那是你不了解视频号小店

大家好&#xff0c;我是电商笨笨熊 现在做电商除了疯狂内卷就是疯狂内卷&#xff1b; 各大平台都是内卷价格&#xff0c;嘴上说着不想成为拼多多一样的平台&#xff0c;实际做的却是低价再低价&#xff0c;都希望能通过低价吸引用户提高转化&#xff1b; 因此现在很多玩家对…

windows驱动系列-概述

之前一直长期做windows驱动开发&#xff0c;但是一直将这些技术知识点进行整理和总结&#xff0c;最近又开始做一套新的驱动&#xff0c;于是就打算趁这个机会&#xff0c;将一些windows驱动开发的技术知识系统性的整理出来。 目录如下: windows驱动开发知识-设计目标 windo…

第十四章大数据和数据科学4分

14.1 引言 14.1.3 科学理念 1.数据科学 数据科学将数据挖掘、统计分析和机器学习与数据集成整合&#xff0c;结合数据建模能力&#xff0c;去构建预测模型、探索数据内容模式。 数据科学依赖于&#xff1a; 1&#xff09;丰富的数据源。具有能够展示隐藏在组织或客户行为中不…

jpa分页插件对象Pageable出现了错误异常如何解决?

jpa分页插件对象Pageable出现了错误异常如何解决&#xff1f;&#xff01; 一般来说&#xff0c;遇到这种的错误异常情况&#xff0c;通常情况 下&#xff0c;都是因为程序员把传递的分页页码数字写错了。 正常情况下&#xff0c;分页页码起始数字应该是0&#xff1b;而不是1…

区块链钱包开发——专业区块链开发

随着区块链技术的发展&#xff0c;钱包开发成为了一项至关重要的任务。本文将探讨区块链钱包开发的重要性&#xff0c;分析当前面临的挑战&#xff0c;并展望未来的发展趋势。 一、区块链钱包概述 区块链钱包是一种用于存储和管理数字货币的软件工具。它为用户提供了一个安全的…

揭开ChatGPT面纱(2):OpenAI主类源码概览

文章目录 〇、使用OpenAI的两个步骤一、初始化方法__init__()1.源码2.参数解析 二、提供的接口1.源码2.接口说明主要接口说明 OpenAI版本1.6.1 〇、使用OpenAI的两个步骤 在上一篇博客中&#xff0c;我实现并运行了一个OpenAI的demo&#xff0c;我们可以发现&#xff0c;想要使…

Unity的旋转实现一些方法总结(案例:通过输入,玩家进行旋转移动)

目录 1. Transform.Rotate 方法 使用 2. Transform.rotation 或 Transform.localRotation 属性与四元数 使用方式&#xff1a; 小案例 &#xff1a;目标旋转角度计算&#xff1a;targetRotation&#xff08;Quaternion类型&#xff09; 玩家发现敌人位置&#xff0c;玩家…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息&#xff0c;例如你的阅读计划&#xff0c;可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器&#xff0c;能够在桌面上显示各种信息。以下是基本的设置步骤&#xff1a; 安装 Conky 首先&#xff0c;你需要在 Ubuntu…

js面试---闭包、作用域及作用域链、执行上下文

1、什么是闭包 闭包是指有权访问另一个函数作用域中变量的函数&#xff0c;创建闭包的最常见的方式就是在一个函数内创建另一个函数&#xff0c;创建的函数可以访问到当前函数的局部变量。 闭包的作用&#xff1a; a、使我们在函数外部能够访问到函数内部的变量。通过使用闭包…

道可云元宇宙每日资讯|济南起步区:加快建设元宇宙政务大厅

道可云元宇宙每日简报&#xff08;2024年4月23日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 济南起步区&#xff1a;加快建设元宇宙政务大厅 济南起步区以“元宇宙”赋能智慧政务&#xff0c;集成政务服务智能办理、数字人智能引导交互服务、沉浸式漫游体验、…

【学习记录】autoware标定相机与激光雷达外参

一、autoware选择 这里踩了好几个坑&#xff0c;首先autoware作为一个无人驾驶知名框架&#xff0c;其内部实际上是有两套标定的东西的&#xff0c;这一点绝大多数博客没有提到。其中最常用的是一个叫标定工具箱的东西&#xff0c;这个ros包已经在1.10往后的版本中被删掉了&am…

hive SQL谓词下推

Sql 优化&#xff1a;谓词下推&#xff08;PPD 定义 谓词下推的概念其实出现在sql中&#xff0c;在关联查询时(join&#xff0c;left join ,right join),因为涉及两个大表之间的关联(特别是在hive)造成资源消耗会比较大&#xff0c; 因为建议在join之前先将两个表进行过滤(hive…

Android 获取sha1的快速有效的简单方法

第一步 下载apk 点击下载&#xff08;https://download.csdn.net/download/xiaohui2015/9751428&#xff09; 第二步 试用Windows键R键打开命令行 输入 adb install把apk用鼠标左键拖动到命令行自动输入路径 回车安装 第三步 打开apk 选择你要查看的apk&#xff0c;一键…

Spring 1、初识Spring

初识Spring 了解Spring家族了解Spring发展史Spring Framework系统架构学习路线 了解Spring家族 官网spring.io Spring形成了一种开发的生态圈&#xff0c;Spring提供了若干个项目&#xff0c;每个项目用于完成特定的功能。 Spring Framework&#xff08;最基础的东西&#x…

qemu参考

手把手教你搭建ARM64 QEMU环境 - 知乎

SpringCloud Alibaba--nacos配置中心

目录 一.基础介绍 1.1概念 1.2 功能 二.实现 2.1 依赖 2.2 新建配置文件 2.3 克隆 2.4 配置bootstap.yml文件 三.测试 一.基础介绍 1.1概念 在微服务架构中&#xff0c;配置中心就是统一管理各个微服务配置文件的服务。把传统的单体jar包拆分成多个微服务后&#xf…

NameError: name ‘_mysql‘ is not defined 安装mysqlclient报错

安装mysqlclient报错 The error message you’re seeing indicates that the pkg-config utility is not installed on your system, or it is not able to find the necessary configuration for mysqlclient. pkg-config is used to determine the compilation options for …

跨越未知,拥抱挑战——新征程

在浩瀚的IT领域里&#xff0c;每一位开发工程师都如同一位探险家&#xff0c;不断地探索、挑战和成长。作为一名新入职的Java开发工程师&#xff0c;我面临着全新的技术栈和业务领域&#xff0c;这是一次跨越未知的征程&#xff0c;也是一次自我提升的机会。 新入职 初入公司…