Azure OpenAI 的 Responses API 是一种全新的有状态 API,它将聊天补全 (Chat Completions) 和助手 (Assistants) API 的核心功能整合到统一的体验中。此外,该 API 还新增了对 computer-use-preview 模型的支持,为“计算机使用 (Computer use)”功能提供动力。
可用性与支持
API 版本
要使用 Responses API 的最新功能,必须使用 v1 版本的 API。
支持区域
Responses API 目前在以下 Azure 区域可用:
- 澳大利亚东部 (australiaeast)
- 美国东部 (eastus)
- 美国东部 2 (eastus2)
- 法国中部 (francecentral)
- 日本东部 (japaneast)
- 挪威东部 (norwayeast)
- 波兰中部 (polandcentral)
- 印度南部 (southindia)
- 瑞典中部 (swedencentral)
- 瑞士北部 (switzerlandnorth)
- 阿联酋北部 (uaenorth)
- 英国南部 (uksouth)
- 美国西部 (westus)
- 美国西部 3 (westus3)
支持模型
以下是部分支持的模型列表。请注意,并非所有模型在所有支持的区域都可用,具体可用性请查阅 Azure OpenAI 模型文档。
gpt-5gpt-5-minigpt-5-nanogpt-5-chatgpt-4ogpt-4o-minicomputer-use-previewgpt-4.1gpt-4.1-nanogpt-4.1-minigpt-image-1o1o3-minio3o4-mini
当前限制与已知问题
在使用 Responses API 时,请注意以下几点:
- 暂不支持的功能:
- 网页搜索工具。
- 通过多轮编辑和流式传输生成图像(即将推出)。
- 将图像作为文件上传后在输入中引用(即将推出)。
- 已知问题:
- 虽然支持将 PDF 作为输入文件,但将文件上传目的设置为
user_data的功能目前不受支持。 - 在流式传输模式下使用后台模式时存在性能问题,预计很快会得到解决。
- 虽然支持将 PDF 作为输入文件,但将文件上传目的设置为
快速入门
环境准备
要访问 Responses API,您需要将 OpenAI Python 库升级到最新版本。
pip install --upgrade openai
生成文本响应
以下示例展示了如何调用 Responses API 生成一个简单的文本响应。
Python (使用 API 密钥)
重要提示:请谨慎使用 API 密钥。不要将其硬编码在代码中或公开发布。建议将密钥安全地存储在 Azure Key Vault 等服务中。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
)
response = client.responses.create(
model="gpt-4.1-nano", # 替换为你的模型部署名称
input="This is a test.",
)
print(response.model_dump_json(indent=2))
Python (使用 Microsoft Entra ID)
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = OpenAI(
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
api_key=token_provider,
)
response = client.responses.create(
model="gpt-4.1-nano", # 替换为你的模型部署名称
input="This is a test"
)
print(response.model_dump_json(indent=2))
REST API
您也可以通过 cURL 直接调用 API 端点。
使用 API 密钥:
curl -X POST https://<你的资源名称>.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-nano",
"input": "This is a test"
}'
使用 Microsoft Entra ID 令牌:
curl -X POST https://<你的资源名称>.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4o",
"input": "This is a test"
}'
响应示例
调用成功后,您会收到一个类似下方的 JSON 对象:
{
"id": "resp_67cb32528d6881909eb2859a55e18a85",
"created_at": 1741369938.0,
"model": "gpt-4o-2024-08-06",
"object": "response",
"output": [
{
"id": "msg_67cb3252cfac8190865744873aada798",
"content": [
{
"annotations": [],
"text": "Great! How can I help you today?",
"type": "output_text"
}
],
"role": "assistant",
"status": null,
"type": "message"
}
],
"output_text": "Great! How can I help you today?",
"status": "completed",
"usage": {
"input_tokens": 20,
"output_tokens": 11,
"total_tokens": 31
},
"error": null
}
检索响应
您可以通过响应 ID (response_id) 检索之前创建的响应。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
)
# 使用实际的 response_id 替换
response = client.responses.retrieve("resp_67cb61fa3a448190bcf2c42d96f0d1a8")
print(response.model_dump_json(indent=2))
删除响应
默认情况下,响应数据会保留 30 天。您可以使用 delete 方法主动删除一个响应。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
# 使用实际的 response_id 替换
response = client.responses.delete("resp_67cb61fa3a448190bcf2c42d96f0d1a8")
print(response)
构建多轮对话
Responses API 是有状态的,可以轻松构建连续的多轮对话。
方法一:使用 previous_response_id 自动关联上下文
最简单的方法是在创建新响应时,将上一个响应的 id 传入 previous_response_id 参数。这样,模型就能自动获取完整的对话历史。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
# 第一轮对话
response = client.responses.create(
model="gpt-4o",
input="请定义并解释‘灾难性遗忘’这个概念。"
)
# 第二轮对话,关联上一轮的响应
second_response = client.responses.create(
model="gpt-4o",
previous_response_id=response.id,
input=[{"role": "user", "content": "用大一新生能听懂的水平再解释一下。"}]
)
print(second_response.model_dump_json(indent=2))
在第二次调用中,我们并未重复第一个问题,但通过传递 previous_response_id,模型能够理解上下文并给出恰当的回答。
方法二:手动维护对话历史
您也可以在客户端手动维护一个输入列表,将每一轮的用户输入和模型输出都追加进去,然后将其作为下一次请求的 input。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://<你的资源名称>.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
# 初始化对话历史
inputs = [{"type": "message", "role": "user", "content": "请定义并解释‘灾难性遗忘’这个概念。"}]
# 第一轮对话
response = client.responses.create(
model="gpt-4o",
input=inputs
)
# 将模型的输出添加到对话历史中
inputs += response.output
# 添加新一轮的用户输入
inputs.append({"role": "user", "type": "message", "content": "用大一新生能听懂的水平再解释一下。"})
# 第二轮对话
second_response = client.responses.create(
model="gpt-4o",
input=inputs
)
print(second_response.model_dump_json(indent=2))
👉 如果你需要 ChatGPT 代充 / Claude / Claude Code / 镜像 / 中转 API:
- 购买 / 了解更多:ai4.plus
- 备用入口:kk4099.com