创建Message对话,并获取模型生成的响应数据。该接口兼容 Anthropic Messages API 格式,可直接复用 Anthropic SDK 或相同的 JSON 结构接入。
本文仅列出当前已确认支持的字段;未在本文出现的字段请不要传入。
请求地址
POST https://api.stepfun.com/v1/messages
Step Plan 场景请使用 POST https://api.stepfun.com/step_plan/v1/messages
请求参数
model string required
模型名称,填写当前账号已开通的公开模型名称,例如 step-3.5-flash
messages object array required
对话消息列表,至少一条
role string
角色名称,常用取值为 user、assistant
content string or object array
纯文本,或 Content Block 数组
- 纯文本消息
string
- Content Block 数组
object array
- 文本块
object
type string
总为 text
text string
文本内容
- 图片块
object
type string
总为 image
source object
图片来源,支持 URL 或 Base64 两种写法
- URL 写法:
{ "type": "url", "url": "https://..." }
- Base64 写法:
{ "type": "base64", "media_type": "image/png", "data": "..." }
- 工具调用块
object(模型发起)
type string
总为 tool_use
id string
工具调用的唯一标识
name string
调用的工具名称
input object
传递给工具的参数
- 工具结果块
object(用户回传)
type string
总为 tool_result
tool_use_id string
对应工具调用的 ID
content string or object array
工具执行结果
is_error boolean
是否执行出错
max_tokens int required
最大生成 token 数,必须大于 0
system string or array optional
系统提示词;可传字符串,或由文本块组成的数组
tools object array optional
工具定义列表
name string
工具名称
description string
工具描述,帮助模型理解何时使用该工具
input_schema object
JSON Schema,用于描述工具入参
output_config object optional
结构化输出配置
effort string
控制模型的思考深度,可选值为 low、high。仅 step-3.5-flash-2603 支持。
stream boolean optional
是否启用流式返回,默认非流式
temperature float optional
采样温度,取值范围 0 到 2
top_p float optional
nucleus sampling 参数,取值范围大于 0 且小于等于 1
top_k int optional
top-k 参数,取值范围 0 到 500
stop_sequences string array optional
停止序列列表,生成内容中遇到任意一个停止序列时停止生成
请求响应
非流式响应
Content-Type: application/json
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 20,
"output_tokens": 12
},
"content": [
{
"type": "text",
"text": "我是一个 AI 助手。"
}
]
}
响应字段说明
id string
消息的唯一标识
type string
对象类型,总是为 message
role string
角色名称,总是为 assistant
content object array
返回内容块列表;常见为 text,工具调用场景下也可能返回 tool_use
stop_reason string
生成停止原因,可选值为 end_turn、tool_use、max_tokens
usage object
token 用量统计,至少包含 input_tokens 与 output_tokens
流式响应
Content-Type: text/event-stream
流式返回采用标准 SSE 格式,每个事件包含 event: 和 data: 两部分,data: 的内容为 JSON。
常见事件类型:message_start、content_block_start、content_block_delta、content_block_stop、message_delta、message_stop、ping
当返回工具调用参数时,content_block_delta.delta.type 可能为 input_json_delta。
event: message_start
data: {"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","model":"step-3.5-flash"}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}
event: message_delta
data: {"type":"message_delta","stop_reason":"end_turn","usage":{"input_tokens":20,"output_tokens":12}}
event: message_stop
data: {"type":"message_stop"}
基础对话
流式响应
使用 output_config.effort
from anthropic import Anthropic
client = Anthropic(api_key="STEP_API_KEY", base_url="https://api.stepfun.com/v1")
message = client.messages.create(
model="step-3.5-flash",
max_tokens=1024,
system="你是由阶跃星辰提供的AI聊天助手,你擅长中文、英文及多种语言。在保证用户数据安全的前提下,快速精准地回答用户问题。",
messages=[
{
"role": "user",
"content": "请用一句话介绍你自己。"
}
],
)
print(message)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "STEP_API_KEY",
baseURL: "https://api.stepfun.com/v1"
});
async function main() {
const message = await client.messages.create({
model: "step-3.5-flash",
max_tokens: 1024,
system: "你是由阶跃星辰提供的AI聊天助手,你擅长中文、英文及多种语言。在保证用户数据安全的前提下,快速精准地回答用户问题。",
messages: [
{
role: "user",
content: "请用一句话介绍你自己。"
}
]
});
console.log(JSON.stringify(message));
}
main();
curl https://api.stepfun.com/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $STEP_API_KEY" \
-d '{
"model": "step-3.5-flash",
"max_tokens": 1024,
"system": "你是由阶跃星辰提供的AI聊天助手,你擅长中文、英文及多种语言。在保证用户数据安全的前提下,快速精准地回答用户问题。",
"messages": [
{
"role": "user",
"content": "请用一句话介绍你自己。"
}
]
}'
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 35,
"output_tokens": 20
},
"content": [
{
"type": "text",
"text": "我是阶跃星辰提供的AI聊天助手,能够用中文、英文等多种语言快速精准地回答您的问题。"
}
]
}
from anthropic import Anthropic
client = Anthropic(api_key="STEP_API_KEY", base_url="https://api.stepfun.com/v1")
with client.messages.stream(
model="step-3.5-flash",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "请用一句话介绍你自己。"
}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print()
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "STEP_API_KEY",
baseURL: "https://api.stepfun.com/v1"
});
async function main() {
const stream = client.messages.stream({
model: "step-3.5-flash",
max_tokens: 1024,
messages: [
{
role: "user",
content: "请用一句话介绍你自己。"
}
]
});
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}
console.log();
}
main();
curl https://api.stepfun.com/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $STEP_API_KEY" \
-d '{
"model": "step-3.5-flash",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": "请用一句话介绍你自己。"
}
]
}'
from anthropic import Anthropic
client = Anthropic(api_key="STEP_API_KEY", base_url="https://api.stepfun.com/v1")
message = client.messages.create(
model="step-3.5-flash-2603",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "解释一下量子计算的基本原理。"
}
],
extra_body={
"output_config": {
"effort": "high"
}
}
)
print(message)
curl https://api.stepfun.com/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $STEP_API_KEY" \
-d '{
"model": "step-3.5-flash-2603",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "解释一下量子计算的基本原理。"
}
],
"output_config": {
"effort": "high"
}
}'