Spingboot人工智能工程应用框架,你要干的活全部交给它

欢迎来到 Spring AI 项目!

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

让你变得@Beans聪明起来!

有关更多信息,请参阅我们的Spring AI 参考文档。

项目链接

  • 文档

  • 问题

  • 讨论- 如果您有问题、建议或反馈,请转到此处!

  • 从 0.7.1-SNAPSHOT 升级

教育资源

  • 关注Azure OpenAI 的研讨会材料

    • 该研讨会包含从“hello world”到“检索增强生成”的分步示例

一些精选的视频。搜索 YouTube!了解更多。

  • Spring 技巧:Spring AI

    图片

  • Spring AI 概述 @ Devoxx 2023

    图片

  • Spring AI 简介 - 将生成式 AI 添加到您的 Spring 应用程序中

    图片

入门

请参阅入门指南以获取有关添加依赖项的说明。

请注意,新的 Spring CLI 项目让您可以通过两个简单的步骤来启动和运行,详细描述请参见此处。

  1. 安装 Spring CLI

  2. 输入spring boot new --from ai --name myai你的终端

手动添加依赖项

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

  1. 将 Spring Milestone 和 Snapshot 存储库添加到您的构建系统中。

  2. 添加Spring AI BOM

  3. 添加特定 AI 模型、矢量数据库或您需要的其他组件依赖项的依赖项。

概述

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

Python 库LangChain和LlamaIndex已成为实现生成式 AI 解决方案的热门工具,并且可以用其他编程语言实现。这些 Python 库与 Spring 项目共享基础主题,例如:

  • 便携式服务抽象

  • 模块化

  • 可扩展性

  • 减少样板代码

  • 与多种数据源集成

  • 针对常见用例的预构建解决方案

Spring AI 项目从这些库中汲取灵感,旨在为 AI 领域的 Spring 开发人员提供类似的体验。

请注意,Spring AI API 不是 LangChain 或 LlamaIndex 的直接端口。如果您熟悉这两个项目,您将看到 API 中的显着差异,尽管概念和想法相当可移植。

功能概述

这是高级功能概述。所实现的功能奠定了基础,后续更复杂的功能将在此基础上构建。

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

与 AI 模型交互

ChatClient: Spring AI 的一个基本功能是一个可移植的客户端 API,用于与生成式 AI 模型进行交互。借助此便携式 API,您可以首先针对一种 AI 聊天模型(例如 OpenAI),然后轻松地将实现替换为另一种 AI 聊天模型(例如 Amazon Bedrock 的 Anthropic 模型)。必要时,您还可以下拉使用非便携式型号选项。

Spring AI 支持多种 AI 模型。有关概述,请参见此处。目前支持的具体型号有

  • 开放人工智能

  • Azure 开放人工智能

  • 亚马逊基岩(Anthropic、Llama2、Cohere、Titan、Jurassic2)

  • 抱脸

  • 谷歌 VertexAI(PaLM2、Gemini)

  • 米斯特拉尔人工智能

  • 稳定性人工智能

  • 奥拉马

  • PostgresML

  • 变形金刚 (ONNX)

  • 人类克劳德3

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

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

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

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

输出解析器: AI 模型输出通常作为原始java.lang.String值。输出解析器将这些原始字符串重组为对程序员更友好的格式,例如 CSV 或 JSON。

在我们的概念指南中了解有关输出解析器的见解。有关实现详细信息,请访问OutputParser API 指南。

合并您的数据

将专有数据整合到生成人工智能中而不需要重新训练模型已经是一项突破。由于需要专门的硬件,重新训练模型(尤其是具有数十亿参数的模型)具有挑战性。“上下文”学习技术提供了一种更简单的方法,可以将数据(无论是来自文本文件、HTML 还是数据库结果)注入到预先训练的模型中。正确的技术对于开发成功的解决方案至关重要。

检索增强生成

检索增强生成(简称 RAG)是一种使您能够将数据引入预训练模型的模式。RAG 擅长“查询文档”用例。

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

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

文件:

该类Document封装了 AI 模型的数据,包括文本和元数据。虽然文档可以表示大量内容(例如整个文件),但 RAG 方法将内容分割成较小的部分以包含在提示中。ETL 过程使用接口DocumentReaderDocumentTransformer、 和DocumentWriter,最后将数据存储在矢量数据库中。该数据库随后识别与用户查询相关的数据片段。

文档读者:

文档阅读器可List<Document>从多种来源生成文档,例如 PDF、Markdown 文件和 Word 文档。鉴于许多源都是非结构化的,文档阅读器通常根据内容语义进行分段,避免表或代码部分内的拆分。初始创建后List<Document>,数据流经转换器以进行进一步细化。

文档转换器:

List<Document>Transformer通过消除多余的数据(例如 PDF 页边距)或附加元数据(例如主要关键字或摘要)来进一步修改。另一个关键的转变是细分文档以适应人工智能模型的令牌约束。每个模型都有一个上下文窗口,指示其输入和输出数据限制。通常,1 个令牌约等于 0.75 个单词。例如,在 gpt-4-32k 等模型名称中,“32K”表示令牌计数。

文档编写者:

RAG 中的最后一个 ETL 步骤涉及将数据段提交到向量数据库。尽管该DocumentWriter接口并非专门用于矢量数据库编写,但它是主要的实现类型。

矢量存储: 矢量数据库有助于将您的数据与 AI 模型相结合。他们确定人工智能应使用哪些文档部分来生成响应。矢量数据库的示例包括 Chroma、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 :javadoc

./mvnw javadoc:javadoc -Pjavadoc

项目地址: https://github.com/spring-projects/spring-ai.git 

如果无法下载,请多次刷新,还不行,就使用魔法上网

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

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

相关文章

「GO基础」GO程序组成要素

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

HART协议

一、HART协议 HART 协议采用美国电话通讯系统Bell202频移键控(FSK)标准&#xff0c;在4&#xff5e;20mA的模拟0.5mA的正弦波&#xff0c;波特率是 1200bps。因为所叠加的正弦信号平均值为0&#xff0c;而且相位连续频移键控技术要求在波特率为 1200Hz的数据位 1 和 0 的边界的…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据&#xff0c; 所以&#xff0c; 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况&#xff0c;最初爬虫正常运行&#xff0c;正常抓取数据&#xff0c;一切看起来都是那么的美好&#xff0c;然而一杯茶的功夫可能就会出现错误…

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…

适合金融行业的FTP替代方案是怎么样的?仅需关注三个重点

2018 年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;我国科技尤其是上游核心技术受制于人的现状对我 国经济发展提出了严峻考验。在全球产业从工业经济向数字经济升级的关键时期&#xff0c;中国明确 “数字中国”建设战略&#xff0c; 抢占数字经济产业链制高点。 在…

# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(2)通过 RestTemplate 调用远程服务

从浅入深 学习 SpringCloud 微服务架构&#xff08;二&#xff09;模拟微服务环境&#xff08;2&#xff09;通过 RestTemplate 调用远程服务 段子手168 1、打开 idea 创建父工程 创建 artifactId 名为 spring_cloud_demo 的 maven 工程。 --> idea --> File -->…

MS1000TA超声波测量模拟前端

产品简述 MS1000TA 是一款超声波测量模拟前端芯片&#xff0c;广 泛应用于汽车工业和消费类电子。该芯片具有高度 的灵活性&#xff0c;发射脉冲个数、频率、增益及信号阈值 均可配置。同时&#xff0c;接收通道参数也可以灵活配置&#xff0c; 从而适用于不同尺寸容器、不…

工厂方法模式设计实验

【实验内容】 楚锋软件公司欲开发一个系统运行日志记录器&#xff08;Logger&#xff09;。该记录器可以通过多种途径保存系统的运行日志&#xff1a;例如通过文件记录或数据库记录&#xff0c;用户可以通过修改配置文件灵活地更换日志记录方式。在设计各类日志记录器时&#…

入门指南:从零开始学习ReactJS

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

Hadoop大数据处理技术-配置连接篇

​2024/4/17 Hadoop学习前的准备 3&#xff09;连接虚拟机 上一节配置完成了基础的虚拟机配置及网络配置 下面我们开始建立连接 我们为什么要与虚拟机建立链接呢&#xff1f; 连接虚拟机就好像跟亲友联系一样 总得找个便捷又好用的工具才行 Secure CRT就像是一把能打开通向…

家用充电桩有必要买21KW交流充电桩吗?

随着电动汽车的普及和人们环保出行意识的增强&#xff0c;充电设施的需求日益增长。在选择充电桩时&#xff0c;很多人会考虑到充电速度、功率等因素。而作为交流充电桩中充电效率最高的一种&#xff0c;21KW交流充电桩是否值得购买呢&#xff1f; 从成本角度来看&#xff0c;2…

20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】linux

20240423给飞凌的OK3588-C开发板适配OV13855【绿屏】 2024/4/22 20:29 开发板&#xff1a;飞凌的OK3588-C OS操作系统&#xff1a;linux R4/Buildroot 【OV13855接到CAM1上&#xff0c;如果要接到CAM2上请修改相关的DTS即可】 https://item.taobao.com/item.htm?_unju3ku2f4…