Alibaba Cloud Model Studio:Pesan yang Kompatibel dengan Anthropic
Last Updated:Sep 02, 2026
Migrasikan aplikasi Anthropic Anda ke Model Studio dengan mengubah tiga pengaturan. Topik ini mencakup parameter permintaan dan respons beserta contoh kode.
Untuk memigrasikan aplikasi Anthropic yang sudah ada ke Model Studio, ubah pengaturan berikut:
base_url: Ganti dengan titik akhir Model Studio yang tercantum di bawah.
model: Ganti dengan nama model yang didukung, seperti qwen3.7-plus.
PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing), Singapura, dan China (Hong Kong). Domain khusus baru ini memberikan performa lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru berikut:
China (Beijing): dari https://dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
Singapura: dari https://dashscope-intl.aliyuncs.com ke https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
China (Hong Kong): dari https://cn-hongkong.dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com
{WorkspaceId} adalah ID ruang kerja Anda, yang dapat ditemukan pada halaman Detail Ruang Kerja di Konsol Alibaba Cloud Model Studio. Domain lama tetap berfungsi penuh.
Untuk model deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash, deepseek-v4-flash-0731, qwen3.8-max, dan qwen3.8-flash: max_tokens adalah jumlah maksimum token total untuk konten balasan dan konten rantai-pikiran. Generasi berhenti lebih awal ketika output model melebihi nilai ini, dan stop_reason bernilai max_tokens.
max_tokens membatasi panjang gabungan konten balasan dan proses berpikir. Saat rantai-pikiran diperluas diaktifkan, max_tokens > thinking.budget_tokens
Untuk glm-5.2: Jika parameter thinking.budget_tokens tidak diberikan, max_tokens adalah jumlah maksimum token total untuk konten balasan dan konten rantai-pikiran. Generasi berhenti lebih awal ketika output model melebihi nilai ini, dan stop_reason bernilai max_tokens. Jika parameter thinking.budget_tokens diberikan, max_tokens hanya membatasi jumlah maksimum token untuk konten balasan, sedangkan token berpikir dikontrol secara terpisah oleh thinking.budget_tokens.
Untuk model lainnya: max_tokens membatasi jumlah maksimum token untuk konten balasan. Jika konten yang dihasilkan melebihi nilai ini, generasi berhenti lebih awal dan stop_reason bernilai max_tokens.
max_tokens tidak membatasi panjang proses berpikir. Saat rantai-pikiran diperluas diaktifkan, token berpikir dikontrol secara terpisah oleh thinking.budget_tokens.
systemstring atau array (Opsional)
Prompt sistem yang menentukan perilaku model. system merupakan parameter tingkat atas — array messages tidak menerima peran system.
String setara dengan satu blok type="text". Gunakan array untuk menandai titik pemutusan cache prompt.
Properti
typestring(Wajib)
Nilai tetap: text.
textstring(Wajib)
Teks prompt sistem.
cache_controlobjek (Opsional)
Titik pemutusan cache prompt. Pada cache hit, permintaan selanjutnya ditagih dengan laju baca cache. Hanya berisi properti type dengan nilai tetap ephemeral.
messagesarray(Wajib)
Array pesan, disusun secara bergantian dalam giliran user/assistant.
Elemen array messages
rolestring(Wajib)
Peran pesan. Nilai valid: user, assistant.
contentstring atau array(Wajib)
Berupa string teks biasa atau array konten terstruktur. String setara dengan satu blok content dengan type="text".
Jenis elemen array content
Teks
Properti
typestring(Wajib)
Nilai tetap: text.
textstring(Wajib)
Konten teks.
cache_controlobjek (Opsional)
Titik pemutusan cache prompt. Hanya berisi properti type dengan nilai tetap ephemeral.
Gambar (memerlukan model vision)
Properti
typestring(Wajib)
Nilai tetap: image.
sourceobjek(Wajib)
Sumber data gambar.
Properti
typestring(Wajib)
Nilai valid: url (URL gambar publik), base64 (data terenkripsi Base64).
urlstring
URL publik gambar. Wajib jika type bernilai url.
media_typestring
Tipe MIME gambar, seperti image/jpeg. Wajib jika type bernilai base64.
datastring
Data gambar terenkripsi Base64. Wajib jika type bernilai base64.
Video (memerlukan model vision)
Properti
typestring(Wajib)
Nilai tetap: video.
sourceobjek(Wajib)
Sumber data video.
Properti
typestring(Wajib)
Nilai valid: url (URL video publik), base64 (data terenkripsi Base64).
urlstring
URL publik video. Wajib jika type bernilai url.
media_typestring
Tipe MIME video, seperti video/mp4. Wajib jika type bernilai base64.
datastring
Data video terenkripsi Base64. Wajib jika type bernilai base64.
Penggunaan tool (peran assistant; instruksi pemanggilan tool yang dikembalikan oleh model)
Properti
typestring(Wajib)
Nilai tetap: tool_use.
idstring(Wajib)
Identifier unik pemanggilan tool, digunakan untuk mengaitkan hasil dalam tool_result berikutnya.
namestring(Wajib)
Nama tool yang dipanggil.
inputobjek(Wajib)
Parameter input pemanggilan tool. Strukturnya ditentukan oleh input_schema tool yang sesuai dalam tools.
cache_controlobjek (Opsional)
Titik pemutusan cache prompt. Hanya berisi properti type dengan nilai tetap ephemeral. Konten pemanggilan tool berpartisipasi dalam prefiks cache.
Hasil tool (peran user; hasil eksekusi tool yang dikirim kembali ke model)
Properti
typestring(Wajib)
Nilai tetap: tool_result.
tool_use_idstring(Wajib)
Bersesuaian dengan id dalam blok tool_use.
contentstring(Wajib)
Konten yang dikembalikan oleh tool.
cache_controlobjek (Opsional)
Titik pemutusan cache prompt. Hanya berisi properti type dengan nilai tetap ephemeral.
streamboolean (Opsional)
Apakah akan mengaktifkan streaming. Nilai default: false.
temperaturenumber (Opsional)
Mengontrol keragaman teks yang dihasilkan. Rentang nilai: [0, 2). Nilai yang lebih tinggi menghasilkan respons yang lebih acak.
CatatanRentang ini berbeda dari rentang resmi Anthropic yaitu [0.0, 1.0]. Saat memigrasikan dari Anthropic, pastikan untuk memverifikasi nilai parameter ini.
top_pnumber (Opsional)
Ambang batas probabilitas pengambilan sampel nucleus.
Kedua parameter temperature dan top_p dapat mengontrol keragaman teks yang dihasilkan. Kami merekomendasikan hanya mengatur salah satunya. Untuk informasi lebih lanjut, lihat Ikhtisar.
top_kinteger (Opsional)
Ukuran kumpulan kandidat selama pengambilan sampel.
stop_sequencesarray (Opsional)
Urutan teks yang memicu penghentian generasi. Output berakhir sebelum urutan yang cocok.
CatatanSetelah pencocokan, stop_reason dalam respons tetap bernilai end_turn, dan respons tidak menyertakan urutan yang cocok.
thinkingobjek (Opsional)
Konfigurasi rantai-pikiran diperluas. Saat diaktifkan, model melakukan penalaran sebelum merespons, dan respons mencakup blok konten bertipe thinking. Tidak semua model mendukung mode berpikir.
Properti
typestring(Wajib)
Nilai valid: enabled (aktifkan mode berpikir), disabled (nonaktifkan mode berpikir).
budget_tokensinteger (Opsional, akan ditinggalkan)
Parameter ini akan ditinggalkan. Untuk integrasi baru, gunakan effort.
Token maksimum untuk proses berpikir. Parameter ini terpisah dari max_tokens: ia membatasi bagian berpikir, sedangkan max_tokens membatasi balasan akhir. Anggaran token yang lebih besar memungkinkan analisis lebih menyeluruh terhadap pertanyaan kompleks. Berlaku saat type bernilai enabled.
toolsarray (Opsional)
Definisi tool untuk pemanggilan fungsi.
Elemen array tools
namestring(Wajib)
Nama tool.
descriptionstring (Opsional)
Deskripsi fungsi tool.
input_schemaobjek(Wajib)
Definisi skema JSON parameter input tool.
tool_choiceobjek (Opsional)
Strategi pemilihan tool:
{"type": "auto"}: Model memutuskan apakah akan memanggil tool (default).
{"type": "any"}: Memaksa model untuk memanggil tool apa pun.
{"type": "none"}: Melarang model memanggil tool.
{"type": "tool", "name": "tool_name"}: Memaksa model untuk memanggil tool tertentu.
output_configobjek (Opsional)
Properti
effortstring (Opsional)
Mengontrol intensitas inferensi model. Nilai valid dan nilai default bervariasi berdasarkan model.
glm-5.2, deepseek-v4-pro, dan deepseek-v4-flash: Nilai default: max
Nilai valid:
high: Inferensi intensitas tinggi
max: Inferensi intensitas maksimum
Nilai low dan medium dipetakan ke high, sedangkan xhigh dipetakan ke max.
qwen3.8-max/qwen3.8-flash: Nilai default: xhigh
Nilai valid:
xhigh: Inferensi intensitas tinggi
medium: Inferensi intensitas menengah
low: Inferensi intensitas rendah
Nilai max dan high dipetakan ke xhigh.
formatobjek (Opsional)
Konfigurasi output terstruktur. Saat diaktifkan, model mengembalikan string JSON. Perilaku bervariasi berdasarkan model:
Output terstruktur ketat: Tersedia untuk model seri qwen3.8, qwen3.7, deepseek, dan glm. Model secara ketat mengikuti skema JSON yang diberikan, menjamin jenis bidang dan hierarki yang sama.
Output terstruktur reguler: Untuk semua model lainnya, batasan bidang skema tidak diberlakukan — API secara otomatis kembali ke mode JSON biasa (hanya menjamin bahwa output adalah string JSON yang valid). Dalam mode fallback ini, permintaan harus memenuhi kedua syarat berikut: (1) parameter output_config diberikan secara eksplisit; (2) konten system atau messages mengandung kata kunci "JSON" (tidak memperhatikan huruf besar/kecil). Jika kata kunci "JSON" tidak ada, API akan melempar error: 'messages' must contain the word 'json' in some form.
Properti
typestring(Wajib)
Nilai tetap: json_schema.
schemaobjek(Wajib)
Objek skema JSON yang mengikuti spesifikasi standar JSON Schema. Harus mencakup type (tipe data), properties (definisi bidang), required (array nama bidang wajib), dan additionalProperties (harus diatur ke false).
Panggilan Dasar
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
message = client.messages.create(
model="qwen3.8-max",
max_tokens=1024,
system="You are a helpful assistant",
messages=[
{
"role": "user",
"content": "Who are you?"
}
],
thinking={"type": "disabled"},
)
print(message.content[0].text)
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic({
apiKey: process.env.DASHSCOPE_API_KEY,
// Replace {WorkspaceId} with your actual workspace ID. URLs vary by region. baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
});
async function main() {
const message = await anthropic.messages.create({
model: "qwen3.8-max",
max_tokens: 1024,
system: "You are a helpful assistant",
messages: [{
role: "user",
content: "Who are you?"
}],
thinking: { type: "disabled" },
});
console.log(message.content[0].text);
}
main().catch(console.error);
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: $DASHSCOPE_API_KEY" \
-d '{
"model": "qwen3.8-max",
"max_tokens": 1024,
"system": "You are a helpful assistant",
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"thinking": {"type": "disabled"}
}'
Streaming
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
stream = client.messages.create(
model="qwen3.8-max",
max_tokens=1024,
stream=True,
messages=[
{
"role": "user",
"content": "Give a brief introduction to artificial intelligence."
}
],
thinking={"type": "disabled"},
)
for chunk in stream:
if chunk.type == "content_block_delta":
if hasattr(chunk.delta, 'text'):
print(chunk.delta.text, end="", flush=True)
import Anthropic from "@anthropic-ai/sdk";
async function main() {
const anthropic = new Anthropic({
apiKey: process.env.DASHSCOPE_API_KEY,
// Replace {WorkspaceId} with your actual workspace ID. URLs vary by region. baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
});
const stream = await anthropic.messages.create({
model: "qwen3.8-max",
max_tokens: 1024,
stream: true,
messages: [{
role: "user",
content: "Give a brief introduction to artificial intelligence."
}],
thinking: { type: "disabled" },
});
for await (const chunk of stream) {
if (chunk.type === "content_block_delta" && 'text' in chunk.delta) {
process.stdout.write(chunk.delta.text);
}
}
}
main().catch(console.error);
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
tools = [
{
"name": "get_weather",
"description": "Get weather information for a specified city",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
}
},
"required": ["city"]
}
}
]
message = client.messages.create(
model="qwen3.8-max",
max_tokens=1024,
tools=tools,
messages=[
{
"role": "user",
"content": "What's the weather like in Hangzhou today?"
}
]
)
print(message.content)
import Anthropic from "@anthropic-ai/sdk";
async function main() {
const anthropic = new Anthropic({
apiKey: process.env.DASHSCOPE_API_KEY,
// Replace {WorkspaceId} with your actual workspace ID. URLs vary by region. baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
});
const message = await anthropic.messages.create({
model: "qwen3.8-max",
max_tokens: 1024,
tools: [
{
name: "get_weather",
description: "Get weather information for a specified city",
input_schema: {
type: "object",
properties: {
city: { type: "string", description: "City name" }
},
required: ["city"],
},
},
],
messages: [{
role: "user",
content: "What's the weather like in Hangzhou today?"
}],
});
console.log(JSON.stringify(message.content, null, 2));
}
main().catch(console.error);
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: $DASHSCOPE_API_KEY" \
-d '{
"model": "qwen3.8-max",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Get weather information for a specified city",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
}
},
"required": ["city"]
}
}
],
"messages": [
{
"role": "user",
"content": "What's the weather like in Hangzhou today?"
}
]
}'
cache prompt
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
# Simulate code repository content. Must reach minimum cacheable length (1024 tokens)
long_text_content = "<Your Code Here>" * 400
def get_completion(user_input):
response = client.messages.create(
# Choose a model that supports prompt caching
model="qwen3.8-max",
max_tokens=1024,
system=[
{
"type": "text",
"text": long_text_content,
# Add cache_control on a text block to mark a cache breakpoint. Can also be placed on content blocks in the messages array
"cache_control": {"type": "ephemeral"},
}
],
messages=[
{"role": "user", "content": user_input},
],
)
return response
# First request: Create cache
first = get_completion("What does this code do?")
print(f"Cache creation tokens: {first.usage.cache_creation_input_tokens}")
print(f"Cache read tokens: {first.usage.cache_read_input_tokens}")
print("=" * 20)
# Second request: Same long content, different question -> Cache hit
second = get_completion("How can this code be optimized?")
print(f"Cache creation tokens: {second.usage.cache_creation_input_tokens}")
print(f"Cache read tokens: {second.usage.cache_read_input_tokens}")
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.DASHSCOPE_API_KEY,
// Replace {WorkspaceId} with your actual workspace ID. URLs vary by region. baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
});
// Simulate code repository content. Must reach minimum cacheable length (1024 tokens)
const longTextContent = "<Your Code Here>".repeat(400);
async function getCompletion(userInput) {
return client.messages.create({
// Choose a model that supports prompt caching
model: "qwen3.8-max",
max_tokens: 1024,
system: [
{
type: "text",
text: longTextContent,
// Add cache_control on a text block to mark a cache breakpoint. Can also be placed on content blocks in the messages array
cache_control: { type: "ephemeral" },
},
],
messages: [{ role: "user", content: userInput }],
});
}
// First request: Create cache
const first = await getCompletion("What does this code do?");
console.log(`Cache creation tokens: ${first.usage.cache_creation_input_tokens}`);
console.log(`Cache read tokens: ${first.usage.cache_read_input_tokens}`);
console.log("=".repeat(20));
// Second request: Same long content, different question -> Cache hit
const second = await getCompletion("How can this code be optimized?");
console.log(`Cache creation tokens: ${second.usage.cache_creation_input_tokens}`);
console.log(`Cache read tokens: ${second.usage.cache_read_input_tokens}`);
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: $DASHSCOPE_API_KEY" \
-d '{
"model": "qwen3.8-max",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "<Place cacheable content here with at least 1024 tokens>",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [
{"role": "user", "content": "What does this code do?"}
]
}'
Output terstruktur
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
message = client.messages.create(
model="deepseek-v4-pro",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Extract key info from this email: John Smith (john@example.com) is interested in the Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
}
],
extra_body={
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": False
}
}
}
},
)
# deepseek-v4-pro returns a thinking block; find the text content block
text_block = next(block for block in message.content if block.type == "text")
print(text_block.text)
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic({
apiKey: process.env.DASHSCOPE_API_KEY,
// Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
});
async function main() {
// output_config is a Model Studio platform extension parameter, pass via body
const message = await (anthropic.messages.create as Function)({
model: "deepseek-v4-pro",
max_tokens: 1024,
messages: [{
role: "user",
content: "Extract key info from this email: John Smith (john@example.com) is interested in the Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
}],
output_config: {
format: {
type: "json_schema",
schema: {
type: "object",
properties: {
name: { type: "string" },
email: { type: "string" },
plan_interest: { type: "string" },
demo_requested: { type: "boolean" }
},
required: ["name", "email", "plan_interest", "demo_requested"],
additionalProperties: false
}
}
}
});
// deepseek-v4-pro returns a thinking block; find the text content block
const textBlock = message.content.find(
(block: { type: string }) => block.type === "text"
);
console.log(textBlock?.text);
}
main().catch(console.error);
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: $DASHSCOPE_API_KEY" \
-d '{
"model": "deepseek-v4-pro",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Extract key info from this email: John Smith (john@example.com) is interested in the Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
}
],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": false
}
}
}
}'
Respons Non-streaming
idstring
Identifier pesan unik.
typestring
Nilai tetap: message.
rolestring
Nilai tetap: assistant.
modelstring
Model yang digunakan untuk generasi.
contentarray
Array konten.
Tipe Elemen Array Konten
Teks
Properti
typestring
Nilai tetap: text.
textstring
Teks respons yang dihasilkan oleh model.
Thinking (dikembalikan saat Extended Thinking diaktifkan)
Properti
typestring
Nilai tetap: thinking.
thinkingstring
Penalaran model sebelum respons akhir.
signaturestring
Saat ini tetap sebagai string kosong.
Penggunaan alat (skenario pemanggilan fungsi)
Properti
typestring
Nilai tetap: tool_use.
idstring
Identifier unik pemanggilan tool, digunakan untuk mencocokkan tool_result.
CatatanDalam panggilan streaming, bidang usage pada event message_start hanya berisi input_tokens dan output_tokens. Keempat bidang lengkap dikembalikan dalam event message_delta.
Objek pesan awal. content adalah array kosong, dan usage hanya berisi input_tokens dan output_tokens.
content_block_start
Menandai awal blok konten.
Properti
typestring
Nilai tetap: content_block_start.
indexinteger
Indeks berbasis 0 yang bersesuaian dengan posisi dalam array content.
content_blockobjek
Objek awal blok konten. Nilai type adalah text, thinking, atau tool_use. Untuk tipe tool_use, bidang input adalah objek kosong dalam event ini, dan parameter input lengkap dirakit dari delta content_block_delta berikutnya.
content_block_delta
Pembaruan inkremental blok konten. Beberapa delta dikirim per blok.
Properti
typestring
Nilai tetap: content_block_delta.
indexinteger
Indeks blok konten terkait.
deltaobjek
Objek delta. Nilai type:
text_delta: Delta teks, berisi bidang text.
thinking_delta: Delta rantai-pikiran, berisi bidang thinking.
signature_delta: Delta signature, berisi bidang signature (saat ini tetap sebagai string kosong).
input_json_delta: Delta parameter input pemanggilan tool, berisi bidang partial_json.
content_block_stop
Menandai akhir blok konten.
Properti
typestring
Nilai tetap: content_block_stop.
indexinteger
Indeks blok konten yang berakhir.
message_delta
Dikirim setelah semua blok konten berakhir. Berisi alasan berhenti dan penggunaan token akhir.
Properti
typestring
Nilai tetap: message_delta.
deltaobjek
Berisi stop_reason dan stop_sequence. Untuk nilai valid, lihat tabel Respons Non-streaming di atas.
usageobjek
Statistik penggunaan token lengkap, termasuk input_tokens, output_tokens, cache_creation_input_tokens, dan cache_read_input_tokens.
message_stop
Event terakhir, menandai akhir pesan.
Properti
typestring
Nilai tetap: message_stop.
Selain itu, respons streaming secara berkala mengirim event ping ({"type":"ping"}) untuk menjaga koneksi tetap aktif. Klien dapat mengabaikannya.
Contoh respons streaming
{"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","model":"qwen3.8-max","content":[],"usage":{"input_tokens":15,"output_tokens":0}}}
{"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"Here's a thinking process:\n\n1. **Analyze User Input:**\n - **Topic:** Artificial Intelligence (AI)\n - **Request:** Give a brief introduction to artificial intelligence."}}
{"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":""}}
{"type":"content_block_stop","index":0}
{"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}
{"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"Artificial intelligence (AI) is an important branch of computer science..."}}
{"type":"content_block_stop","index":1}
{"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":15,"output_tokens":1078,"cache_creation_input_tokens":0,"cache_read_input_tokens":0}}
{"type":"message_stop"}
FAQ
Setelah mengonfigurasi Claude Desktop atau Claude Code, uji koneksi gagal denganModel discovery — Gateway /v1/models returned HTTP 404, atau URL permintaan berisi/v1/v1/models. Bagaimana cara memperbaikinya?
Fitur penemuan model klien seperti Claude Desktop dan Claude Code secara otomatis menambahkan /v1/models ke URL dasar yang dikonfigurasi. Periksa dua hal berikut:
Jangan mengakhiri URL dasar dengan/v1/: URL harus berakhir di /apps/anthropic (misalnya, untuk China (Beijing) gunakan https://dashscope.aliyuncs.com/apps/anthropic; lihat informasi titik akhir di atas untuk wilayah lainnya). Jika Anda salah memasukkan .../apps/anthropic/v1/, klien akan menambahkan /v1/models dan menghasilkan path duplikat /v1/v1/models, yang mengembalikan HTTP 404. Oleh karena itu, saat Anda mendapatkan 404, pertama-tama periksa apakah URL permintaan aktual berisi /v1/v1/ yang duplikat; jika iya, hapus /v1/ di akhir URL dasar.
Tambahkan model secara manual untuk melewati penemuan: Titik akhir kompatibel Anthropic Model Studio hanya menyediakan API Messages (/v1/messages) dan tidak menyediakan titik akhir daftar model (/v1/models), sehingga permintaan penemuan model mengembalikan 404. Tambahkan model secara manual (misalnya, qwen3.7-plus) di bagian Models pada klien untuk melewati penemuan otomatis.