连接 OpenAI 模型:基础操作

在这一部分中,我们将介绍如何连接 OpenAI 模型,设置 API 密钥,并使用 Spring AI 的 ChatClient 与 OpenAI 模型进行简单的对话。Spring AI 为集成 OpenAI 模型提供了方便的工具,使得开发者能够更轻松地与 GPT 系列模型进行交互。

步骤 1:获取 OpenAI API 密钥

  1. 注册 OpenAI 账号

    首先,您需要在 OpenAI 官方网站注册一个账号:OpenAI

  2. 获取 API 密钥

    登录 OpenAI 后,访问 API Keys 页面:OpenAI API Keys,然后点击 Create new secret key 来生成一个新的 API 密钥。

  3. 保存 API 密钥

    生成的 API 密钥仅在创建时可见,请务必保存好它。您将在后续步骤中使用该密钥进行身份验证。

步骤 2:配置 Spring Boot 项目

  1. 创建 Spring Boot 项目

    使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择如下依赖:

    • Spring Web:用于创建 REST API。
    • Spring Boot DevTools:开发时热部署。
  2. 添加 OpenAI 相关依赖

    pom.xml 文件中添加 OpenAI 相关依赖。如果您没有找到现成的 Spring AI 依赖,您可以使用 OpenAI 官方提供的 Java SDK,或者自己封装 HTTP 请求与 OpenAI API 交互。

    xml 复制代码
    <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 密钥

  1. 设置 OpenAI API 密钥

    application.propertiesapplication.yml 文件中配置您的 API 密钥:

    properties 复制代码
    openai.api.key=your-api-key-here

    your-api-key-here 替换为您从 OpenAI 获取的 API 密钥。

  2. 配置环境变量(可选)

    为了避免硬编码 API 密钥,您也可以将 API 密钥作为环境变量传递,配置如下:

    bash 复制代码
    export OPENAI_API_KEY=your-api-key-here

    然后在 Spring Boot 项目中通过 @Value 注解获取密钥:

    java 复制代码
    @Value("${openai.api.key}")
    private String openAiApiKey;

步骤 4:实现与 OpenAI 的对话功能

  1. 创建 OpenAI 服务类

    创建一个服务类 OpenAiService.java,用于通过 OpenAI API 发起请求与模型进行对话:

    java 复制代码
    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() 获取模型的回复文本。
  2. 创建 REST 控制器

    创建一个控制器 AiController.java,通过 REST API 接收用户输入并返回 OpenAI 模型的回复:

    java 复制代码
    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 模型并返回回复。

  3. 启动项目

    运行 Spring Boot 应用。访问 http://localhost:8080/chat?prompt=Hello%20OpenAI! 来测试与 OpenAI 模型的对话。

    您应该能看到 OpenAI 模型根据输入 Hello OpenAI! 给出的回复。

步骤 5:处理异常与优化

  1. 处理异常

    确保处理 API 请求过程中可能出现的错误,例如网络问题、API 限制等。可以通过 try-catch 块来捕获并处理异常。

    java 复制代码
    try {
        return openAiService.getResponse(prompt);
    } catch (Exception e) {
        return "Error: " + e.getMessage();
    }
  2. API 限制与费用

    OpenAI API 有使用限制和计费策略,因此在高频率调用时需要注意 API 调用次数和费用。可以考虑实现缓存机制或者限制请求频率。

总结

通过这些步骤,您可以将 OpenAI 模型集成到 Spring Boot 项目中,使用 Spring AI 和 OpenAI 提供的 API 进行基础的对话。这个过程不仅仅是通过 Spring 的易用性进行 API 调用,还通过 OpenAiService 类简化了与 OpenAI 模型交互的复杂度。

相关推荐
java1234_小锋25 分钟前
Java中如何安全地停止线程?
java·开发语言
栗子~~30 分钟前
基于quartz,刷新定时器的cron表达式
java
杨过姑父37 分钟前
Servlet3 简单测试
java·servlet
chengxuyuan666661 小时前
python基础语句整理
java·windows·python
一只会飞的猪_1 小时前
国密加密golang加密,java解密
java·开发语言·golang
清风-云烟1 小时前
使用redis-cli命令实现redis crud操作
java·linux·数据库·redis·spring·缓存·1024程序员节
安和昂1 小时前
effective Objective—C 第三章笔记
java·c语言·笔记
好像是个likun1 小时前
spring Ioc 容器的简介和Bean之间的关系
java·后端·spring
向着开发进攻1 小时前
深入理解 Java 并发编程中的锁机制
java·开发语言
CURRY30_HJH1 小时前
JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。
java·开发语言