Topik ini menjelaskan cara menggunakan API untuk memanggil model seri GLM di platform Alibaba Cloud Model Studio.
Model glm-4.6 dan glm-4.7 akan dihapus dari daftar pada 10 Oktober 2026. Kami merekomendasikan migrasi ke: qwen3.7-plus, qwen3.8-max, dan qwen3.8-flash.
Titik akhir layanan bervariasi berdasarkan wilayah. Konfigurasikan URL dasar yang sesuai dengan wilayah yang Anda pilih.
Kompatibel dengan OpenAI
Kompatibel dengan OpenAI - API Responses
DashScope
China (Beijing)
AS (Virginia)
Jerman (Frankfurt)
China (Hong Kong)
Singapura
base_url untuk panggilan SDK adalah: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1Titik akhir permintaan HTTP: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
base_url untuk panggilan SDK adalah: https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1Titik akhir permintaan HTTP: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
base_url untuk panggilan SDK adalah: https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1Titik akhir permintaan HTTP: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
base_url untuk panggilan SDK adalah: https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1Titik akhir permintaan HTTP: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Isi tabbase_url untuk panggilan SDK adalah: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1Titik akhir permintaan HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
API Responses saat ini hanya mendukung glm-5.2, dan hanya tersedia di wilayah China (Beijing) dan Singapura.
Singapura
China (Beijing)
base_url untuk panggilan SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1Titik akhir HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses
base_url untuk panggilan SDK: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1Titik akhir HTTP: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses
China (Beijing)
AS (Virginia)
Jerman (Frankfurt)
China (Hong Kong)
Singapura
Titik akhir permintaan HTTP: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generationbase_url untuk panggilan SDK adalah:
import com.alibaba.dashscope.protocol.Protocol;Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1");
Titik akhir permintaan HTTP: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generationbase_url untuk panggilan SDK adalah:
import com.alibaba.dashscope.protocol.Protocol;Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1");
Titik akhir permintaan HTTP: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generationbase_url untuk panggilan SDK adalah:
import com.alibaba.dashscope.protocol.Protocol;Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1");
Titik akhir permintaan HTTP: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generationbase_url untuk panggilan SDK adalah:
import com.alibaba.dashscope.protocol.Protocol;Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1");
Isi kontenTitik akhir permintaan HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generationbase_url untuk panggilan SDK adalah: dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
glm-5.2 dan glm-5.2-fast-preview adalah model terbaru dalam seri GLM, dengan panjang konteks hingga 1 juta token. Kedua model ini memungkinkan Anda mengatur mode berpikir dan mode non-berpikir melalui parameter enable_thinking. Anda dapat menjalankan kode berikut untuk langsung memanggil model glm-5.2 dalam mode berpikir.Sebelum memulai, dapatkan Kunci API dan konfigurasikan sebagai variabel lingkungan. Jika Anda menggunakan SDK, Anda juga harus menginstal SDK OpenAI atau DashScope.
Kompatibel dengan OpenAI
DashScope
Kompatibel dengan Anthropic
Parameter enable_thinking bukan parameter standar OpenAI. Di SDK Python OpenAI, parameter ini dilewatkan melalui extra_body. Di SDK Node.js, parameter ini dilewatkan sebagai parameter tingkat atas.
Python
Node.js
HTTP
Kode contoh
Copy
from openai import OpenAIimport os# Inisialisasi klien OpenAIclient = OpenAI( # Jika variabel lingkungan belum dikonfigurasi, ganti nilai berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), # Saat melakukan panggilan, ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda. base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",)messages = [{"role": "user", "content": "Siapa kamu?"}]completion = client.chat.completions.create( model="glm-5.2", messages=messages, # Atur enable_thinking di extra_body untuk mengaktifkan mode berpikir extra_body={"enable_thinking": True}, stream=True, stream_options={ "include_usage": True },)reasoning_content = "" # Proses berpikir lengkapanswer_content = "" # Tanggapan lengkapis_answering = False # Menunjukkan apakah fase tanggapan telah dimulaiprint("\n" + "=" * 20 + "Proses berpikir" + "=" * 20 + "\n")for chunk in completion: if not chunk.choices: print("\n" + "=" * 20 + "Penggunaan token" + "=" * 20 + "\n") print(chunk.usage) continue delta = chunk.choices[0].delta # Kumpulkan hanya konten berpikir if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None: if not is_answering: print(delta.reasoning_content, end="", flush=True) reasoning_content += delta.reasoning_content # Setelah konten diterima, mulai tanggapan if hasattr(delta, "content") and delta.content: if not is_answering: print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n") is_answering = True print(delta.content, end="", flush=True) answer_content += delta.content
Tanggapan
Copy
====================Proses berpikir====================Mari saya pertimbangkan secara hati-hati pertanyaan pengguna. Pertanyaannya tampak sederhana, tetapi sebenarnya memiliki kedalaman.Dari perspektif linguistik, pengguna menggunakan bahasa Tionghoa, yang berarti saya harus merespons dalam bahasa Tionghoa. Ini adalah pertanyaan perkenalan diri dasar, tetapi mungkin memiliki banyak lapisan makna.Pertama, saya perlu memastikan bahwa sebagai model bahasa, saya harus menyatakan identitas dan sifat saya secara jujur. Saya bukan manusia, juga tidak memiliki kesadaran emosional nyata. Saya adalah asisten AI yang dilatih dengan teknologi pembelajaran mendalam. Ini adalah fakta paling dasar.Kedua, mempertimbangkan skenario potensial pengguna, mereka mungkin ingin tahu:1. Layanan apa saja yang bisa saya berikan?2. Apa bidang keahlian saya?3. Apa batasan saya?4. Bagaimana mereka bisa berinteraksi dengan saya lebih baik?Dalam jawaban saya, saya harus menunjukkan sikap ramah dan terbuka sekaligus tetap profesional dan akurat. Saya harus menyatakan bidang keahlian utama saya, seperti tanya jawab pengetahuan, bantuan penulisan, dan dukungan kreatif, tetapi juga secara jujur menunjukkan batasan saya, seperti kurangnya pengalaman emosional nyata.Selain itu, agar jawaban lebih lengkap, saya juga harus mengekspresikan sikap positif yang bersedia membantu pengguna menyelesaikan masalah. Saya dapat secara tepat membimbing pengguna untuk mengajukan pertanyaan yang lebih spesifik guna menunjukkan kemampuan saya dengan lebih baik.Mengingat ini adalah pembuka percakapan terbuka, jawabannya harus ringkas namun informatif, memberikan pemahaman yang jelas kepada pengguna tentang situasi dasar saya dan meletakkan fondasi yang baik untuk percakapan selanjutnya.Terakhir, nada harus rendah hati dan profesional, tidak terlalu teknis maupun terlalu santai, agar pengguna merasa nyaman dan alami.====================Tanggapan lengkap====================Saya adalah model bahasa besar GLM yang dilatih oleh Zhipu AI, dirancang untuk memberikan informasi dan membantu menyelesaikan masalah. Saya dirancang untuk memahami dan menghasilkan bahasa manusia, serta dapat menjawab pertanyaan, memberikan penjelasan, atau berpartisipasi dalam diskusi tentang berbagai topik.Saya tidak menyimpan data pribadi Anda, dan percakapan kita bersifat anonim. Apakah ada topik yang bisa saya bantu Anda pahami atau diskusikan?====================Penggunaan token====================CompletionUsage(completion_tokens=344, prompt_tokens=7, total_tokens=351, completion_tokens_details=None, prompt_tokens_details=None)
Kode contoh
Copy
import OpenAI from "openai";import process from 'process';// Inisialisasi klien OpenAIconst openai = new OpenAI({ // Jika variabel lingkungan belum dikonfigurasi, ganti nilai berikut dengan Kunci API Studio Model Anda: apiKey: "sk-xxx" apiKey: process.env.DASHSCOPE_API_KEY, // Saat melakukan panggilan, ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda. baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'});let reasoningContent = ''; // Proses berpikir lengkaplet answerContent = ''; // Tanggapan lengkaplet isAnswering = false; // Menunjukkan apakah fase tanggapan telah dimulaiasync function main() { try { const messages = [{ role: 'user', content: 'Siapa kamu?' }]; const stream = await openai.chat.completions.create({ model: 'glm-5.2', messages, // Catatan: Di SDK Node.js, parameter non-standar seperti enable_thinking dilewatkan sebagai properti tingkat atas dan tidak perlu ditempatkan di extra_body. enable_thinking: true, stream: true, stream_options: { include_usage: true }, }); console.log('\n' + '='.repeat(20) + 'Proses berpikir' + '='.repeat(20) + '\n'); for await (const chunk of stream) { if (!chunk.choices?.length) { console.log('\n' + '='.repeat(20) + 'Penggunaan token' + '='.repeat(20) + '\n'); console.log(chunk.usage); continue; } const delta = chunk.choices[0].delta; // Kumpulkan hanya konten berpikir if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) { if (!isAnswering) { process.stdout.write(delta.reasoning_content); } reasoningContent += delta.reasoning_content; } // Setelah konten diterima, mulai tanggapan if (delta.content !== undefined && delta.content) { if (!isAnswering) { console.log('\n' + '='.repeat(20) + 'Tanggapan lengkap' + '='.repeat(20) + '\n'); isAnswering = true; } process.stdout.write(delta.content); answerContent += delta.content; } } } catch (error) { console.error('Error:', error); }}main();
Tanggapan
Copy
====================Proses berpikir====================Mari saya pikirkan secara hati-hati pertanyaan pengguna, "Siapa kamu?". Ini perlu dianalisis dan dijawab dari berbagai perspektif.Pertama, ini adalah pertanyaan identitas dasar. Sebagai model bahasa besar GLM, saya perlu menyatakan identitas saya secara akurat. Saya harus dengan jelas menyatakan bahwa saya adalah asisten AI yang dikembangkan oleh Zhipu AI.Kedua, saya perlu mempertimbangkan niat pengguna yang mungkin ketika mengajukan pertanyaan ini. Mereka mungkin pengguna baru yang ingin memahami fungsi dasar saya, atau mereka mungkin ingin memastikan apakah saya dapat memberikan bantuan tertentu, atau mereka mungkin hanya menguji gaya respons saya. Oleh karena itu, saya perlu memberikan jawaban yang terbuka dan ramah.Saya juga perlu mempertimbangkan kelengkapan jawaban. Selain memperkenalkan identitas saya, saya juga harus menjelaskan secara singkat fungsi utama saya, seperti tanya jawab, kreasi, dan analisis, sehingga pengguna dapat memahami cara menggunakan asisten ini.Terakhir, saya perlu memastikan nada yang ramah dan mudah didekati serta mengekspresikan kerelaan saya untuk membantu. Saya dapat menggunakan ungkapan seperti "Saya senang melayani Anda" agar pengguna merasakan kehangatan komunikasi.Berdasarkan pemikiran ini, saya dapat menyusun jawaban yang ringkas dan jelas, yang tidak hanya menjawab pertanyaan pengguna tetapi juga membimbing komunikasi selanjutnya.====================Tanggapan lengkap====================Saya adalah GLM, model bahasa besar yang dilatih oleh Zhipu AI. Saya dilatih pada sejumlah besar data teks untuk memahami dan menghasilkan bahasa manusia, membantu pengguna menjawab pertanyaan, memberikan informasi, dan terlibat dalam percakapan.Saya akan terus belajar dan meningkatkan diri untuk memberikan layanan yang lebih baik. Saya senang menjawab pertanyaan Anda atau memberikan bantuan! Apa yang bisa saya lakukan untuk Anda?====================Penggunaan token===================={ prompt_tokens: 7, completion_tokens: 248, total_tokens: 255 }
Kode contoh
curl
Copy
# Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \-H "Authorization: Bearer $DASHSCOPE_API_KEY" \-H "Content-Type: application/json" \-d '{ "model": "glm-5.2", "messages": [ { "role": "user", "content": "Siapa kamu?" } ], "stream": true, "stream_options": { "include_usage": true }, "enable_thinking": true}'
Python
Java
HTTP
Kode contoh
Copy
import osfrom dashscope import Generation# Inisialisasi parameter permintaanmessages = [{"role": "user", "content": "Siapa kamu?"}]completion = Generation.call( # Jika variabel lingkungan belum dikonfigurasi, ganti nilai berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), model="glm-5.2", messages=messages, result_format="message", # Atur format hasil menjadi message enable_thinking=True, # Aktifkan mode berpikir stream=True, # Aktifkan keluaran streaming incremental_output=True, # Aktifkan keluaran inkremental)reasoning_content = "" # Proses berpikir lengkapanswer_content = "" # Tanggapan lengkapis_answering = False # Menunjukkan apakah fase tanggapan telah dimulaiprint("\n" + "=" * 20 + "Proses berpikir" + "=" * 20 + "\n")for chunk in completion: message = chunk.output.choices[0].message # Kumpulkan hanya konten berpikir if "reasoning_content" in message: if not is_answering: print(message.reasoning_content, end="", flush=True) reasoning_content += message.reasoning_content # Setelah konten diterima, mulai tanggapan if message.content: if not is_answering: print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n") is_answering = True print(message.content, end="", flush=True) answer_content += message.contentprint("\n" + "=" * 20 + "Penggunaan token" + "=" * 20 + "\n")print(chunk.usage)
Tanggapan
Copy
====================Proses berpikir====================Mari saya pertimbangkan secara hati-hati pertanyaan pengguna, "Siapa kamu?". Pertama, saya perlu menganalisis maksud pengguna. Ini bisa jadi rasa penasaran dari pengguna baru, atau mereka mungkin ingin memahami fungsi dan kemampuan spesifik saya.Dari perspektif profesional, saya harus dengan jelas menyatakan identitas saya – sebagai model bahasa besar GLM, saya perlu menjelaskan posisi dasar dan fungsi utama saya. Saya harus menghindari deskripsi yang terlalu teknis dan menggunakan bahasa yang mudah dipahami.Pada saat yang sama, saya juga harus mempertimbangkan beberapa isu praktis yang mungkin dikhawatirkan pengguna, seperti perlindungan privasi dan keamanan data. Ini adalah poin yang sangat diperhatikan pengguna saat menggunakan layanan AI.Selain itu, untuk menunjukkan profesionalisme dan keramahan, saya dapat secara proaktif membimbing percakapan setelah perkenalan dan menanyakan apakah pengguna membutuhkan bantuan spesifik. Hal ini tidak hanya akan membantu pengguna memahami saya dengan lebih baik tetapi juga membuka jalan untuk percakapan selanjutnya.Terakhir, saya perlu memastikan bahwa jawabannya ringkas dan jelas, dengan poin-poin utama disorot, sehingga pengguna dapat dengan cepat memahami identitas dan tujuan saya. Jawaban seperti ini dapat memuaskan rasa penasaran pengguna sekaligus menunjukkan sikap profesional dan berorientasi layanan.====================Tanggapan lengkap====================Saya adalah model bahasa besar GLM yang dikembangkan oleh Zhipu AI, dirancang untuk memberikan informasi dan bantuan kepada pengguna melalui teknologi pemrosesan bahasa alami. Saya dilatih pada sejumlah besar data teks dan dapat memahami serta menghasilkan bahasa manusia, menjawab pertanyaan, memberikan dukungan pengetahuan, dan berpartisipasi dalam percakapan.Tujuan desain saya adalah menjadi asisten AI yang berguna sekaligus memastikan privasi dan keamanan data pengguna. Saya tidak menyimpan informasi pribadi pengguna dan akan terus belajar serta meningkatkan diri untuk memberikan layanan yang lebih baik.Apakah ada pertanyaan yang bisa saya jawab atau tugas yang bisa saya bantu?====================Penggunaan token===================={"input_tokens": 8, "output_tokens": 269, "total_tokens": 277}
Kode contoh
Versi SDK Java DashScope harus 2.19.4 atau lebih baru.
Copy
// Versi SDK DashScope harus 2.19.4 atau lebih baru.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;import java.util.Arrays;public class Main { private static StringBuilder reasoningContent = new StringBuilder(); private static StringBuilder finalContent = new StringBuilder(); private static boolean isFirstPrint = true; private static void handleGenerationResult(GenerationResult message) { String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent(); String content = message.getOutput().getChoices().get(0).getMessage().getContent(); if (reasoning != null && !reasoning.isEmpty()) { reasoningContent.append(reasoning); if (isFirstPrint) { System.out.println("====================Proses berpikir===================="); isFirstPrint = false; } System.out.print(reasoning); } if (content != null && !content.isEmpty()) { finalContent.append(content); if (!isFirstPrint) { System.out.println("\n====================Tanggapan lengkap===================="); isFirstPrint = true; } System.out.print(content); } } private static GenerationParam buildGenerationParam(Message userMsg) { return GenerationParam.builder() // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: .apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model("glm-5.2") .incrementalOutput(true) .resultFormat("message") .messages(Arrays.asList(userMsg)) .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("Siapa kamu?").build(); streamCallWithMessage(gen, userMsg); } catch (ApiException | NoApiKeyException | InputRequiredException e) { System.err.println("Terjadi pengecualian: " + e.getMessage()); } }}
Tanggapan
Copy
====================Proses berpikir====================Mari saya pikirkan cara menjawab pertanyaan pengguna. Pertama, ini adalah pertanyaan identitas sederhana yang memerlukan jawaban yang jelas dan langsung.Sebagai model bahasa besar, saya harus menyatakan informasi identitas dasar saya secara akurat. Ini mencakup:- Nama: GLM- Pengembang: Zhipu AI- Fungsi utama: Pemahaman dan generasi bahasaMengingat pertanyaan pengguna mungkin berasal dari interaksi pertama kali, saya perlu memperkenalkan diri dengan cara yang mudah dipahami, menghindari istilah yang terlalu teknis. Pada saat yang sama, saya juga harus menjelaskan secara singkat kemampuan utama saya untuk membantu pengguna memahami cara berinteraksi dengan saya.Saya juga harus mengekspresikan sikap ramah dan terbuka, menyambut pengguna untuk mengajukan berbagai pertanyaan, yang dapat meletakkan fondasi yang baik untuk percakapan selanjutnya. Namun, perkenalan harus ringkas dan tidak terlalu rinci, untuk menghindari memberikan terlalu banyak informasi kepada pengguna.Terakhir, untuk mendorong komunikasi lebih lanjut, saya dapat secara proaktif menanyakan apakah pengguna membutuhkan bantuan spesifik, yang dapat lebih baik melayani kebutuhan aktual pengguna.====================Tanggapan lengkap====================Saya adalah GLM, model bahasa besar yang dikembangkan oleh Zhipu AI. Saya dilatih pada sejumlah besar data teks dan dapat memahami serta menghasilkan bahasa manusia, menjawab pertanyaan, memberikan informasi, dan terlibat dalam percakapan.Tujuan desain saya adalah membantu pengguna menyelesaikan masalah, memberikan pengetahuan, dan mendukung berbagai tugas bahasa. Saya akan terus belajar dan memperbarui diri untuk memberikan jawaban yang lebih akurat dan berguna.Apakah ada pertanyaan yang bisa saya jawab atau diskusikan dengan Anda?
Kode contoh
curl
Copy
# Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.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": "glm-5.2", "input":{ "messages":[ { "role": "user", "content": "Siapa kamu?" } ] }, "parameters":{ "enable_thinking": true, "incremental_output": true, "result_format": "message" }}'
Python
HTTP
Kode contoh
Copy
import anthropicimport osclient = anthropic.Anthropic( # Jika variabel lingkungan belum dikonfigurasi, ganti nilai berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), # Saat melakukan panggilan, ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda. base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",)message = client.messages.create( model="glm-5.2", max_tokens=1024, messages=[ {"role": "user", "content": "Siapa kamu?"} ], stream=True,)for event in message: if event.type == "content_block_delta": if hasattr(event.delta, "thinking"): print(event.delta.thinking, end="", flush=True) if hasattr(event.delta, "text"): print(event.delta.text, end="", flush=True)
Kode contoh
curl
Copy
# Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages \-H "Authorization: Bearer $DASHSCOPE_API_KEY" \-H "Content-Type: application/json" \-H "anthropic-version: 2023-06-01" \-d '{ "model": "glm-5.2", "max_tokens": 1024, "messages": [ { "role": "user", "content": "Siapa kamu?" } ]}'
glm-5.2, glm-5.2-fast-preview, glm-5.1, glm-5, glm-4.7, dan glm-4.6 mendukung parameter tool_stream. Parameter ini merupakan boolean yang secara default bernilai false dan hanya berlaku ketika stream diatur ke true. Ketika diaktifkan, argumen dari parameter tool_call dari Function Calling dikembalikan secara inkremental dalam aliran, bukan sekaligus setelah generasi lengkap selesai.Perilaku gabungan dari stream dan tool_stream adalah sebagai berikut:
stream
tool_stream
metode pengembalian tool_call
true
true
Argumen dikembalikan secara inkremental dalam beberapa chunk.
true
false (default)
Argumen dikembalikan sepenuhnya dalam satu chunk.
false
true/false
tool_stream tidak berpengaruh. Argumen dikembalikan sekaligus dalam tanggapan lengkap.
Kompatibel dengan OpenAI
DashScope
Python
Node.js
HTTP
Kode contoh
Copy
from openai import OpenAIimport osclient = OpenAI( api_key=os.getenv("DASHSCOPE_API_KEY"), # Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah. base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",)tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Dapatkan informasi cuaca untuk kota tertentu", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "Nama kota"} }, "required": ["city"] } } }]messages = [{"role": "user", "content": "Bagaimana cuaca di Beijing?"}]completion = client.chat.completions.create( model="glm-5.2", tools=tools, messages=messages, extra_body={ "tool_stream": True, }, stream=True, stream_options={"include_usage": True},)for chunk in completion: if chunk.choices: delta = chunk.choices[0].delta if hasattr(delta, 'content') and delta.content: print(f"[content] {delta.content}") if hasattr(delta, 'tool_calls') and delta.tool_calls: for tc in delta.tool_calls: print(f"[tool_call] id={tc.id}, name={tc.function.name}, args={tc.function.arguments}") if chunk.choices[0].finish_reason: print(f"[finish_reason] {chunk.choices[0].finish_reason}") if not chunk.choices and chunk.usage: print(f"[usage] {chunk.usage}")
Kode contoh
Copy
import OpenAI from "openai";import process from 'process';const openai = new OpenAI({ apiKey: process.env.DASHSCOPE_API_KEY, // Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah. baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'});const tools = [ { type: "function", function: { name: "get_weather", description: "Dapatkan informasi cuaca untuk kota tertentu", parameters: { type: "object", properties: { city: { type: "string", description: "Nama kota" } }, required: ["city"] } } }];async function main() { try { const stream = await openai.chat.completions.create({ model: 'glm-5.2', messages: [{ role: 'user', content: "Bagaimana cuaca di Beijing?" }], tools: tools, tool_stream: true, stream: true, stream_options: { include_usage: true }, }); for await (const chunk of stream) { if (!chunk.choices?.length) { if (chunk.usage) { console.log(`[usage] ${JSON.stringify(chunk.usage)}`); } continue; } const delta = chunk.choices[0].delta; if (delta.content) { console.log(`[content] ${delta.content}`); } if (delta.tool_calls) { for (const tc of delta.tool_calls) { console.log(`[tool_call] id=${tc.id}, name=${tc.function.name}, args=${tc.function.arguments}`); } } if (chunk.choices[0].finish_reason) { console.log(`[finish_reason] ${chunk.choices[0].finish_reason}`); } } } catch (error) { console.error('Error:', error); }}main();
Kode contoh
curl
Copy
# Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \-H "Authorization: Bearer $DASHSCOPE_API_KEY" \-H "Content-Type: application/json" \-d '{ "model": "glm-5.2", "messages": [ { "role": "user", "content": "Bagaimana cuaca di Beijing?" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Dapatkan informasi cuaca untuk kota tertentu", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "Nama kota"} }, "required": ["city"] } } } ], "stream": true, "stream_options": {"include_usage": true}, "tool_stream": true}'
Python
HTTP
Kode contoh
Copy
import osfrom dashscope import Generationtools = [ { "type": "function", "function": { "name": "get_weather", "description": "Dapatkan informasi cuaca untuk kota tertentu", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "Nama kota"} }, "required": ["city"] } } }]messages = [{"role": "user", "content": "Bagaimana cuaca di Beijing?"}]completion = Generation.call( api_key=os.getenv("DASHSCOPE_API_KEY"), model="glm-5.2", messages=messages, tools=tools, result_format="message", stream=True, tool_stream=True, incremental_output=True,)for chunk in completion: msg = chunk.output.choices[0].message if msg.content: print(f"[content] {msg.content}") if "tool_calls" in msg and msg.tool_calls: for tc in msg.tool_calls: fn = tc.get("function", {}) print(f"[tool_call] id={tc.get('id','')}, name={fn.get('name','')}, args={fn.get('arguments','')}") finish = chunk.output.choices[0].get("finish_reason", "") if finish and finish != "null": print(f"[finish_reason] {finish}")
Kode contoh
curl
Copy
# Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah.curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.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": "glm-5.2", "input": { "messages": [ { "role": "user", "content": "Bagaimana cuaca di Beijing?" } ] }, "parameters": { "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Dapatkan informasi cuaca untuk kota tertentu", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "Nama kota"} }, "required": ["city"] } } } ], "tool_stream": true, "incremental_output": true, "result_format": "message" }}'
Model glm-5.2, glm-5.2-fast-preview, dan glm-5.1 memiliki mode berpikir yang diaktifkan secara default. Model pertama kali mengeluarkan proses berpikir (reasoning_content) lalu memberikan jawaban akhir. Anda dapat menggunakan parameter reasoning_effort untuk menyesuaikan usaha penalaran. Nilai yang lebih tinggi menunjukkan pemikiran yang lebih menyeluruh. Nilai yang didukung bervariasi berdasarkan model. Jika Anda memberikan nilai yang tidak didukung, kesalahan invalid_parameter_error akan dikembalikan. Pilih nilai dari tabel berikut.
none, minimal, low, medium, high, xhigh (tertinggi, max tidak didukung)
Untuk menonaktifkan mode berpikir, atur parameter enable_thinking ke false dalam mode kompatibel OpenAI atau DashScope. Parameter ini memiliki prioritas lebih tinggi daripada reasoning_effort.
Mode kompatibel Anthropic tidak mendukung parameter reasoning_effort. Untuk mendapatkan konten berpikir, gunakan parameter native Anthropic thinking: {"thinking":{"type":"enabled","budget_tokens":1024}}. Ketika diaktifkan, blok content dalam tanggapan akan mencakup blok berpikir dengan type diatur ke thinking.
Kompatibel dengan OpenAI
DashScope
Python
Copy
from openai import OpenAIimport osclient = OpenAI( api_key=os.getenv("DASHSCOPE_API_KEY"), # Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL bervariasi berdasarkan wilayah. base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",)completion = client.chat.completions.create( model="glm-5.2", messages=[{"role": "user", "content": "Manakah yang lebih besar, 9.9 atau 9.11?"}], reasoning_effort="high",)print(completion.choices[0].message.content)
Copy
import osfrom dashscope import Generationresponse = Generation.call( api_key=os.getenv("DASHSCOPE_API_KEY"), model="glm-5.2", messages=[{"role": "user", "content": "Manakah yang lebih besar, 9.9 atau 9.11?"}], reasoning_effort="high", result_format="message",)print(response.output.choices[0].message.content)
Parameter clear_thinking mengontrol apakah reasoning_content (proses berpikir) dari putaran sebelumnya dalam percakapan multi-putaran diteruskan ke model sebagai konteks. Parameter ini hanya didukung oleh model seri GLM.
true: Mengabaikan reasoning_content dari putaran sebelumnya. Hanya konten non-penalaran seperti teks yang terlihat, pemanggilan alat, dan hasil yang digunakan sebagai input konteks. Hal ini mengurangi panjang konteks dan biaya.
false (default): Mempertahankan reasoning_content dari putaran sebelumnya dan memberikannya ke model bersama dengan konteks. Untuk mengaktifkan Preserved Thinking, Anda harus meneruskan reasoning_content historis secara lengkap, tidak diubah, dan dalam urutan aslinya dalam pesan. Konten yang hilang, dipotong, ditulis ulang, atau diurutkan ulang dapat menurunkan performa atau menyebabkan fitur gagal.
Parameter ini hanya memengaruhi konten berpikir historis lintas putaran dan tidak mengubah apakah model menghasilkan atau mengeluarkan konten berpikir pada putaran saat ini.
Contoh berikut menggunakan rangkaian pesan multi-putaran yang sama, di mana pesan assistant berisi reasoning_content. Ketika clear_thinking diatur ke true, konten berpikir historis tidak termasuk dalam konteks. Oleh karena itu, jumlah prompt_tokens lebih rendah dibandingkan ketika diatur ke false (default). Nilai aktual tergantung pada panjang reasoning_content historis.
Kompatibel dengan OpenAI
DashScope
Python
Copy
from openai import OpenAIimport osclient = OpenAI( api_key=os.getenv("DASHSCOPE_API_KEY"), # Saat melakukan panggilan, ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda. base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",)# Percakapan multi-putaran di mana pesan assistant membawa reasoning_content (proses berpikir historis)messages = [ {"role": "user", "content": "Hitung 15 * 23."}, {"role": "assistant", "content": "15 dikalikan 23 sama dengan 345.", "reasoning_content": "15 * 23 = 345"}, {"role": "user", "content": "Bagaimana jika ditambah 55?"}, {"role": "assistant", "content": "345 ditambah 55 sama dengan 400.", "reasoning_content": "345 + 55 = 400"}, {"role": "user", "content": "Apa hasil antaranya?"},]completion = client.chat.completions.create( model="glm-5.2", messages=messages, extra_body={ "enable_thinking": True, # true: Mengabaikan reasoning_content historis untuk mengurangi panjang konteks dan biaya # false (default): Mempertahankan reasoning_content historis (Preserved Thinking) "clear_thinking": True, },)print(completion.usage.prompt_tokens) # Nilainya lebih kecil saat diatur ke true dibandingkan saat diatur ke false
Copy
import osfrom dashscope import Generation# Percakapan multi-putaran di mana pesan assistant membawa reasoning_content (proses berpikir historis)messages = [ {"role": "user", "content": "Hitung 15 * 23."}, {"role": "assistant", "content": "15 dikalikan 23 sama dengan 345.", "reasoning_content": "15 * 23 = 345"}, {"role": "user", "content": "Bagaimana jika ditambah 55?"}, {"role": "assistant", "content": "345 ditambah 55 sama dengan 400.", "reasoning_content": "345 + 55 = 400"}, {"role": "user", "content": "Apa hasil antaranya?"},]response = Generation.call( api_key=os.getenv("DASHSCOPE_API_KEY"), model="glm-5.2", messages=messages, result_format="message", enable_thinking=True, # true: Mengabaikan reasoning_content historis untuk mengurangi panjang konteks dan biaya # false (default): Mempertahankan reasoning_content historis (Preserved Thinking) clear_thinking=True,)print(response.usage.input_tokens)
glm-5.2 mendukung panggilan melalui API Responses yang kompatibel dengan OpenAI. Hanya wilayah China (Beijing) dan Singapura yang didukung. Untuk titik akhir, lihat Titik akhir layanan.Saat memanggil API Responses, Anda dapat menambahkan alat web_search (Pencarian web), web_extractor (Ekstraktor web), dan code_interpreter (Interpreter kode) ke parameter tools.
Python
Copy
from openai import OpenAIimport osclient = OpenAI( # Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), # URL berikut untuk wilayah Singapura. Untuk wilayah lain, gunakan https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",)response = client.responses.create( model="glm-5.2", input="Halo! Perkenalkan dirimu dalam satu kalimat.", # Opsional: aktifkan alat pencarian web, ekstraktor web, dan interpreter kode tools=[ {"type": "web_search"}, {"type": "web_extractor"}, {"type": "code_interpreter"}, ],)# Dapatkan tanggapan modelprint(response.output_text)
Model open-source pihak ketiga yang dideploy di cloud (seperti glm-5.2) menangani hiperparameter secara berbeda dari versi resmi model tersebut: versi resmi melakukan validasi ambang batas pada hiperparameter dan kembali ke nilai default ketika ambang batas dilampaui; versi yang dideploy di cloud langsung meneruskan nilai parameter yang diberikan pengguna tanpa validasi ambang batas. Oleh karena itu, pengaturan hiperparameter yang tidak tepat (seperti mengatur repetition_penalty ke 0.1) dapat menyebabkan output yang tidak diharapkan (seperti pencetakan berulang). Kami merekomendasikan menggunakan nilai hiperparameter default (lihat tabel nilai parameter default di atas) untuk model open-source pihak ketiga dan menghindari parameter kustom.
Model seri GLM adalah model penalaran hibrida yang dirancang oleh Zhipu AI untuk agen. Model ini menyediakan mode berpikir dan non-berpikir.
glm-5.2: Model GLM terbaru dengan panjang konteks 1 juta. Mendukung Pemanggilan Fungsi, output terstruktur, dan cache implisit. Anda dapat memanggilnya menggunakan antarmuka kompatibel OpenAI, DashScope, dan kompatibel Anthropic.
Untuk informasi tentang panjang konteks model dan harga, lihat Konsol Studio Model.Penagihan didasarkan pada jumlah token input dan output.
Dalam mode berpikir, rantai-pikiran ditagih sebagai token output.