spring-ai

spring-ai

Spring应用智能化开发框架

Spring AI是一个面向Spring开发者的AI开发框架,提供友好API和抽象层,简化AI应用开发流程。该项目集成了OpenAI、Azure OpenAI等多种主流AI模型,支持向量数据库、提示工程和文档处理等功能。开发者可借助Spring AI为应用添加聊天机器人、文本生成、知识问答等智能化特性。

Spring AIAI应用开发API抽象模型交互RAGGithub开源项目

Spring AI 构建状态

欢迎来到Spring AI项目!

Spring AI项目为开发AI应用程序提供了一个Spring友好的API和抽象。

让我们让你的@Beans变得智能吧!

更多信息请参阅我们的Spring AI参考文档

重大变更

  • 请参阅升级说明了解如何升级到1.0.0.M1或更高版本。

项目链接

教育资源

一些精选视频。在YouTube上搜索更多!

  • Spring小贴士:Spring AI <br>观看Spring小贴士视频
  • Devoxx 2023上的Spring AI概述 <br>观看Devoxx 2023视频
  • 介绍Spring AI - 为你的Spring应用添加生成式AI <br>观看视频

入门

请参阅入门指南了解如何添加依赖项的说明。

注意,新的Spring CLI项目让你可以通过两个简单的步骤开始,这里有详细描述

  1. 安装Spring CLI
  2. 在终端中输入spring boot new --from ai --name myai

手动添加依赖项

请注意,主要有两个步骤。

  1. 将Spring Milestone和Snapshot仓库添加到你的构建系统中
  2. 添加Spring AI BOM
  3. 添加依赖项,包括你需要的特定AI模型、向量数据库或其他组件依赖。

概述

尽管AI有着悠久的历史,但Java在这个领域的作用相对较小。 这主要是因为历史上依赖于C/C++等语言开发的高效算法,而Python则充当了访问这些库的桥梁。 大多数ML/AI工具都是围绕Python生态系统构建的。 然而,最近生成式AI的进展,尤其是OpenAI的ChatGPT等创新,使得通过HTTP与预训练模型交互变得流行。 这消除了对C/C++/Python库的大部分依赖,为使用Java等编程语言打开了大门。

Python库LangChainLlamaIndex已成为实现生成式AI解决方案的流行选择,并可以在其他编程语言中实现。 这些Python库与Spring项目有一些共同的主题,例如:

  • 可移植的服务抽象
  • 模块化
  • 可扩展性
  • 减少样板代码
  • 与各种数据源集成
  • 常见用例的预构建解决方案

受这些库的启发,Spring AI项目旨在为Spring开发者在AI领域提供类似的体验。

请注意,Spring AI API并不是LangChain或LlamaIndex的直接移植。如果你熟悉这两个项目,你会发现API有显著的不同,尽管概念和想法相当可移植。

功能概述

这是一个高层次的功能概述。 已实现的功能奠定了基础,后续更复杂的功能将建立在这些基础之上。

你可以在参考文档中找到更多详细信息。

与AI模型交互

ChatClient: Spring AI的一个基础功能是用于与生成式AI模型交互的可移植客户端API。使用这个可移植API,你可以最初针对一个AI聊天模型,例如OpenAI,然后轻松地将实现切换到另一个AI聊天模型,例如Amazon Bedrock的Anthropic模型。必要时,你还可以使用非可移植的模型选项。

Spring AI支持许多AI模型。概述请参见此处。目前支持的具体模型包括:

  • OpenAI
  • Azure OpenAI
  • Amazon Bedrock (Anthropic, Llama, Cohere, Titan, Jurassic2)
  • Hugging Face
  • Google VertexAI (PaLM2, Gemini)
  • Mistral AI
  • Stability AI
  • Ollama
  • PostgresML
  • Transformers (ONNX)
  • Anthropic Claude3
  • MiniMax
  • Moonshot

提示: 与AI模型交互的核心是提示,它为AI提供了具体的指令。 制作有效的提示既是一门艺术也是一门科学,由此产生了"提示工程"这门学科。 这些提示通常利用模板引擎,在预定义的文本中使用占位符轻松替换数据。

在我们的概念指南中了解更多关于提示的信息。 要了解Prompt类,请参阅Prompt API指南

提示模板: 提示模板支持创建提示,特别是在使用模板引擎时。

在我们的概念指南中深入了解PromptTemplates。 有关PromptTemplate的实践指南,请参阅PromptTemplate API指南

输出解析器: AI模型的输出通常是原始的java.lang.String值。输出解析器将这些原始字符串重构为更适合程序员使用的格式,如CSV或JSON。

在我们的概念指南中获取关于输出解析器的见解。 有关实现细节,请访问StructuredOutputConverter API指南

整合你的数据

将专有数据整合到生成式AI中而无需重新训练模型是一个突破。 重新训练模型,尤其是那些有数十亿参数的模型,由于需要专门的硬件而具有挑战性。 "上下文内"学习技术提供了一种更简单的方法来将你的数据注入预训练模型中,无论是来自文本文件、HTML还是数据库结果。 正确的技术对于开发成功的解决方案至关重要。

检索增强生成

检索增强生成(简称RAG)是一种能让你将数据带入预训练模型的模式。 RAG在"查询你的文档"用例中表现出色。

了解更多关于检索增强生成的信息。

将你的数据带入模型遵循提取、转换和加载(ETL)模式。 以下类和接口支持RAG的数据准备。

文档:

Document类封装了你的数据,包括文本和元数据,供AI模型使用。 虽然一个Document可以代表大量内容,如整个文件,但RAG方法 将内容分割成更小的片段以包含在提示中。 ETL过程使用DocumentReaderDocumentTransformerDocumentWriter接口,最终将数据存储在向量数据库中。 该数据库后续会识别与用户查询相关的数据片段。

文档读取器:

文档读取器从各种来源(如PDF、Markdown文件和Word文档)生成List<Document>。 鉴于许多来源是非结构化的,文档读取器通常基于内容语义进行分段,避免在表格或代码段内分割。 在初始创建List<Document>之后,数据流经转换器进行进一步细化。

文档转换器:

转换器进一步修改List<Document>,删除多余的数据(如PDF边距),或添加元数据(例如,主要关键词或摘要)。 另一个关键的转换是将文档细分以适应AI模型的令牌限制。 每个模型都有一个上下文窗口,指示其输入和输出数据限制。通常,一个令牌相当于约0.75个词。例如,在gpt-4-32k这样的模型名称中,"32K"表示令牌数。

文档写入器:

RAG中的最后一个ETL步骤涉及将数据段提交到向量数据库。 虽然DocumentWriter接口不专门用于向量数据库写入,但它是主要的实现类型。

向量存储: 向量数据库在将你的数据与AI模型结合使用时起着重要作用。 它们确定AI应该使用哪些文档部分来生成响应。 向量数据库的例子包括Chroma、Oracle、Postgres、Pinecone、Qdrant、Weaviate、Mongo Atlas和Redis。Spring AI的VectorStore抽象允许在数据库实现之间轻松切换。

克隆仓库

这个仓库包含大型模型文件。 要克隆它,你必须:

  • 忽略大文件(不会影响spring-ai的行为):GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:spring-projects/spring-ai.git
  • 或在克隆仓库之前安装Git Large File Storage

构建

要运行单元测试并构建:

./mvnw clean package

要包括集成测试进行构建。 在运行之前设置OpenAI和Azure OpenAI的API密钥环境变量。

./mvnw clean verify -Pintegration-tests

运行特定的集成测试,最多允许两次尝试成功。当托管服务不可靠或超时时,这很有用。

./mvnw -pl vector-stores/spring-ai-pgvector-store -Pintegration-tests -Dfailsafe.rerunFailingTestsCount=2 -Dit.test=PgVectorStoreIT verify

构建文档

./mvnw -pl spring-ai-docs antora

然后文档位于spring-ai-docs/target/antora/site/index.html目录中

使用java-format插件重新格式化

./mvnw spring-javaformat:apply

使用license-maven-plugin更新许可证头中的年份

./mvnw license:update-file-header -Plicense

使用javadoc:javadoc检查javadocs

./mvnw javadoc:javadoc -Pjavadoc

编辑推荐精选

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
��码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

下拉加载更多