连接 OpenAI 模型:基础操作
在这一部分中,我们将介绍如何连接 OpenAI 模型,设置 API 密钥,并使用 Spring AI 的 ChatClient
与 OpenAI 模型进行简单的对话。Spring AI 为集成 OpenAI 模型提供了方便的工具,使得开发者能够更轻松地与 GPT 系列模型进行交互。
步骤 1:获取 OpenAI API 密钥
-
注册 OpenAI 账号
首先,您需要在 OpenAI 官方网站注册一个账号:OpenAI。 -
获取 API 密钥
登录 OpenAI 后,访问 API Keys 页面:OpenAI API Keys,然后点击 Create new secret key 来生成一个新的 API 密钥。 -
保存 API 密钥
生成的 API 密钥仅在创建时可见,请务必保存好它。您将在后续步骤中使用该密钥进行身份验证。
步骤 2:配置 Spring Boot 项目
-
创建 Spring Boot 项目
使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择如下依赖:
- Spring Web:用于创建 REST API。
- Spring Boot DevTools:开发时热部署。
-
添加 OpenAI 相关依赖
在
pom.xml
文件中添加 OpenAI 相关依赖。如果您没有找到现成的 Spring AI 依赖,您可以使用 OpenAI 官方提供的 Java SDK,或者自己封装 HTTP 请求与 OpenAI API 交互。<dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot DevTools for hot reloading --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <!-- OpenAI Java SDK --> <dependency> <groupId>com.theokanning</groupId> <artifactId>openai-java</artifactId> <version>0.11.0</version> </dependency> </dependencies>
如果没有现成的 Spring AI 依赖,您可以使用
openai-java
这个库来直接与 OpenAI 进行交互。运行
mvn clean install
来更新项目依赖。
步骤 3:设置 API 密钥
-
设置 OpenAI API 密钥
在
application.properties
或application.yml
文件中配置您的 API 密钥:openai.api.key=your-api-key-here
将
your-api-key-here
替换为您从 OpenAI 获取的 API 密钥。 -
配置环境变量(可选)
为了避免硬编码 API 密钥,您也可以将 API 密钥作为环境变量传递,配置如下:
export OPENAI_API_KEY=your-api-key-here
然后在 Spring Boot 项目中通过
@Value
注解获取密钥:@Value("${openai.api.key}") private String openAiApiKey;
步骤 4:实现与 OpenAI 的对话功能
-
创建 OpenAI 服务类
创建一个服务类
OpenAiService.java
,用于通过 OpenAI API 发起请求与模型进行对话:package com.example.springaidemo; import com.theokanning.openai.completion.CompletionRequest; import com.theokanning.openai.completion.CompletionResult; import com.theokanning.openai.service.OpenAiService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class OpenAiService { @Value("${openai.api.key}") private String apiKey; public String getResponse(String prompt) { // 创建 OpenAI 服务对象 OpenAiService service = new OpenAiService(apiKey); // 创建请求对象 CompletionRequest completionRequest = CompletionRequest.builder() .prompt(prompt) .model("text-davinci-003") // 选择模型,例如 text-davinci-003 .maxTokens(150) .temperature(0.7) .build(); // 发送请求并获取返回结果 CompletionResult result = service.createCompletion(completionRequest); // 返回模型的回答 return result.getChoices().get(0).getText(); } }
这里:
- 使用
OpenAiService
类与 OpenAI API 进行交互。 - 通过
CompletionRequest.builder()
来设置对话模型、温度、最大令牌数等参数。 - 返回
CompletionResult.getChoices()
获取模型的回复文本。
- 使用
-
创建 REST 控制器
创建一个控制器
AiController.java
,通过 REST API 接收用户输入并返回 OpenAI 模型的回复:package com.example.springaidemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class AiController { @Autowired private OpenAiService openAiService; @GetMapping("/chat") public String chat(@RequestParam String prompt) { // 获取 OpenAI 模型的回复 return openAiService.getResponse(prompt); } }
在
chat
接口中,用户通过 URL 参数prompt
传递聊天内容,系统调用 OpenAI 模型并返回回复。 -
启动项目
运行 Spring Boot 应用。访问
http://localhost:8080/chat?prompt=Hello%20OpenAI!
来测试与 OpenAI 模型的对话。您应该能看到 OpenAI 模型根据输入
Hello OpenAI!
给出的回复。
步骤 5:处理异常与优化
-
处理异常
确保处理 API 请求过程中可能出现的错误,例如网络问题、API 限制等。可以通过try-catch
块来捕获并处理异常。try { return openAiService.getResponse(prompt); } catch (Exception e) { return "Error: " + e.getMessage(); }
-
API 限制与费用
OpenAI API 有使用限制和计费策略,因此在高频率调用时需要注意 API 调用次数和费用。可以考虑实现缓存机制或者限制请求频率。
总结
通过这些步骤,您可以将 OpenAI 模型集成到 Spring Boot 项目中,使用 Spring AI 和 OpenAI 提供的 API 进行基础的对话。这个过程不仅仅是通过 Spring 的易用性进行 API 调用,还通过 OpenAiService
类简化了与 OpenAI 模型交互的复杂度。