一文读懂 ChatGPT API 接入指南

最近 ChatGPT 突然爆火。抱着好奇的心态我也去官网注册账号体验了一下,因为网站人数太多,一时半会竟然注册不了,不过最终还是成功注册了。

还没注册的朋友们可以参考一下这篇教程 OpenAI 推出超神 ChatGPT 注册攻略来了

写的很详细,我就不再说明了。

在我和 ChatGPT 聊了十几分钟之后,这个东西令我大为震惊,虽然它有些地方显得笨笨的,带点机器人的味道,但是丝毫不影响我对它的喜爱。

感叹之余我思考了一下,能不能将它接入到我们现有的应用中。

于是我仔细浏览了一下 OpenAI 官网,果然已经提供了比较多的接口供我们使用。

准备工作 ChatGPT API 接入需要如下条件。

已成功注册 OpenAI 的账号。

创建 API KEY,这个 API KEY 是用于 HTTP 请求身份验证的,可以创建多个。如下图点击"Create new secret key",

注意这个创建之后需要马上复制好保存,关闭弹框之后就看不到了。

官方 API 文档链接 api-reference

注意 API 调用是收费的,但是 OpenAI 已经为我们免费提供了18美元的用量,足够大家放心使用。

补全接口示例

该接口功能较多,支持最常用的问答功能。

请求方式,Post

url,api.openai.com/v1/completi...

请求体 (json)。

json 复制代码
{
  "model": "text-davinci-003",
  "prompt": "Say this is a test",
  "max_tokens": 7,
  "temperature": 0,
  "top_p": 1,
  "n": 1,
  "stream": false
}

4、接口文档,platform.openai.com/docs/api-re...

请求参数解析

字段 说明
model 可选参数。语言模型,这里选择的是text-davinci-003
prompt 必选参数。即用户的输入。
max_tokens 可选参数,默认值为 16。最大分词数,会影响返回结果的长度。
temperature 可选参数,默认值为 1,取值 0-2。该值越大每次返回的结果越随机,即相似度越小。
top_p 可选参数,与temperature类似。
n 可选参数,默认值为 1。表示对每条prompt生成多少条结果。
stream 可选参数,默认值为false。表示是否回流部分结果。

请求示例

本文使用OkHttp作为网络请求框架,Moshi作为序列/反序列化框架。编写单元测试对该接口进行请求,代码如下。

1、OkHttp 的初始化。

scss 复制代码
private final OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .callTimeout(60, TimeUnit.SECONDS)
        .build();

2、请求实体类。

ini 复制代码
private static class CompletionRequest {
    private String model = "text-davinci-003";
    private String prompt;
    private Integer max_tokens = 256;
    private float temperature = 0.5f;
    private Integer top_p = 1;
    private Integer n = 1;
    private Boolean stream = false;
    private Boolean logprobs;
    private String stop;
}

3、请求方法。

使用OkHttp发送请求。需注意所有的 Post 请求需要添加头字段Authorization,值为Bearer YOUR_API_KEY来验证身份。

scss 复制代码
public void completion(String prompt) throws IOException {
    CompletionRequest completionRequest = new CompletionRequest();
    completionRequest.setPrompt(prompt);

    String reqJson = moshi.adapter(CompletionRequest.class).toJson(completionRequest);
    System.out.println("reqJson: " + reqJson);
    Request request = new Request.Builder()
            .url("https://api.openai.com/v1/completions")
            // 将 API_KEY 替换成你自己的 API_KEY
            .header("Authorization", "Bearer " + API_KEY)
            .post(RequestBody.create(MEDIA_TYPE_JSON, reqJson))
            .build();

    try (Response response = okHttpClient.newCall(request).execute()) {
        if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
        System.out.println(response.body().string());
    }
}

4、在completion()测试方法中调用上面的completion(String prompt)方法

typescript 复制代码
@Test
public void completion() {
    try {
        chatGPT.completion("你能背诵多少位圆周率");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

5、查看请求结果

swift 复制代码
{
  "id": "cmpl-6j9PhjAom9GyxBNCVacvckcVNKVZg",
  "object": "text_completion",
  "created": 1676218965,
  "model": "text-davinci-003",
  "choices": [
    {
      "text": "?\n\n我可以背诵50位圆周率:3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679。",
      "index": 0,
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 73,
    "total_tokens": 94
  }
}

总结

通过上面一个例子,相信大家已经学会了如何将 ChatGPT API 接入到自己的应用了。OpenAI 还提供了其他有用的接口,这里就不一个一个说明了,大家可以前往官网自行查看文档。

相关推荐
财经资讯数据_灵砚智能1 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月13日
大数据·人工智能·python·信息可视化·自然语言处理
零壹AI实验室8 分钟前
用AI 10分钟搭建一个监控系统:Prometheus + Grafana 实战
人工智能·grafana·prometheus
志栋智能10 分钟前
超自动化巡检:量化运维成效的标尺
运维·网络·人工智能·自动化
AI科技星11 分钟前
紫金山天文台与6G 超导太赫兹实验对比【乖乖数学】
人工智能·线性代数·机器学习·量子计算·agi
摩尔线程11 分钟前
摩尔线程携手紫光计算机发布《语音识别全栈国产化技术实践白皮书》
人工智能·语音识别·摩尔线程
字节跳动开源12 分钟前
局中局!给 Agent 装上 OpenViking,它们竟然学会了“记仇”和“伪装”?
人工智能·开源·llm
Exploring15 分钟前
通过 Vibe Coding,我开发的第一款鸿蒙 App 上架了,欢迎大家下载体验
人工智能
杀生丸学AI18 分钟前
【VALSE 2026】AI领域年度重要进展
人工智能
沪漂阿龙26 分钟前
面试题:文本表示方法详解——One-hot、Word2Vec、上下文表示、BERT词向量全解析(NLP基础高频考点)
人工智能·神经网络·自然语言处理·bert·word2vec
Luminbox紫创测控30 分钟前
氙灯太阳光模拟器加速老化测试
人工智能·测试工具·测试标准