连接 OpenAI 模型:基础操作

server/2025/1/24 5:29:55/

在这一部分中,我们将介绍如何连接 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 交互。

    <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 密钥:

    openai.api.key=your-api-key-here
    

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

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

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

    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 {@Autowiredprivate 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 模型交互的复杂度。


http://www.ppmy.cn/server/160952.html

相关文章

Windows 下本地 Docker RAGFlow 部署指南

Windows 下本地 Docker RAGFlow 部署指南 环境要求部署步骤1. 克隆代码仓库2. 配置 Docker 镜像加速(可选)3. 修改端口配置(可选)4. 启动服务5. 验证服务状态6. 访问服务7. 登录系统8. 配置模型8.1 使用 Ollama 本地模型8.2 使用在线 API 服务9. 开始使用10. 常见问题处理端…

WPF MVVM 模式如何监听IsVisibleChanged 事件

原本以为这是一个很简单的问题&#xff0c;但是我却走了不少的弯路。记录下来自省。 我使用的是库System.Windows.Interactivity.dll&#xff0c;首先在xaml 中使用了EventTrrigger <!-- 当 IsVisibleChanged 事件触发时&#xff0c;执行绑定的命令 --> <!--<…

代码随想录 栈与队列 test 7

347. 前 K 个高频元素 - 力扣&#xff08;LeetCode&#xff09; 首先想到哈希&#xff0c;用key来存元素&#xff0c;value来存出现次数&#xff0c;最后进行排序&#xff0c;时间复杂度约为o(nlogn)。由于只需求前k个&#xff0c;因此可以进行优化&#xff0c;利用堆来维护这…

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c) npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…

Linux运维篇-PAM安全模块配置

PAM是什么&#xff1f; PAM&#xff08;可插入认证模块&#xff09;是UNIX操作系统上一个实现模块化的身份验证的服务。当程序需要对用户进行身份验证时加载并执行。PAM文件通常位于/etc/pam.d目录中。 而Linux-PAM&#xff0c;是linux可插拔认证模块&#xff0c;是一套可定制…

【Javaweb05】 XML探秘:解码数据的哲学,构建跨界的沟通桥梁

文章目录 前言&#x1f30d;一.XML简介❄️1.为什么需要 XML ❄️2.XML 技术用于解决什么问题❄️ 3.XML概念和特点 &#x1f30d;二.XML 语法❄️ 1、文档声明❄️ 2、元素❄️3、元素命名规则 ❄️ 4、属性❄️ 5、CDATA 区 &#x1f30d;三.XML 解析技术原理之DOM4j❄️ 1…

NIO 和 Netty 在 Spring Boot 中的集成与使用

Netty到底是个啥&#xff0c;有啥子作用 1. Netty 的本质&#xff1a;对 NIO 的封装 NIO 的原生问题&#xff1a; Java 的 NIO 提供了非阻塞 I/O 和多路复用机制&#xff0c;但其使用较为复杂&#xff08;如 Selector、Channel、Buffer 的配置和管理&#xff09;。开发者需要自…

PL/SQL语言的图形用户界面

PL/SQL语言的图形用户界面 引言 随着信息技术的迅猛发展&#xff0c;数据库系统在现代应用程序中的重要性愈加凸显。PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;作为Oracle数据库的一种程序设计语言&#xff0c;以其强大的数据处理能力和高…