ChatGPT API 接入实战:从 curl 命令到 Python、Node.js 完整调用指南
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 时,除了 model 和 input,还可以根据需要配置其他参数。
1. model
指定使用的模型,例如:
{
"model": "gpt-4.1-mini"
}
一般来说,能力越强的模型效果越好,但成本和响应时间可能也更高。实际项目中可以根据场景选择模型:
- 简单分类、摘要、改写:可选择轻量模型
- 复杂推理、代码生成、长文分析:选择能力更强的模型
- 高频业务接口:需要综合考虑成本、延迟和效果
2. input
用户输入内容,可以是简单字符串:
{
"input": "帮我写一个产品介绍。"
}
也可以是结构化消息:
{
"input": [
{
"role": "system",
"content": "你是一个专业的营销文案专家。"
},
{
"role": "user",
"content": "请为一款智能手表写一段卖点文案。"
}
]
}
3. temperature
temperature 用于控制生成内容的随机性。
示例:
{
"temperature": 0.7
}
一般建议:
0到0.3:更稳定,更适合事实问答、代码、分类0.5到0.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 的基本调用流程:
- 注册并获取 OpenAI API Key;
- 使用环境变量安全保存密钥;
- 通过
curl快速测试接口; - 使用 Python 或 Node.js 集成到项目中;
- 根据业务需求设置模型、输入、温度、输出长度等参数;
- 在生产环境中注意安全、限流、异常处理和成本控制。
如果你只是想快速验证接口,推荐先使用 curl 命令;如果你要开发脚本或后端服务,Python 是简单高效的选择;如果你要构建 Web 服务或接口中间层,Node.js + Express 会非常方便。
ChatGPT API 的核心并不复杂,关键在于:合理设计提示词、控制上下文长度、保护 API Key、做好错误处理,并根据实际业务不断优化调用方式。掌握这些基础后,你就可以把大语言模型能力真正接入自己的应用中,构建更智能、更自动化的产品。