OpenAI API使用教程:快速接入AI能力(新手友好版)

限流小保安
2025-12-16 00:13
阅读 591

大家好!我是一名从培训班出来的前端开发,现在也在带一些刚入门的同学。最近很多小伙伴问我:“能不能用AI帮我们做点实际的东西?比如自动写文案、分析用户反馈之类的?”——这其实完全可行!而最直接的方式,就是调用 OpenAI API

我当初学的时候,也以为“调用AI”是大厂工程师才能干的事,结果发现:只要你会写几行代码,就能把GPT的能力集成到自己的项目里!今天这篇教程,就手把手带你从零开始,用 Spring Boot 接入 OpenAI API,做一个能回答问题的小应用。全程不用懂复杂的算法,只要会基础 Java 就行!

✅ 本教程关键词覆盖:运营Spring Boot教程实战经验


一、OpenAI API 是什么?能用来做什么?

简单说,OpenAI API 就是一个“AI服务接口”。你发一段文字过去,它就能返回一段智能生成的文字回来。

常见应用场景(尤其适合运营同学!):

  • 自动生成商品描述、营销文案
  • 回答用户常见问题(客服机器人)
  • 分析用户评论情感倾向
  • 给文章起标题、写摘要
  • 生成测试数据(比如模拟用户留言)

🎯 对于运营人员来说,哪怕不会写代码,也可以让开发同事帮你接一个简单的页面,输入需求,AI自动生成内容,效率翻倍!


二、环境准备:5分钟搞定开发环境

1. 注册 OpenAI 账号并获取 API Key

  • 访问 https://platform.openai.com/
  • 登录或注册账号(需绑定信用卡,但新用户有免费额度)
  • 进入 API Keys 页面 → 点击 Create new secret key
  • 复制生成的密钥(像 sk-xxxxxx 这样的字符串),不要泄露!

⚠️ 新手注意:API Key 相当于你的“AI通行证”,一旦泄露别人可以用你的额度,记得保存好!

2. 安装开发工具

你需要以下工具(都是免费的):

  • JDK 17(Java 开发工具包)
  • Maven(项目依赖管理)
  • IDEA 或 VS Code(代码编辑器)
  • Postman(测试 API 用,可选)

💡 我当初学 Spring Boot 时,连 JDK 版本都搞错,结果跑不起来。记住:用 JDK 17 最稳妥!

3. 创建 Spring Boot 项目

访问 https://start.spring.io/,按如下配置:

配置项
Project Maven
Language Java
Spring Boot 3.2.x(最新稳定版)
Group com.example
Artifact openai-demo
Dependencies Spring Web, Lombok

点击 Generate 下载 ZIP 包,解压后用 IDEA 打开即可。


三、核心概念:用大白话讲清楚

1. 什么是 “调用 API”?

想象你去餐厅点菜:

  • 你(程序)告诉服务员(OpenAI 服务器):“我要一份宫保鸡丁”
  • 厨房做好后,服务员把菜端给你

调用 API 就是“点菜”:你发请求(request),AI 返回结果(response)。

2. 关键参数说明

调用 OpenAI 时,主要传这几个东西:

参数名 说明 示例值
model 使用哪个 AI 模型 gpt-3.5-turbo
messages 对话内容(角色 + 内容) [{"role":"user","content":"你好"}]
temperature 创意程度(0~2) 0.7(默认值)

🔍 messages 是重点!它是个数组,每条消息有 role(角色)和 content(内容)。

  • role: "user" 表示用户说的话
  • role: "assistant" 表示 AI 的回答
  • role: "system" 可以设定 AI 的行为(比如“你是一个客服”)

四、实战项目:用 Spring Boot 接入 OpenAI

我们要做一个简单的接口:用户输入问题,后端调用 OpenAI,返回答案

步骤 1:添加 HTTP 客户端依赖

pom.xml 中加入 OkHttp(用于发送 HTTP 请求):

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

步骤 2:配置 API Key

application.yml 中添加:

openai:
  api-key: sk-你的密钥放这里
  model: gpt-3.5-turbo

🔐 安全提示:不要把 API Key 提交到 Git! 实际项目中建议用环境变量:

openai:
  api-key: ${OPENAI_API_KEY}

步骤 3:创建请求/响应的数据类

// OpenAiRequest.java
@Data
public class OpenAiRequest {
    private String model = "gpt-3.5-turbo";
    private List<Message> messages;
    private double temperature = 0.7;

    @Data
    public static class Message {
        private String role;
        private String content;
    }
}

// OpenAiResponse.java
@Data
public class OpenAiResponse {
    private List<Choice> choices;

    @Data
    public static class Choice {
        private Message message;
    }

    @Data
    public static class Message {
        private String role;
        private String content;
    }
}

步骤 4:编写调用 OpenAI 的 Service

@Service
@RequiredArgsConstructor
public class OpenAiService {

    private final OkHttpClient httpClient = new OkHttpClient();
    @Value("${openai.api-key}")
    private String apiKey;
    @Value("${openai.model}")
    private String model;

    public String ask(String question) {
        // 1. 构造请求体
        OpenAiRequest request = new OpenAiRequest();
        OpenAiRequest.Message userMessage = new OpenAiRequest.Message();
        userMessage.setRole("user");
        userMessage.setContent(question);
        request.setMessages(List.of(userMessage));

        // 2. 转成 JSON
        ObjectMapper mapper = new ObjectMapper();
        String jsonBody;
        try {
            jsonBody = mapper.writeValueAsString(request);
        } catch (Exception e) {
            throw new RuntimeException("JSON序列化失败", e);
        }

        // 3. 发送 POST 请求
        Request httpRequest = new Request.Builder()
                .url("https://api.openai.com/v1/chat/completions")
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .post(RequestBody.create(jsonBody, MediaType.get("application/json")))
                .build();

        try (Response response = httpClient.newCall(httpRequest).execute()) {
            if (!response.isSuccessful()) {
                throw new RuntimeException("OpenAI API 调用失败: " + response.code());
            }
            String responseBody = response.body().string();
            OpenAiResponse aiResponse = mapper.readValue(responseBody, OpenAiResponse.class);
            return aiResponse.getChoices().get(0).getMessage().getContent();
        } catch (Exception e) {
            throw new RuntimeException("调用 OpenAI 出错", e);
        }
    }
}

步骤 5:创建 Controller 接口

@RestController
@RequiredArgsConstructor
public class AiController {

    private final OpenAiService openAiService;

    @PostMapping("/ask")
    public ResponseEntity<String> ask(@RequestBody Map<String, String> request) {
        String question = request.get("question");
        if (question == null || question.trim().isEmpty()) {
            return ResponseEntity.badRequest().body("问题不能为空");
        }
        String answer = openAiService.ask(question);
        return ResponseEntity.ok(answer);
    }
}

步骤 6:启动项目并测试

  1. 运行 Spring Boot 应用
  2. 用 Postman 或 curl 发送请求:
curl -X POST http://localhost:8080/ask \
  -H "Content-Type: application/json" \
  -d '{"question":"你好,请介绍一下你自己"}'

✅ 如果一切顺利,你会收到类似这样的回复:

“你好!我是由 OpenAI 开发的语言模型……”

🎉 恭喜!你已经成功把 AI 能力接入自己的项目了!


五、新手常见问题 & 解决方案

问题现象 可能原因 解决方案
401 Unauthorized API Key 错误或过期 检查 application.yml 中的 key 是否正确
429 Too Many Requests 免费额度用完或请求太频繁 等待重置,或升级付费套餐
返回空内容或乱码 JSON 解析错误 检查 ObjectMapper 是否正确处理了响应
项目启动报错 JDK 版本不对 确保使用 JDK 17
中文显示乱码 编码问题 OkHttpClient 中显式设置 UTF-8

💡 我当初第一次调用时,忘了加 Bearer 前缀(注意有个空格!),一直 401,折腾了半小时……


六、学习建议 & 下一步方向

✅ 你可以尝试的进阶功能:

  1. 增加对话历史:把之前的问答存下来,实现多轮对话
  2. 添加系统提示词:比如 你是一个电商运营专家,请用简洁语言回答
  3. 限流与缓存:避免重复提问消耗额度
  4. 前端页面:用 Vue/React 做个聊天界面,真正给运营同学用!

📚 推荐学习路径:

  1. 先掌握 RESTful API 设计
  2. 学习 Spring Boot 异常处理 & 日志
  3. 了解 API 安全(如 JWT、CORS)
  4. 尝试集成 数据库,保存用户对话记录

最后说一句:别怕犯错。我当初连 Maven 依赖都不会加,现在都能带项目了。只要你动手写代码,就离“会”不远了!


希望这篇《OpenAI API 使用教程》能帮你迈出 AI 开发的第一步。如果你是运营同学,不妨把这篇文章转给你们的开发,一起做个提效小工具!

有任何问题,欢迎留言交流。下期我们讲:如何用 AI 自动生成商品详情页? 敬请期待!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝