佛山电商网站制作团队,厦门建网站哪家好,工业设计之父,网站建设维护的方案当前各种AI项目层出不穷#xff0c;但绝大多数都是用python写的#xff0c;现在Spring开源了Spring AI项目#xff0c;让Java开发者也可以轻松给自己的springboot项目集成AI能力。目前spring AI正式版本为0.8.1#xff0c;支持接入openAI、Ollama、Azure openAI、Huggingfa… 当前各种AI项目层出不穷但绝大多数都是用python写的现在Spring开源了Spring AI项目让Java开发者也可以轻松给自己的springboot项目集成AI能力。目前spring AI正式版本为0.8.1支持接入openAI、Ollama、Azure openAI、Huggingface等可实现聊天、embedding、图片生成、语音转文字、向量数据库、function calling、prompt模板、outputparser、RAG等功能就像Java版本的langchain本文通过一些示例简要介绍部分功能。
一、OpenAI简介
OpenAI是一家致力于推动人工智能发展的研究公司其目标是确保人工智能的益处广泛而均匀地分布。为了实现这一目标OpenAI开发了一系列强大的API供开发者在自己的应用中集成AI功能。
OpenAI的API涵盖了自然语言处理、图像识别、机器翻译等多个领域其中最为著名的可能是GPT系列模型它们在文本生成、文本理解等方面表现出色。
二、Spring Boot与OpenAI的无缝对接
Spring Boot是一个流行的Java框架用于快速开发企业级应用。其简洁的配置和丰富的生态使得Spring Boot成为许多开发者的首选。将Spring Boot与OpenAI对接可以让你的Java应用轻松拥有AI能力。
Spring AI API 涵盖了广泛的功能。每个主要功能都在其专门的部分中进行了详细介绍。为了提供概述可以使用以下关键功能 跨 AI 提供商的可移植 API用于聊天、文本到图像和嵌入模型。支持同步和流 API 选项。还支持下拉访问模型特定功能。我们支持 OpenAI、Microsoft、Amazon、Google、Huggingface 等公司的 AI 模型。 跨 Vector Store 提供商的可移植 API包括同样可移植的新颖的类似 SQL 的元数据过滤器 API。支持 8 个矢量数据库。 函数调用。Spring AI 使 AI 模型可以轻松调用 POJO java.util.Function 对象。 AI 模型和向量存储的 Spring Boot 自动配置和启动器。 数据工程的 ETL 框架。这为将数据加载到矢量数据库提供了基础有助于实现检索增强生成模式使您能够将数据引入 AI 模型以纳入其响应中。
第一步建项目创建一个Spring Boot项目(JDK17起步) 第二步加依赖
2.1 加入spring-ai-openai-spring-boot-starter依赖
dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactId
/dependency
2.2 继承父项目dependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies
/dependencyManagement
2.3 配置项目依赖下载的仓库(因为spring ai在中心仓库还没有依赖所以需要去网站下载)
repositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository
/repositories 第三步配文件(这个的api -key就是你自己的) 注册OpenAI账号并获取API密钥 要使用OpenAI的API首先需要注册一个OpenAI账号并在Dashboard中获取你的API密钥。这个密钥将用于后续的API调用中以验证你的身份。
13k star! 获取免费ChatGPT API Key的开源项目亲测可用
spring:ai:openai:api-key: 换成你的api-keybase-url: https://api.openai.com分为代理地址和直连地址 第四步 聊天功能写具体的代码实现 4.1 因为所有的接口的父接口都继承与Model可以看到聊天方式的实现就是注入OpenAiChatModel 因为这个springboot自动装配的功能只需要注入即可 第一种 聊天的第一种实现方式调用call方法直接传入msg这个叫做同步API
public class ChatController {Resourceprivate OpenAiChatModel openAiChatModel;/*** 聊天的方法。底层调用的openAi的方法* RequestParam 接受参数* msg 就是我们提的问题* return*/RequestMapping(/ai/chat)public String chat(RequestParam(msg) String msg){String called openAiChatModel.call(msg);return called;} 5.1 运行程序结果 2. 聊天与prompt template
如果使用openai就注入openAiChatClient如果使用ollama就注入ollamaChatClient然后调用call方法就可以了。
Autowired
private ChatClient openAiChatClient;
Autowired
private ChatClient ollamaChatClient;GetMapping(/ai/simple)
public MapString, String completion(RequestParam(value message, defaultValue Tell me a joke) String message) {return Map.of(generation, openAiChatClient.call(message));
} 第二种 聊天的程序的第二种实现方式调用call方法new一个Prompt对象再传入msg
/*** 聊天的方法。底层调用的openAi的方法* RequestParam 接受参数* msg 就是我们提的问题* ChatResponse 返回的是一个josn串* chatResponse.getResult().getOutput().getContent();只获取文本* return*/RequestMapping(/ai/chat2)public Object chat2(RequestParam(msg) String msg){ChatResponse chatResponse openAiChatModel.call(new Prompt(msg));return chatResponse.getResult().getOutput().getContent();} 6.1 运行程序结果 第三种聊天的程序的第三种实现方式比上一个方法多了一个关于gpt参数的设置
/***OpenAiChatOptions.builder() 传入的一个参数可以控制大模型的设置* param msg* return*/RequestMapping(/ai/chat3)public Object chat3(RequestParam(msg) String msg){ChatResponse chatResponse openAiChatModel.call(new Prompt(msg, OpenAiChatOptions.builder()//.withModel(gpt-4-32k) //gpt的版本 32K是参数参数越高回答问题越准确.withTemperature(0.4F) //温度值温度越高回答的准确率越低温度越低回答的准确率越高.build()));return chatResponse.getResult().getOutput().getContent();} 7.1 运行程序结果 当然上述的可选参数不仅可以在代码中配置也可以在配置文件中配置
注意如果代码中写了关于gpt的参数配置文件中也配置了参数那么以代码中为主 第四种聊天的程序的第三种实现方式调用stream方法用法和call一样只不过返回值不一样,Stream返回的是Fiux叫做数据的序列一序列的数据一个一个的数据返回调用Stream叫做流式API
/***OpenAiChatOptions.builder() gpt的可选参数* param msg* return*/RequestMapping(/ai/chat4)public Object chat4(RequestParam(msg) String msg){FluxChatResponse flux openAiChatModel.stream(new Prompt(msg, OpenAiChatOptions.builder()//.withModel(gpt-4-32k) //gpt的版本 32K是参数参数越高回答问题越准确.withTemperature(0.4F) //温度值温度越高回答的准确率越低温度越低回答的准确率越高.build()));return flux.collectList();} 上述就是关于Spring Boot 整合 Spring AI 实现项目接入ChatGPT本文仅介绍了关于聊天方面的实现方式接下来的文章介绍关于如何生成图片以及语言的转换。