Spring Boot中集成OpenAI-Java,并使用新版模型(gpt-3.5-turbo)

文章介绍了如何将SpringBoot项目中的OpenAI-JavaSDK升级到最新版本,特别是如何使用更强大的GPT-3.5Turbo模型。升级步骤包括修改依赖版本、初始化服务和调整请求实例。作者强调了新模型的性能提升和成本优势,并提示了新版API的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

OpenAI-Java是一个Java语言的人工智能库,提供了常用的机器学习算法和自然语言处理工具,以便使用Java进行人工智能开发。该库基于深度学习技术,可用于构建各种类型的AI应用程序。OpenAI-Java的目标是使Java开发人员具备开发人工智能应用程序的能力,同时利用Java开发的优势:强类型编程、跨平台等,来构建高性能、高效率的AI应用程序。

升级步骤

在之前的文章中,我介绍了如何将 OPENAI 的 JAVA SDK(OpenAI-Java)集成到 Spring Boot 项目中。如果您对这个过程有任何不明白的地方,可以参考我的文章(https://joseke.blog.youkuaiyun.com/article/details/129332499)。

但是这次,我要向您推荐一个更加强大且经济实惠的模型,那就是 GPT-3.5 Turbo。相比之前我们使用的达芬奇模型(text-davinci-003),GPT-3.5 Turbo 拥有更出色的性能,而且其 token 价格仅为达芬奇模型的 10%。因此,我强烈建议您升级到 GPT-3.5 Turbo。通过这个版本的模型,您可以期望获得更加高效和便捷的文本生成体验,为您的项目注入新的活力。

1 升级OpenAI-Java SDK版本

直接修改项目中的POM版本号至0.11.1,可以去maven仓库查询最新版本,如下所示

<!-- https://mvnrepository.com/artifact/com.theokanning.openai-gpt3-java/client -->
<dependency>
   <groupId>com.theokanning.openai-gpt3-java</groupId>
   <artifactId>client</artifactId>
   <version>0.11.1</version>
</dependency>

2 初始化OpenAiService类

如果是在spring boot配置中定义的OpenAiService 则不需要做任何将修改,但是这个类提示已经废弃,大家不要担心,不需要做任何变更,配置如下

@Configuration
public class OpenAiConfiguration {

    //open ai 密钥配置
    @Value("${open.ai.key}")
    private String openAiKey;
    //请求超时配置
    @Value("${open.ai.request.timeout}")
    private long timeout;
    //初始化
    @Bean
    public OpenAiService openAiService(){
        return new OpenAiService(openAiKey, Duration.ofSeconds(timeout));
    }
}

3 修改OPENAI 请求实例

在之前的文章中我们使用了如下方式实例化了一个请求类

CompletionRequest completionRequest = CompletionRequest.builder()
        .prompt(prompt) //提问的问题
        .model(openAiModel) //模型 - text-davinci-003
        .echo(true)
        .temperature(0.7)
        .topP(1d)
        .frequencyPenalty(0d)
        .presencePenalty(0d)
        .maxTokens(maxTokens)
        .build();
CompletionResult completionResult = openAiService.createCompletion(completionRequest);
String text = completionResult.getChoices().get(0).getText();

但在新版中这种实例化方式完全不可用,需要升级至以下方式进行实例化才可以使用新模型,其中的配置都是用默认的基本就满足大部分的需求了。

List<ChatMessage> messages = buildChatMessage(prompt);
ChatCompletionRequest completionRequest = ChatCompletionRequest.builder()
        .model(openAiModel)
        .messages(messages) 
        .build();
ChatCompletionResult completionResult = openAiService.createChatCompletion(completionRequest);
List<ChatCompletionChoice> choices = completionResult.getChoices();
if(CollectionUtils.isEmpty(choices)){
    log.warn("No answer response {}",JSON.toJSONString(completionResult));
    return "";
}
return choices.get(0).getMessage().getContent();

消息列表实例创建方法

/**
 * 构建消息类
 * @param prompt
 * @return
 */
private List<ChatMessage> buildChatMessage(String prompt){
    List<ChatMessage> messages = new ArrayList<>();
    ChatMessage systemMsg = new ChatMessage();
    systemMsg.setRole(RoleTypeEnum.system.name());
    systemMsg.setContent("我是一名JAVA程序员,可以回答任何JAVA相关的问题。");
    messages.add(systemMsg);
    ChatMessage userMsg = new ChatMessage();
    userMsg.setRole(RoleTypeEnum.user.name());
    userMsg.setContent(prompt);
    messages.add(userMsg);
    return messages;
}

在新版版的模型中,官方开放了三种角色供大家配置分别是system、user和assistant

system:系统消息,用来设置 ChatGPT 的行为。

user:用户消息,用来和 ChatGPT 交互。

assistant:助理消息,用来帮助你存储 ChatGPT 在此之前的回复。

因此我们在消息构建的时候直接配置机器人的角色,让机器人只回复这个领域的知识。同时我们还可以通过配置助理消息实现多轮会话,这个我会在后续的文章中详细讲解。

总之为了避免无故的token消耗,粉丝朋友们大家还是尽快升级吧!

最后大家的点赞关注是我们更新最大的动力,拜托啦!

<think>好的,我现在需要帮助用户解决关于如何在Spring Boot使用spring-ai-openai-spring-boot-starter 0.8.1集成OpenAI的问题。首先,用户提到了之前遇到的依赖错误,比如无法下载spring-ai-core,这可能是因为版本不一致或者仓库配置的问题。 首先,我应该检查用户提到的版本兼容性。用户之前引用了1.0.0-M6版本的问题,但现在用户询问的是0.8.1版本,可能版本较旧,需要注意不同版本的配置差异。我需要确认0.8.1版本的依赖配置是否正确,是否需要特定的仓库地址,比如阿里云的Maven仓库或者Spring的仓库。 接下来,添加依赖到pom.xml文件。用户需要正确的groupId和artifactId,可能这个版本的spring-ai-openai-spring-boot-starter属于不同的组织,比如org.springframework.ai,还是com.alibaba.cloud.ai?根据用户之前的引用,可能涉及到不同的组织,需要确认正确的依赖坐标。 然后是配置OpenAI的API密钥。用户需要在application.yml或application.properties中设置相关属性,比如api-key,可能还有model参数,指定使用模型gpt-3.5-turbo。这里要确保配置项的路径正确,不同版本的配置属性可能有变化。 服务调用部分,可能需要注入AiClient或者特定的OpenAiClient,然后调用generate方法来生成内容。需要确认0.8.1版本的接口是否与示例中的一致,是否有不同的方法名或参数。 另外,用户之前遇到的依赖解析问题,可能需要检查仓库配置,比如是否添加了Spring的Milestone仓库或者阿里云的仓库,确保依赖能够正确下载。对于0.8.1版本,可能需要特定的仓库地址,避免使用默认的Maven中央库,因为某些版本可能不在那里。 还要考虑版本兼容性,比如Spring Boot的版本是否与spring-ai-openai-spring-boot-starter 0.8.1兼容,是否需要调整Spring Boot的版本。例如,某些Spring AI版本可能需要Spring Boot 3.x,而旧版本可能需要2.x,这可能导致依赖冲突。 最后,生成相关问题需要考虑用户可能遇到的常见问题,比如配置错误、依赖冲突、版本不匹配等,以及高级功能如自定义模型或流式响应。</think>### 使用 $spring-ai-openai-spring-boot-starter$ 0.8.1 集成 OpenAI 功能 #### 1. 添加依赖 在 $pom.xml$ 中配置依赖和仓库地址: ```xml <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>0.8.1</version> </dependency> <!-- 必须添加 Spring Milestone 仓库 --> <repositories> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </repository> </repositories> ``` 注意:若出现依赖解析失败,需检查本地仓库路径与阿里云镜像配置[^1][^2] #### 2. 配置 API 密钥 在 $application.yml$ 中设置: ```yaml spring: ai: openai: api-key: sk-your-api-key-here model: gpt-3.5-turbo temperature: 0.7 ``` #### 3. 服务调用示例 通过 $AiClient$ 接口调用服务: ```java @RestController public class OpenAIController { @Autowired private AiClient aiClient; @GetMapping("/ask") public String ask(@RequestParam String prompt) { return aiClient.generate(prompt); } } ``` #### 4. 版本兼容性验证 $$Spring\ Boot\ 3.x \implies spring-ai-openai-spring-boot-starter\ 0.8.1$$ 若使用 Spring Boot 2.x 需降级到兼容版本,建议通过 $mvn dependency:tree$ 验证依赖树完整性[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JoseKe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值