SpringAI整合OpenAI系列(一)
一、OpenAI账号申请
国内访问openAI的服务有多种方式,一种是利用科学上网工具(访问比较慢)代理全局的网络请求openAI的服务,另外一种是通过三方提供的接口转发请求openAI的服务,但是需要花钱。我利用这个三方的平台,https://api.xty.app/ 实现了相关的功能
-
首先注册一个账号:https://api.xty.app/login
-
创建一个可用的令牌
-
token申请成功
二、项目创建
springAI的官方文档:https://spring.io/projects/spring-ai 官方文档介绍得很简单,只要加载一个openai.api-key的值,就能启动了,那么让我们来试一下,其中需要注意的是使用的springboot3.4.1版本,jdk的版本是:17.0.0 (我本地是用sdkman对jdk版本进行管理的)
-
创建项目
这样项目就创建完成了,接下来我们处理相关的配置。
-
配置信息
在application.properties 中增加这些配置
spring.ai.openai.base-url=https://hk.xty.app
spring.ai.openai.api-key=申请的token
#gpt-3.5-turbo、gpt-4o, gpt-4o-mini, gpt-4-turbo
spring.ai.openai.chat.options.model=gpt-3.5-turbo
-
相关接口的实现和调用
创建一个ChatController,注入OpenAiChatModel,接下来就可以调用openAI的服务了
@RestController@RequestMapping("/ai") public class ChatController { private final OpenAiChatModel openAiChatModel; @Autowired public ChatController(OpenAiChatModel openAiChatModel) { this.openAiChatModel = openAiChatModel; } @GetMapping("/chat") public String chat(@RequestParam(value = "msg")String msg){ return openAiChatModel.call(msg); } }
这样简单的springAI项目就算完成了
三、思考
为什么我们不直接用http调用的方式实现openAI的调用,其实主要我们就是想利用springAI的特性:像下文中提到的Structured Outputs结构化输出,就是调用AI以后按照你想要的结构提供结构;像Tools/Function Calling,允许模型实时访问相关的方法啊;还有Embedding的能力啊,关于这些功能的介绍,大家可以持续关注《SpringAI整合OpenAI系列》
参考链接:
spring ai配置: https://flowus.cn/share/688cb0aa-e203-4c39-97f5-6c3bd9e0ffcc
spring官方文档: https://github.com/spring-projects/spring-ai
openAI官方文档: https://platform.openai.com/docs/overview