本文介绍了在阿里云百炼平台通过API调用 GPT-OSS 系列模型的方法。
模型列表和计费
GPT-OSS系列模型是OpenAI专为智能体设计的混合专家(MoE)语言模型,支持通过OpenAI兼容的reasoning_effort字段控制生成结果的耗时,并提供强大的指令执行和推理能力功能。
DashScope SDK 不支持reasoning_effort字段。GPT-OSS模型需要添加白名单才可调用,请联系商业技术工程师(BTE)、解决方案架构师(PDSA)提交白名单,否则会产生access_denied错误。
模型名称 | 上下文长度 | 最大输入 | 最大回复长度 | 输入成本 | 输出成本 |
(Token数) | (每千Token) | ||||
gpt-oss-120b | 131,072 | 98,304 | 16,384 | 0.001元 | 0.005元 |
gpt-oss-20b | 0.007元 | 0.0035元 | |||
GPT-OSS模型不是深度思考模型,会直接输出最终结果。
关于模型限流,请参见限流。
注意事项
支持功能
OpenAI兼容支持通过reasoning_effort控制推理耗时,支持参数为low、medium、high。
提高参数值可增强输出质量,降低则能加快响应速度。建议根据具体任务进行测试,以找到最佳平衡。
不支持Function Calling、前缀续写与联网搜索。
默认参数
temperature:1.0
top_p:1.0
top_k:0
快速开始
API 使用前提:已获取API Key并完成配置API Key到环境变量。如果通过SDK调用,需要安装 OpenAI 或 DashScope SDK。
OpenAI兼容
您可以通过 OpenAI SDK 或 OpenAI 兼容的HTTP方式快速体验 GPT-OSS 模型,并通过reasoning_effort控制模型的推理耗时。
Python
示例代码
import os
from openai import OpenAI
# 初始化OpenAI客户端
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=[{"role": "user", "content": "你是谁"}],
)
print("=" * 20 + "不设置reasoning_effort" + "=" * 20)
print("=" * 20 + "推理过程" + "=" * 20)
print(completion.choices[0].message.reasoning_content)
print("=" * 20 + "输出结果" + "=" * 20)
print(completion.choices[0].message.content)
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=[{"role": "user", "content": "你是谁"}],
reasoning_effort="high",
)
print("\n" + "=" * 20 + "reasoning_effort设置为high" + "=" * 20)
print("=" * 20 + "推理过程" + "=" * 20)
print(completion.choices[0].message.reasoning_content)
print("=" * 20 + "输出结果" + "=" * 20)
print(completion.choices[0].message.content)
返回结果
====================不设置reasoning_effort====================
====================推理过程====================
The user asks in Chinese: "你是谁" meaning "Who are you?" The system instructions: we need to respond as ChatGPT, a large language model. Should answer in Chinese presumably. Should follow policy. Simple.
====================输出结果====================
我是由 OpenAI 开发的人工智能语言模型 ChatGPT。我的目标是帮助解答问题、提供信息、进行创意写作以及进行有意义的对话。如果你有什么想了解的或需要帮助的,随时告诉我!
====================reasoning_effort设置为high====================
====================推理过程====================
The user asks "你是谁" which translates to "Who are you?" in Chinese. The user is presumably speaking Chinese. The request is a simple question about the identity of the assistant. According to policy, we can respond with a brief description: "I am ChatGPT, a large language model trained by OpenAI." The user is not requesting disallowed content. So we can comply.
We should respond in Chinese (since the user used Chinese). So answer: "我是ChatGPT,一个由OpenAI训练的大型语言模型,旨在帮助回答问题、提供信息、进行对话等。" Possibly add that we are a virtual assistant. That should be fine.
We must ensure no policy violation. This is a straightforward request. So answer accordingly.
We must not reveal internal policy. So answer in Chinese.
====================输出结果====================
我是 ChatGPT,一个由 OpenAI 研发的大型语言模型。我的设计目标是帮助解答问题、提供信息、进行对话以及在各类任务中提供协助。无论是学习、工作还是日常生活中的疑问,我都可以尽力为你提供帮助。欢迎随时向我提问!Node.js
示例代码
import OpenAI from "openai";
const openai = new OpenAI(
{
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
);
const completion = await openai.chat.completions.create({
model: "gpt-oss-20b",
messages: [
{ role: "user", content: "你是谁" }
],
});
// 使用纯文本符号分隔不同区域
console.log('\n===== 不设置reasoning_effort =====');
console.log('\n===== 推理过程 =====');
console.log(completion.choices[0].message.reasoning_content);
console.log('\n===== 输出结果 =====');
console.log(completion.choices[0].message.content);
const completion2 = await openai.chat.completions.create({
model: "gpt-oss-20b",
messages: [
{ role: "user", content: "你是谁" }
],
reasoning_effort: "high",
});
// 使用纯文本符号分隔不同区域
console.log('\n===== 设置reasoning_effort为high =====');
console.log('\n===== 推理过程 =====');
console.log(completion2.choices[0].message.reasoning_content);
console.log('\n===== 输出结果 =====');
console.log(completion2.choices[0].message.content);返回结果
===== 不设置reasoning_effort =====
===== 推理过程 =====
The user asks in Chinese: "你是谁" meaning "Who are you?" We should respond in Chinese, introducing ourselves as ChatGPT, a large language model trained by OpenAI. Follow guidelines: be concise, no self-referential policy.
===== 输出结果 =====
我是由 OpenAI 开发的人工智能助手 ChatGPT,能够理解并生成多种语言的文字内容,帮助解答问题、提供信息或进行对话。有什么我可以帮您的吗?
===== 设置reasoning_effort为high =====
===== 推理过程 =====
The user asks in Chinese: "你是谁" meaning "Who are you?" The user presumably wants a response. The system says: "You are ChatGPT, a large language model trained by OpenAI." The user wants a simple answer: "I am ChatGPT, an AI language model." Possibly provide more details about capabilities. The user is Chinese, so respond in Chinese. The user likely expects a short answer.
Thus answer: "我是ChatGPT,由OpenAI训练的大型语言模型,旨在帮助回答问题、提供信息、进行对话等。"
We can also mention we can speak Chinese.
We must follow policy: no disallowed content. Provide answer.
Thus final.
===== 输出结果 =====
我是 ChatGPT,一个由 OpenAI 训练的大型语言模型。我的任务是通过自然语言与人交流,帮助解答问题、提供信息、进行创意写作、编程辅助以及其他各种文字相关的任务。无论是聊天、学习、工作还是娱乐,我都可以尽力提供帮助。有什么需要我协助的吗?HTTP
示例代码
curl
# 可在请求体中设置reasoning_effort
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"messages": [
{
"role": "user",
"content": "你是谁"
}
]
}'返回结果
{
"choices": [
{
"message": {
"content": "我是ChatGPT,一个由OpenAI开发的大型语言模型。我的目标是帮助解答问题、提供信息、进行创意写作以及进行各种有趣的对话。如果你有任何想了解的内容或需要帮助的地方,随时告诉我!祝你有愉快的聊天体验。",
"reasoning_content": 'The user asks in Chinese: "你是谁" meaning "Who are you?" The user likely wants a response in Chinese. The assistant should respond appropriately, introducing itself. Follow policy: no disallowed content. Just answer.',
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {"prompt_tokens": 73, "completion_tokens": 121, "total_tokens": 194},
"created": 1756976082,
"system_fingerprint": null,
"model": "gpt-oss-20b",
"id": "chatcmpl-c9cf5611-8d34-9918-a881-4b7434f7d872"
}DashScope
您可以通过 DashScope SDK 或 HTTP 方式快速体验 GPT-OSS 模型,DashScope SDK 不支持reasoning_effort字段。
Python
示例代码
import os
import dashscope
messages = [
{'role': 'user', 'content': '你是谁?'}
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="gpt-oss-20b",
messages=messages,
# result_format参数不可以设置为"text"。
result_format='message'
)
print("=" * 20 + "推理过程" + "=" * 20)
print(response.output.choices[0].message.reasoning_content)
print("=" * 20 + "输出结果" + "=" * 20)
print(response.output.choices[0].message.content)
返回结果
====================推理过程====================
The user asks in Chinese: "你是谁?" (Who are you?). We should respond in Chinese, as per language detection. The system says: "You are ChatGPT, a large language model trained by OpenAI." So answer accordingly, maybe with a brief intro.
====================输出结果====================
我是由 OpenAI 开发的人工智能语言模型 ChatGPT。我的训练基于大量文本数据,能够理解和生成多种语言的文字,帮助解答问题、提供信息、进行创意写作以及进行对话交流。如果你有任何想了解或需要帮助的地方,随时告诉我!Java
示例代码
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("你是谁?")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("gpt-oss-20b")
.messages(Arrays.asList(userMsg))
// 不可以设置为"text"
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}返回结果
我是由 OpenAI 开发的人工智能助手,旨在帮助解答问题、提供信息和进行对话。有什么我可以帮您的吗?HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"input":{
"messages":[
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"result_format": "message"
}
}'返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是由 OpenAI 开发的人工智能语言模型 ChatGPT,基于 GPT‑4 架构。我的任务是理解并生成自然语言,帮助解答问题、提供信息、进行创意写作、编程协助等。如果你有任何需要,随时告诉我!",
"reasoning_content": "The user asks in Chinese: \"你是谁?\" which means \"Who are you?\" The system says we should respond in Chinese. So we answer in Chinese, introducing ourselves as ChatGPT, a large language model trained by OpenAI. Also mention capabilities. Should be concise."
}
}
]
},
"usage": {
"total_tokens": 202,
"output_tokens": 128,
"input_tokens": 74
},
"request_id": "b8afd270-6a74-9ec2-9351-acdb35799794"
}多轮对话
阿里云百炼提供的 GPT-OSS API 默认不会记录您的历史对话信息。多轮对话功能可以让大模型“拥有记忆”,满足如追问、信息采集等需要连续交流的场景。
OpenAI兼容
您可以通过 OpenAI SDK 或 OpenAI 兼容的 HTTP 方式使用多轮对话功能。
Python
示例代码
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# 通过 messages 数组实现上下文管理
messages = [{"role": "user", "content": "你好"}]
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=messages
)
print("=" * 20 + "第一轮对话" + "=" * 20)
print(completion.choices[0].message.content)
messages.append({"role": "assistant", "content": completion.choices[0].message.content})
messages.append({"role": "user", "content": "你是谁"})
print("=" * 20 + "第二轮对话" + "=" * 20)
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=messages
)
print(completion.choices[0].message.content)
返回结果
====================第一轮对话====================
你好!有什么我可以帮助你的吗?
====================第二轮对话====================
我是由 OpenAI 开发的人工智能助手,基于 GPT‑4 架构。我的目标是帮助你解答问题、提供信息、协助完成各种任务。如果你有任何想了解的内容或需要帮助的地方,随时告诉我!Node.js
示例代码
import OpenAI from "openai";
import * as readline from 'readline';
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
});
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let messages = [];
async function chat() {
while (true) {
const userInput = await new Promise(resolve => {
rl.question('用户:', resolve);
});
if (userInput.toLowerCase() === '退出') {
break;
}
messages.push({ role: "user", content: userInput });
try {
const completion = await openai.chat.completions.create({
model: "gpt-oss-20b",
messages: messages
});
// 使用纯文本符号分隔不同区域
console.log('\n===== 用户输入 =====');
console.log(userInput);
console.log('\n===== 助手回复 =====');
const aiResponse = completion.choices[0].message.content;
console.log(aiResponse);
console.log('\n====================\n');
messages.push({ role: "assistant", content: aiResponse });
} catch (error) {
console.error('发生错误:', error);
break;
}
}
rl.close();
}
console.log('请输入内容(输入"退出"结束对话)');
chat();HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"messages": [
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,有什么我可以帮忙的吗?"
},
{
"role": "user",
"content": "你是谁?"
}
]
}'返回结果
{
"choices": [
{
"message": {
"content": "我是由 OpenAI 开发的人工智能助手 ChatGPT。基于 GPT‑4 架构,我可以用自然语言与您交流,帮助解答问题、提供信息、创作文本以及完成各种任务。如果有什么需要,随时告诉我!",
"reasoning_content": "The user asks \"你是谁?\" (Who are you?). The assistant should answer in Chinese, as previous conversation is in Chinese. Should describe being ChatGPT, a large language model trained by OpenAI. Should be concise but friendly.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 99,
"completion_tokens": 112,
"total_tokens": 211
},
"created": 1756977739,
"system_fingerprint": null,
"model": "gpt-oss-20b",
"id": "chatcmpl-1e813a5a-edb8-98aa-a1d1-e60d0c8cea68"
}DashScope
您可以通过 DashScope SDK 或 HTTP 方式使用多轮对话功能。
Python
示例代码
import os
import dashscope
# 通过 messages 数组实现上下文管理
messages = [
{'role': 'user', 'content': '你好'}
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="gpt-oss-20b",
messages=messages,
result_format='message'
)
print("=" * 20 + "第一轮对话" + "=" * 20)
print(response.output.choices[0].message.content)
messages.append({'role': 'assistant', 'content': response.output.choices[0].message.content})
messages.append({'role': 'user', 'content': '你是谁'})
print("=" * 20 + "第二轮对话" + "=" * 20)
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="gpt-oss-20b",
messages=messages,
# result_format参数不可以设置为"text"。
result_format='message'
)
print(response.output.choices[0].message.content)返回结果
====================第一轮对话====================
你好!有什么我可以帮你的吗?祝你今天愉快!
====================第二轮对话====================
我是由 OpenAI 开发的人工智能助手 ChatGPT。我的核心是一种大型语言模型,经过大量文本数据的训练,能够理解和生成自然语言。无论是回答问题、提供信息、帮助写作,还是进行日常对话,我都可以尽力协助你。有什么需要帮助的,随时告诉我吧!Java
示例代码
// dashscope SDK的版本 >= 2.18.2
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message userMsg1 = Message.builder()
.role(Role.USER.getValue())
.content("你好")
.build();
Message AssistantMsg = Message.builder()
.role(Role.ASSISTANT.getValue())
.content("你好!很高兴见到你,有什么我可以帮忙的吗?")
.build();
Message UserMsg2 = Message.builder()
.role(Role.USER.getValue())
.content("你是谁")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("gpt-oss-20b")
.messages(Arrays.asList(userMsg1,AssistantMsg,UserMsg2))
// 不可以设置为"text"
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println("回复内容:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}返回结果
回复内容:
我是由 OpenAI 开发的人工智能语言模型 ChatGPT,旨在通过自然语言与人交流,帮助解答问题、提供信息、进行创意写作、学习辅导等。如果你有任何想了解的内容或需要帮助的地方,随时告诉我!祝你有个愉快的聊天体验。HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"input":{
"messages":[
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,有什么我可以帮忙的吗?"
},
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"result_format": "message"
}
}'返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是 ChatGPT,一个由 OpenAI 开发的大型语言模型。我的任务是帮助解答问题、提供信息、进行对话以及协助完成各种文字相关的任务。如果你有什么想了解的或需要帮助的,随时告诉我!",
"reasoning_content": "We need to respond in Chinese, as user is speaking Chinese. The user asks \"你是谁?\" (Who are you?). We should answer briefly, maybe mention we are ChatGPT, a language model, etc. Follow policy."
}
}
]
},
"usage": {
"total_tokens": 209,
"output_tokens": 110,
"input_tokens": 99
},
"request_id": "ddb36926-db52-904e-9eed-1ec01f93fd1d"
}流式输出
用流式输出的方式调用 GPT-OSS,能够实时返回中间结果,减少用户的等待时间,并降低请求的超时风险。
OpenAI兼容
Python
示例代码
from openai import OpenAI
import os
# 初始化OpenAI客户端
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
answer_content = "" # 定义完整回复
# 创建聊天完成请求
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=[
{"role": "user", "content": "你是谁"}
],
stream=True,
# 解除以下注释会在最后一个chunk返回Token使用量
# stream_options={
# "include_usage": True
# }
)
for chunk in completion:
# 如果chunk.choices为空,则打印usage
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# 在reasoning effort阶段,模型不输出内容,内容为空
if delta.content!=None:
# 打印回复过程
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(answer_content)返回结果
我是由 OpenAI 开发的人工智能语言模型 ChatGPT,旨在帮助解答问题、提供信息、进行对话以及协助完成各种文字相关的任务。如果你有任何想了解或需要帮助的地方,随时告诉我!Node.js
示例代码
import OpenAI from "openai";
import process from 'process';
// 初始化 openai 客户端
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY, // 从环境变量读取
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
});
let answerContent = '';
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'gpt-oss-20b',
messages: [{ role: 'user', content: '你是谁' }],
stream: true
});
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nUsage:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// 处理正式回复
if (delta.content) {
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();返回结果
我是由 OpenAI 开发的人工智能语言模型 ChatGPT,能够理解和生成多种语言的文字内容,帮助解答问题、提供信息或进行交流。祝你使用愉快!HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"messages": [
{
"role": "user",
"content": "你是谁"
}
],
"stream": true,
"stream_options": {
"include_usage": true
}
}'返回结果
data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"finish_reason":null,"logprobs":null,"delta":{"content":null},"index":0}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"delta":{"content":"","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
...
data: {"choices":[{"delta":{"content":"好","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"delta":{"content":"的一","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"delta":{"content":"天","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"delta":{"content":"。","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":73,"completion_tokens":129,"total_tokens":202},"created":1756978654,"system_fingerprint":null,"model":"gpt-oss-20b","id":"chatcmpl-424b1dd0-573a-922a-a97f-1c12228aba7c"}
data: [DONE]DashScope
Python
示例代码
import os
import dashscope
messages = [
{'role': 'user', 'content': '你是谁?'}
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="gpt-oss-20b",
messages=messages,
# result_format参数不可以设置为"text"。
result_format='message',
stream=True,
incremental_output=True
)
answer_content = ""
for chunk in response:
print(chunk.output.choices[0].message.content, end="",flush=True)
answer_content += chunk.output.choices[0].message.content
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(f"{answer_content}")返回结果
我是 ChatGPT,一个由 OpenAI 开发的大型语言模型。我的设计目标是帮助解答问题、提供信息、进行创意写作以及进行各种语言交流。如果你有任何想了解或需要帮助的地方,随时告诉我!Java
示例代码
// dashscope SDK的版本 >= 2.18.2
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import java.lang.System;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder finalContent = new StringBuilder();
private static void handleGenerationResult(GenerationResult message) {
String content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!content.isEmpty()) {
finalContent.append(content);
System.out.print(content);
}
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("gpt-oss-20b")
.messages(Arrays.asList(userMsg))
// 不可以设置为"text"
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.incrementalOutput(true)
.build();
}
public static void streamCallWithMessage(Generation gen, Message userMsg)
throws NoApiKeyException, ApiException, InputRequiredException {
GenerationParam param = buildGenerationParam(userMsg);
Flowable<GenerationResult> result = gen.streamCall(param);
result.blockingForEach(message -> handleGenerationResult(message));
}
public static void main(String[] args) {
try {
Generation gen = new Generation();
Message userMsg = Message.builder().role(Role.USER.getValue()).content("你是谁?").build();
streamCallWithMessage(gen, userMsg);
// 打印最终结果
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完整回复====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}返回结果
我是 ChatGPT,一个由 OpenAI 研发并训练的大型语言模型。我的任务是帮助解答问题、提供信息和进行交流。有什么我可以帮您的吗?HTTP
示例代码
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
"model": "gpt-oss-20b",
"input":{
"messages":[
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"result_format": "message",
"incremental_output": true
}
}'返回结果
id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"}}]},"usage":{"total_tokens":74,"input_tokens":74,"output_tokens":0},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}
id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"}}]},"usage":{"total_tokens":75,"input_tokens":74,"output_tokens":1},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}
id:3
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"}}]},"usage":{"total_tokens":76,"input_tokens":74,"output_tokens":2},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}
...
id:104
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"我","reasoning_content":"","role":"assistant"}}]},"usage":{"total_tokens":177,"input_tokens":74,"output_tokens":103},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}
id:105
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"}}]},"usage":{"total_tokens":178,"input_tokens":74,"output_tokens":104},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}
id:106
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":179,"input_tokens":74,"output_tokens":105},"request_id":"e1c5bd93-f37d-9257-8c4e-2ef616d4522f"}结构化输出
执行信息抽取或结构化数据生成任务时,大模型可能返回多余文本(如 ```json)导致下游解析失败。开启结构化输出可以确保 GPT-OSS 输出标准格式的 JSON 字符串。
OpenAI兼容
Python
示例代码
from openai import OpenAI
import os
client = OpenAI(
# 如果没有配置环境变量,请用API Key将下行替换为:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="gpt-oss-20b",
messages=[
{
"role": "system",
"content": "请抽取用户的姓名与年龄信息,以JSON格式返回"
},
{
"role": "user",
"content": "json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游",
},
],
response_format={"type": "json_object"}
)
json_string = completion.choices[0].message.content
print(json_string)返回结果
{
"姓名": "刘五",
"年龄": 34
}Node.js
示例代码
import OpenAI from "openai";
const openai = new OpenAI({
// 如果没有配置环境变量,请用API Key将下行替换为:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
});
const completion = await openai.chat.completions.create({
model: "gpt-oss-20b",
messages: [
{
role: "system",
content: "请抽取用户的姓名与年龄信息,以JSON格式返回"
},
{
role: "user",
content: "json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游"
}
],
response_format: {
type: "json_object"
}
});
const jsonString = completion.choices[0].message.content;
console.log(jsonString);返回结果
{
"姓名": "刘五",
"年龄": 34
}HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"messages": [
{
"role": "system",
"content": "你需要提取出name(名字,为string类型)、age(年龄,为string类型)与email(邮箱,为string类型),请输出JSON 字符串,不要输出其它无关内容。\n示例:\nQ:我叫张三,今年25岁,邮箱是zhangsan@example.com\nA:{\"name\":\"张三\",\"age\":\"25岁\",\"email\":\"zhangsan@example.com\"}\nQ:我叫李四,今年30岁,我的邮箱是lisi@example.com\nA:{\"name\":\"李四\",\"age\":\"30岁\",\"email\":\"lisi@example.com\"}\nQ:我叫王五,我的邮箱是wangwu@example.com,今年40岁\nA:{\"name\":\"王五\",\"age\":\"40岁\",\"email\":\"wangwu@example.com\""
},
{
"role": "user",
"content": "json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com"
}
],
"response_format": {
"type": "json_object"
}
}'返回结果
{
"choices": [
{
"message": {
"content": "{\"name\":\"刘五\",\"age\":\"34岁\",\"email\":\"liuwu@example.com\"}",
"reasoning_content": "The system says extract name, age (as string), email and output JSON string only, no extra. The user says \"json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com\". So we need to output {\"name\":\"刘五\",\"age\":\"34岁\",\"email\":\"liuwu@example.com\"}.\n\nMake sure formatting exactly as examples: no extra spaces? The examples have no spaces after commas? Actually examples: {\"name\":\"张三\",\"age\":\"25岁\",\"email\":\"zhangsan@example.com\"}.\n\nSo output exactly that.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 251,
"completion_tokens": 146,
"total_tokens": 397
},
"created": 1756994681,
"system_fingerprint": null,
"model": "gpt-oss-20b",
"id": "chatcmpl-f867c1ed-b693-94a0-89a0-e52e1c0c4508"
}DashScope
Python
示例代码
import os
import dashscope
messages = [
{
"role": "system",
"content": "请抽取用户的姓名与年龄信息,以JSON格式返回"
},
{
"role": "user",
"content": "json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游",
},
]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="gpt-oss-20b",
messages=messages,
result_format='message',
response_format={'type': 'json_object'}
)
json_string = response.output.choices[0].message.content
print(json_string)返回结果
{
"姓名": "刘五",
"年龄": 34
}Java
示例代码
// DashScope Java SDK 版本需要不低于 2.18.4
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.common.ResponseFormat;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("请抽取用户的姓名与年龄信息,以JSON格式返回")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游")
.build();
ResponseFormat jsonMode = ResponseFormat.builder().type("json_object").build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("gpt-oss-20b")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.responseFormat(jsonMode)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}返回结果
{
"姓名": "刘五",
"年龄": 34
}HTTP
示例代码
curl
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-20b",
"input": {
"messages": [
{
"role": "system",
"content": "请抽取用户的姓名与年龄信息,以JSON格式返回"
},
{
"role": "user",
"content": "json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游"
}
]
},
"parameters": {
"result_format": "message",
"response_format": {
"type": "json_object"
}
}
}'返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "{\n \"name\": \"刘五\",\n \"age\": 34\n}",
"reasoning_content": "The user says: \"json:大家好,我叫刘五,今年34岁,邮箱是liuwu@example.com,平时喜欢打篮球和旅游\". The system request: \"请抽取用户的姓名与年龄信息,以JSON格式返回\". So we need to extract name and age. Name: 刘五. Age: 34. Return JSON. Probably format {\"name\": \"刘五\", \"age\": 34}."
}
}
]
},
"usage": {
"total_tokens": 231,
"output_tokens": 116,
"input_tokens": 115
},
"request_id": "f42e1fc7-4994-94d1-a0fd-88d647fc034a"
}错误码
如果执行报错,请参见错误信息进行解决。
常见问题
Q:如何部署 GPT-OSS 模型?
A:我们推荐您通过本文介绍的阿里云百炼 API 方式调用。如有私有化部署需求,请参见阿里云 GPT-OSS 解决方案,涵盖了通过 PAI、GPU 云服务器等部署模型的方式。