上一篇 下一篇 分享链接 返回 返回顶部

ChatGPT API 接入实战:从 curl 命令到 Python、Node.js 完整调用指南

发布人:慈云数据-客服中心 发布时间:21小时前 阅读量:4

ChatGPT API接口调用教程|附完整命令

随着大语言模型应用的快速普及,越来越多开发者希望把 ChatGPT 的能力接入到自己的系统中,例如智能客服、知识库问答、内容生成、代码助手、数据分析、办公自动化等场景。相比直接在网页端使用 ChatGPT,通过 API 调用可以让模型能力嵌入到网站、App、企业后台、自动化脚本或业务流程中,从而实现更灵活、更可控的智能应用。

本文将以实战为主,系统介绍 ChatGPT API 的调用方式,包括环境准备、API Key 获取、curl 命令调用、Python 调用、Node.js 调用、流式输出、常见参数说明、错误排查以及实际开发建议。文章中会附带完整命令,方便你直接复制测试。


一、ChatGPT API 是什么?

ChatGPT API 是 OpenAI 提供的模型调用接口。开发者可以通过 HTTP 请求向模型发送文本、图片或其他结构化输入,然后获得模型生成的回复。

简单来说,网页端 ChatGPT 是一个成品应用,而 API 是提供给开发者的“能力接口”。你可以通过 API 把模型能力集成进自己的产品中。

常见使用场景包括:

  • 智能客服机器人
  • 企业知识库问答
  • 自动生成文章、标题、摘要
  • 代码解释、代码生成、代码审查
  • 多轮对话助手
  • 数据分析助手
  • 邮件、合同、报告草拟
  • 工作流自动化
  • 教育辅导与答疑系统

二、调用 API 前需要准备什么?

在正式调用 ChatGPT API 之前,需要准备以下几项内容。

1. OpenAI 账号

你需要拥有一个 OpenAI 账号,并开通 API 使用权限。登录 OpenAI 平台后,可以在开发者后台创建和管理 API Key。

2. API Key

API Key 是调用接口时的身份凭证。请求 API 时需要在请求头中携带它。

一般格式类似:

sk-xxxxxxxxxxxxxxxxxxxxxxxx

注意:API Key 必须妥善保管,不要直接写在前端代码中,也不要上传到 GitHub 等公开仓库。

3. 命令行环境

如果你使用 curl 测试接口,需要确保本机已安装 curl。

在 macOS 或 Linux 中通常默认自带 curl,可以执行:

curl --version

Windows 用户可以使用 PowerShell、Git Bash、WSL,或者新版 Windows 自带的 curl。

4. 编程语言环境

如果你希望用代码调用 API,可以准备以下环境之一:

  • Python 3.8+
  • Node.js 18+
  • Java、Go、PHP、C# 等其他后端语言

本文主要演示 curl、Python 和 Node.js 三种最常见方式。


三、设置 API Key 环境变量

为了安全起见,建议不要把 API Key 明文写入代码。推荐使用环境变量。

macOS / Linux 设置方式

export OPENAI_API_KEY="你的API_KEY"

例如:

export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"

设置完成后,可以验证一下:

echo $OPENAI_API_KEY

Windows PowerShell 设置方式

$env:OPENAI_API_KEY="你的API_KEY"

验证:

echo $env:OPENAI_API_KEY

Windows CMD 设置方式

set OPENAI_API_KEY=你的API_KEY

验证:

echo %OPENAI_API_KEY%

如果你希望永久保存环境变量,可以通过系统环境变量设置界面配置,或者使用 .env 文件配合项目读取。


四、使用 curl 调用 ChatGPT API

curl 是最直接的接口测试方式,不需要写程序,非常适合初学者快速验证 API 是否可用。

下面是一个完整的 API 调用命令:

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-mini",
    "input": "请用三句话介绍什么是人工智能。"
  }'

如果请求成功,你会收到一个 JSON 响应,里面包含模型生成的内容。

Windows PowerShell 版本

PowerShell 对引号的处理方式与 Linux/macOS 略有不同,可以使用下面的命令:

curl https://api.openai.com/v1/responses `
  -H "Content-Type: application/json" `
  -H "Authorization: Bearer $env:OPENAI_API_KEY" `
  -d '{
    "model": "gpt-4.1-mini",
    "input": "请用三句话介绍什么是人工智能。"
  }'

Windows CMD 版本

curl https://api.openai.com/v1/responses ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %OPENAI_API_KEY%" ^
  -d "{\"model\":\"gpt-4.1-mini\",\"input\":\"请用三句话介绍什么是人工智能。\"}"

五、理解请求结构

以上请求中有几个关键部分:

https://api.openai.com/v1/responses

这是 API 请求地址,也就是接口 Endpoint。

-H "Content-Type: application/json"

表示请求体是 JSON 格式。

-H "Authorization: Bearer $OPENAI_API_KEY"

表示使用 Bearer Token 方式进行身份认证。

{
  "model": "gpt-4.1-mini",
  "input": "请用三句话介绍什么是人工智能。"
}

这是请求体,主要包含模型名称和输入内容。

其中:

  • model:指定要调用的模型。
  • input:传给模型的用户输入,可以是字符串,也可以是更复杂的结构化消息。

六、使用 Python 调用 ChatGPT API

如果你要把 ChatGPT 接入自己的后端系统、脚本工具或自动化流程,Python 是非常常见的选择。

1. 安装 OpenAI SDK

pip install openai

如果你使用的是 Python 3,并且系统中同时存在 Python 2,可以使用:

pip3 install openai

2. Python 最简调用示例

新建文件 chatgpt_demo.py

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-4.1-mini",
    input="请用通俗易懂的语言解释什么是API。"
)

print(response.output_text)

运行命令:

python chatgpt_demo.py

或者:

python3 chatgpt_demo.py

这里没有在代码里显式写入 API Key,是因为 SDK 会自动读取环境变量 OPENAI_API_KEY


七、Python 多轮对话示例

在实际业务中,用户往往不是只问一个问题,而是会进行多轮对话。例如用户先问“什么是机器学习”,然后继续问“它和深度学习有什么区别”。

可以通过把上下文一起传入模型来实现多轮对话:

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "system",
        "content": "你是一名耐心、专业的AI课程老师,回答要清晰、简洁。"
    },
    {
        "role": "user",
        "content": "什么是机器学习?"
    },
    {
        "role": "assistant",
        "content": "机器学习是一种让计算机从数据中学习规律,并利用这些规律进行预测或决策的人工智能技术。"
    },
    {
        "role": "user",
        "content": "它和深度学习有什么区别?"
    }
]

response = client.responses.create(
    model="gpt-4.1-mini",
    input=messages
)

print(response.output_text)

在多轮对话中,常见角色包括:

  • system:系统指令,用于设定模型角色、风格和规则。
  • user:用户输入。
  • assistant:模型历史回复。

如果你的应用需要长期对话,需要在数据库中保存用户会话历史,并在下一次请求时带上必要上下文。不过需要注意上下文长度,不能无限制地把所有历史消息都传进去,否则会增加成本并可能超出模型上下文限制。


八、使用 Node.js 调用 ChatGPT API

Node.js 适合用来开发 Web 服务、接口中间层、前端工程化工具或服务器端应用。

1. 初始化项目

mkdir chatgpt-api-demo
cd chatgpt-api-demo
npm init -y

2. 安装 OpenAI SDK

npm install openai

3. 编写调用代码

新建文件 index.js

import OpenAI from "openai";

const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-4.1-mini",
  input: "请写一段适合小学生理解的太阳系介绍。"
});

console.log(response.output_text);

由于这里使用了 ES Module 语法,需要在 package.json 中加入:

{
  "type": "module"
}

完整 package.json 可以类似这样:

{
  "name": "chatgpt-api-demo",
  "version": "1.0.0",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "openai": "^4.0.0"
  }
}

运行:

npm start

或者:

node index.js

九、Node.js Express 接口封装示例

如果你想把 ChatGPT API 封装成自己的后端接口,可以使用 Express。

1. 安装 Express

npm install express openai

2. 创建服务端文件

新建 server.js

import express from "express";
import OpenAI from "openai";

const app = express();
const client = new OpenAI();

app.use(express.json());

app.post("/api/chat", async (req, res) => {
  try {
    const { message } = req.body;

    if (!message) {
      return res.status(400).json({
        error: "message不能为空"
      });
    }

    const response = await client.responses.create({
      model: "gpt-4.1-mini",
      input: message
    });

    res.json({
      reply: response.output_text
    });
  } catch (error) {
    console.error(error);
    res.status(500).json({
      error: "服务器内部错误"
    });
  }
});

app.listen(3000, () => {
  console.log("Server is running on http://localhost:3000");
});

3. 启动服务

node server.js

4. 测试接口

curl http://localhost:3000/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"请给我三个提高工作效率的方法。"}'

这样,你就拥有了一个自己的 ChatGPT 后端接口。前端页面、移动端 App 或企业内部系统都可以请求这个接口,而不是直接暴露 OpenAI API Key。


十、流式输出调用教程

普通调用方式会等模型完整生成后一次性返回结果。如果回复很长,用户需要等待较久。流式输出可以边生成边返回,体验更接近网页端 ChatGPT。

Python 流式输出示例

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-4.1-mini",
    input="请写一篇关于时间管理的短文,分为三点。",
    stream=True
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

运行:

python stream_demo.py

Node.js 流式输出示例

import OpenAI from "openai";

const client = new OpenAI();

const stream = await client.responses.create({
  model: "gpt-4.1-mini",
  input: "请用五个要点说明如何学习编程。",
  stream: true
});

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  }
}

流式输出适用于:

  • 聊天机器人
  • 长文生成
  • 代码生成
  • 在线客服
  • 实时写作助手

十一、常用参数说明

调用 ChatGPT API 时,除了 modelinput,还可以根据需要配置其他参数。

1. model

指定使用的模型,例如:

{
  "model": "gpt-4.1-mini"
}

一般来说,能力越强的模型效果越好,但成本和响应时间可能也更高。实际项目中可以根据场景选择模型:

  • 简单分类、摘要、改写:可选择轻量模型
  • 复杂推理、代码生成、长文分析:选择能力更强的模型
  • 高频业务接口:需要综合考虑成本、延迟和效果

2. input

用户输入内容,可以是简单字符串:

{
  "input": "帮我写一个产品介绍。"
}

也可以是结构化消息:

{
  "input": [
    {
      "role": "system",
      "content": "你是一个专业的营销文案专家。"
    },
    {
      "role": "user",
      "content": "请为一款智能手表写一段卖点文案。"
    }
  ]
}

3. temperature

temperature 用于控制生成内容的随机性。

示例:

{
  "temperature": 0.7
}

一般建议:

  • 00.3:更稳定,更适合事实问答、代码、分类
  • 0.50.8:平衡稳定性和创造性
  • 0.9 以上:更发散,更适合创意写作,但不稳定性更高

4. max_output_tokens

用于限制模型最大输出长度。

示例:

{
  "max_output_tokens": 500
}

如果你只需要简短回答,可以设置较小值;如果需要生成长文、报告、代码,则需要适当增加。


十二、带参数的完整 curl 示例

下面是一个更完整的命令,包含系统角色、温度参数和输出长度限制:

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-mini",
    "input": [
      {
        "role": "system",
        "content": "你是一名专业的中文技术写作专家,回答要结构清晰、准确、实用。"
      },
      {
        "role": "user",
        "content": "请解释RESTful API的核心概念,并举一个例子。"
      }
    ],
    "temperature": 0.4,
    "max_output_tokens": 800
  }'

这个示例适合技术问答、文档生成、教育解释等场景。


十三、常见错误与解决方法

1. 401 Unauthorized

错误原因通常是 API Key 不正确、未设置环境变量,或者请求头格式错误。

检查命令:

echo $OPENAI_API_KEY

请求头应为:

-H "Authorization: Bearer $OPENAI_API_KEY"

注意 Bearer 后面有一个空格。

2. 429 Too Many Requests

表示请求过于频繁,或者当前账号额度、速率限制不足。

解决方法:

  • 降低请求频率
  • 增加重试机制
  • 检查账户额度
  • 对高频接口做缓存
  • 使用队列削峰

3. 400 Bad Request

通常是请求参数格式错误,例如 JSON 写错、字段名错误、模型名不存在等。

可以用 JSON 校验工具检查请求体格式,也可以先使用最简单的请求测试接口是否可用。

4. 500 或 503 服务错误

可能是服务端临时异常或网络波动。建议在生产环境中加入自动重试机制,但不要无限重试。


十四、生产环境开发建议

在真实项目中调用 ChatGPT API,不能只考虑“能不能调用成功”,还要关注安全性、稳定性、成本和体验。

1. 不要在前端暴露 API Key

错误示例:

const apiKey = "sk-xxxx";

如果把 Key 写在前端代码里,用户可以通过浏览器开发者工具看到它,导致密钥泄露和费用风险。

正确做法是:

  • 前端请求你自己的后端接口
  • 后端再调用 OpenAI API
  • API Key 只保存在服务器环境变量中

2. 增加输入校验

用户输入可能为空、过长、包含异常内容。后端应进行基本校验:

  • 是否为空
  • 长度是否超限
  • 是否符合业务场景
  • 是否需要过滤敏感内容

3. 做好异常处理

调用外部 API 时,必须考虑失败情况。建议处理:

  • 网络超时
  • API Key 无效
  • 额度不足
  • 请求频率限制
  • 模型返回为空
  • 服务临时不可用

4. 控制成本

API 调用通常按输入和输出 token 计费。控制成本的方式包括:

  • 限制用户输入长度
  • 限制最大输出长度
  • 对重复问题做缓存
  • 简单任务使用更轻量模型
  • 定期统计调用量
  • 为不同用户设置调用额度

5. 保存必要日志

建议记录以下信息:

  • 请求时间
  • 用户 ID
  • 输入长度
  • 输出长度
  • 调用模型
  • 响应耗时
  • 是否成功
  • 错误类型

但要注意隐私保护,不要记录敏感个人信息,或者应进行脱敏处理。


十五、一个完整的 Python 封装示例

下面给出一个更接近实际项目的 Python 封装:

from openai import OpenAI

client = OpenAI()

def ask_chatgpt(prompt: str) -> str:
    if not prompt or not prompt.strip():
        raise ValueError("prompt不能为空")

    if len(prompt) > 2000:
        raise ValueError("prompt长度不能超过2000字符")

    try:
        response = client.responses.create(
            model="gpt-4.1-mini",
            input=[
                {
                    "role": "system",
                    "content": "你是一个专业、严谨、简洁的中文助手。"
                },
                {
                    "role": "user",
                    "content": prompt
                }
            ],
            temperature=0.5,
            max_output_tokens=800
        )

        return response.output_text

    except Exception as e:
        print(f"调用OpenAI API失败: {e}")
        return "抱歉,当前服务暂时不可用,请稍后再试。"


if __name__ == "__main__":
    question = input("请输入你的问题:")
    answer = ask_chatgpt(question)
    print("\n回答:")
    print(answer)

运行命令:

python app.py

这个示例包含了输入校验、异常处理、系统提示词和输出长度限制,更适合初步用于业务项目。


十六、总结

通过本文,你已经了解了 ChatGPT API 的基本调用流程:

  1. 注册并获取 OpenAI API Key;
  2. 使用环境变量安全保存密钥;
  3. 通过 curl 快速测试接口;
  4. 使用 Python 或 Node.js 集成到项目中;
  5. 根据业务需求设置模型、输入、温度、输出长度等参数;
  6. 在生产环境中注意安全、限流、异常处理和成本控制。

如果你只是想快速验证接口,推荐先使用 curl 命令;如果你要开发脚本或后端服务,Python 是简单高效的选择;如果你要构建 Web 服务或接口中间层,Node.js + Express 会非常方便。

ChatGPT API 的核心并不复杂,关键在于:合理设计提示词、控制上下文长度、保护 API Key、做好错误处理,并根据实际业务不断优化调用方式。掌握这些基础后,你就可以把大语言模型能力真正接入自己的应用中,构建更智能、更自动化的产品。

目录结构
全文