Topik ini menjelaskan cara memanggil model GLM di Alibaba Cloud Model Studio.
Ketersediaan model
Model GLM adalah model penalaran hibrida yang dikembangkan oleh Zhipu AI untuk agent. Model ini menyediakan dua mode: mode berpikir (thinking mode) dan mode non-berpikir (non-thinking mode).
Model | Context window | Max input | Max chain-of-thought | Max response |
(Tokens) | ||||
glm-4.7 | 202.752 | 169.984 | 32.768 | 16.384 |
glm-4.6 | ||||
Model-model ini bukan layanan pihak ketiga. Mereka dideploy pada server Model Studio.
Mulai menggunakan
glm-4.7 adalah model terbaru dalam seri ini. Anda dapat mengontrol mode berpikir dan non-berpikir melalui parameter enable_thinking. Jalankan kode berikut untuk memanggil glm-4.7 secara cepat dalam mode berpikir.
Sebelum memulai, buat Kunci API dan tetapkan sebagai variabel lingkungan. Jika Anda memanggil model menggunakan SDK, instal OpenAI atau DashScope SDK.
Kompatibel dengan OpenAI
enable_thinking bukan parameter standar OpenAI. Dalam OpenAI Python SDK, parameter ini dilewatkan menggunakan extra_body. Dalam Node.js SDK, parameter ini dilewatkan sebagai parameter tingkat atas.
Python
Kode contoh
from openai import OpenAI
import os
# Inisialisasi klien OpenAI
client = OpenAI(
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "Who are you"}]
completion = client.chat.completions.create(
model="glm-4.7",
messages=messages,
# Setel enable_thinking di extra_body untuk mengaktifkan mode berpikir
extra_body={"enable_thinking": True},
stream=True,
stream_options={
"include_usage": True
},
)
reasoning_content = "" # Proses pemikiran lengkap
answer_content = "" # Respons lengkap
is_answering = False # Menunjukkan apakah fase respons telah dimulai
print("\n" + "=" * 20 + "Thought Process" + "=" * 20 + "\n")
for chunk in completion:
if not chunk.choices:
print("\n" + "=" * 20 + "Token Usage" + "=" * 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 menerima konten, mulai menghasilkan respons
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
is_answering = True
print(delta.content, end="", flush=True)
answer_content += delta.contentRespons
====================Thought Process====================
Mari saya pikirkan dengan cermat pertanyaan yang tampak sederhana namun mendalam ini dari pengguna.
Dari perspektif linguistik, pengguna menggunakan bahasa Tiongkok, yang berarti saya harus merespons dalam bahasa Tiongkok. Ini adalah pertanyaan perkenalan dasar, tetapi mungkin memiliki beberapa lapisan makna.
Pertama, saya perlu jelas dan jujur tentang identitas dan sifat saya sebagai model bahasa. Saya bukan manusia, juga tidak memiliki kesadaran emosional yang sebenarnya. Saya adalah asisten AI yang dilatih menggunakan teknologi pembelajaran mendalam. Ini adalah fakta mendasar.
Kedua, mempertimbangkan skenario potensial pengguna, mereka mungkin ingin tahu:
1. Layanan apa yang dapat saya berikan
2. Bidang keahlian utama saya
3. Batasan-batasan saya
4. Cara berinteraksi dengan saya secara lebih efektif
Dalam respons saya, saya harus menunjukkan sikap ramah dan terbuka sekaligus tetap profesional dan akurat. Saya perlu menyatakan bidang keahlian utama saya, seperti tanya jawab pengetahuan, bantuan penulisan, dan dukungan kreatif, sekaligus secara jujur menunjukkan batasan saya, seperti kurangnya pengalaman emosional nyata.
Selain itu, agar respons lebih lengkap, saya harus mengekspresikan sikap positif dan kemauan untuk membantu pengguna menyelesaikan masalah. Saya dapat membimbing pengguna untuk mengajukan pertanyaan yang lebih spesifik guna menunjukkan kemampuan saya secara lebih baik.
Mengingat ini adalah pembuka percakapan terbuka, jawaban harus ringkas dan jelas, namun berisi informasi yang cukup untuk memberikan pemahaman yang jelas kepada pengguna tentang situasi dasar saya dan meletakkan fondasi yang baik untuk percakapan selanjutnya.
Terakhir, nada harus tetap rendah hati dan profesional, tidak terlalu teknis maupun terlalu kasual, agar pengguna merasa nyaman dan alami.
====================Complete Response====================
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?
====================Token Usage====================
CompletionUsage(completion_tokens=344, prompt_tokens=7, total_tokens=351, completion_tokens_details=None, prompt_tokens_details=None)Node.js
Kode contoh
import OpenAI from "openai";
import process from 'process';
// Inisialisasi klien OpenAI
const openai = new OpenAI({
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
});
let reasoningContent = ''; // Proses pemikiran lengkap
let answerContent = ''; // Respons lengkap
let isAnswering = false; // Menunjukkan apakah fase respons telah dimulai
async function main() {
try {
const messages = [{ role: 'user', content: 'Who are you' }];
const stream = await openai.chat.completions.create({
model: 'glm-4.7',
messages,
// Catatan: Dalam Node.js SDK, parameter non-standar seperti enable_thinking dilewatkan sebagai properti tingkat atas, bukan di extra_body
enable_thinking: true,
stream: true,
stream_options: {
include_usage: true
},
});
console.log('\n' + '='.repeat(20) + 'Thought Process' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\n' + '='.repeat(20) + 'Token Usage' + '='.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 menerima konten, mulai menghasilkan respons
if (delta.content !== undefined && delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Complete Response' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();Respons
====================Thought Process====================
Mari saya pikirkan dengan cermat pertanyaan pengguna, "Who are you." Ini memerlukan analisis dan respons 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 maksud pengguna. Mereka mungkin pengguna baru yang ingin memahami fitur dasar, atau mereka ingin memastikan apakah saya dapat memberikan bantuan spesifik, atau 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 diri, saya juga harus menjelaskan secara singkat fitur utama saya, seperti tanya jawab, kreasi, dan analisis, agar pengguna tahu cara menggunakan asisten ini.
Terakhir, saya harus memastikan nada yang ramah dan mudah didekati, mengekspresikan kemauan untuk membantu. Saya dapat menggunakan ungkapan seperti "I'm happy to help" agar pengguna merasakan kehangatan percakapan.
Berdasarkan pemikiran ini, saya dapat merumuskan jawaban yang ringkas dan jelas, yang tidak hanya menjawab pertanyaan pengguna tetapi juga membimbing percakapan selanjutnya.
====================Complete Response====================
Saya adalah GLM, model bahasa besar yang dilatih oleh Zhipu AI. Saya dilatih pada data teks dalam jumlah besar, sehingga dapat memahami dan menghasilkan bahasa manusia untuk membantu pengguna menjawab pertanyaan, memberikan informasi, dan terlibat dalam percakapan.
Saya terus belajar dan berkembang untuk memberikan layanan yang lebih baik. Saya senang menjawab pertanyaan Anda atau memberikan bantuan! Apa yang bisa saya lakukan untuk Anda?
====================Token Usage====================
{ prompt_tokens: 7, completion_tokens: 248, total_tokens: 255 }HTTP
Kode contoh
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": "glm-4.7",
"messages": [
{
"role": "user",
"content": "Who are you"
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"enable_thinking": true
}'DashScope
Python
Kode contoh
import os
from dashscope import Generation
# Inisialisasi parameter permintaan
messages = [{"role": "user", "content": "Who are you?"}]
completion = Generation.call(
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="glm-4.7",
messages=messages,
result_format="message", # Tetapkan format hasil sebagai message
enable_thinking=True, # Aktifkan mode berpikir
stream=True, # Aktifkan keluaran streaming
incremental_output=True, # Aktifkan keluaran inkremental
)
reasoning_content = "" # Proses pemikiran lengkap
answer_content = "" # Respons lengkap
is_answering = False # Menunjukkan apakah fase respons telah dimulai
print("\n" + "=" * 20 + "Thought Process" + "=" * 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 menerima konten, mulai menghasilkan respons
if message.content:
if not is_answering:
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
is_answering = True
print(message.content, end="", flush=True)
answer_content += message.content
print("\n" + "=" * 20 + "Token Usage" + "=" * 20 + "\n")
print(chunk.usage)Respons
====================Thought Process====================
Mari saya pikirkan dengan cermat pertanyaan pengguna, "Who are you?" Pertama, saya perlu menganalisis maksud pengguna. Ini bisa jadi rasa penasaran dari pengguna baru, atau mereka ingin memahami fitur 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 fitur utama saya. Saya harus menghindari istilah yang terlalu teknis dan menjelaskan dengan cara yang mudah dipahami.
Pada saat yang sama, saya juga harus mempertimbangkan isu praktis yang mungkin menjadi perhatian pengguna, seperti perlindungan privasi dan keamanan data. Ini adalah poin yang sangat penting bagi pengguna saat menggunakan layanan AI.
Selain itu, untuk menunjukkan profesionalisme dan keramahan, saya dapat secara proaktif membimbing percakapan setelah perkenalan dengan menanyakan apakah pengguna membutuhkan bantuan spesifik. Hal ini membantu pengguna memahami saya lebih baik sekaligus membuka jalan untuk percakapan selanjutnya.
Terakhir, saya harus memastikan jawaban ringkas dan jelas, dengan poin-poin utama disorot, sehingga pengguna dapat dengan cepat memahami identitas dan tujuan saya. Respons semacam ini dapat memuaskan rasa penasaran pengguna sekaligus menunjukkan sikap profesional dan berorientasi layanan.
====================Complete Response====================
Saya adalah model bahasa besar GLM yang dikembangkan oleh Zhipu AI, dirancang untuk memberikan informasi dan bantuan kepada pengguna melalui teknologi pemrosesan bahasa alami. Dilatih pada data teks dalam jumlah besar, saya dapat memahami dan menghasilkan bahasa manusia, menjawab pertanyaan, memberikan dukungan pengetahuan, dan berpartisipasi dalam percakapan.
Tujuan desain saya adalah menjadi asisten AI yang berguna sekaligus menjamin privasi dan keamanan data pengguna. Saya tidak menyimpan informasi pribadi pengguna, dan saya akan terus belajar dan berkembang untuk memberikan layanan berkualitas lebih tinggi.
Apakah ada pertanyaan yang bisa saya jawab atau tugas yang bisa saya bantu?
====================Token Usage====================
{"input_tokens": 8, "output_tokens": 269, "total_tokens": 277}Java
Kode contoh
Versi DashScope Java SDK harus 2.19.4 atau lebih baru.
// 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("====================Thought Process====================");
isFirstPrint = false;
}
System.out.print(reasoning);
}
if (content != null && !content.isEmpty()) {
finalContent.append(content);
if (!isFirstPrint) {
System.out.println("\n====================Complete Response====================");
isFirstPrint = true;
}
System.out.print(content);
}
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("glm-4.7")
.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("Who are you?").build();
streamCallWithMessage(gen, userMsg);
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("An exception occurred: " + e.getMessage());
}
}
}Respons
====================Thought Process====================
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
- Fitur utama: Pemahaman dan pembangkitan bahasa
Mengingat 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 meletakkan fondasi yang baik untuk percakapan selanjutnya. Namun, perkenalan harus ringkas dan jelas, tidak terlalu rinci, agar tidak membanjiri pengguna dengan informasi.
Terakhir, untuk mendorong komunikasi lebih lanjut, saya dapat secara proaktif menanyakan apakah pengguna membutuhkan bantuan spesifik, yang memungkinkan saya melayani kebutuhan aktual mereka dengan lebih baik.
====================Complete Response====================
Saya adalah GLM, model bahasa besar yang dikembangkan oleh Zhipu AI. Saya dilatih pada data teks dalam jumlah besar, sehingga dapat memahami dan menghasilkan bahasa manusia, menjawab pertanyaan, memberikan informasi, dan terlibat dalam percakapan.
Tujuan saya adalah membantu pengguna menyelesaikan masalah, memberikan pengetahuan, dan mendukung berbagai tugas bahasa. Saya terus belajar dan memperbarui diri untuk memberikan jawaban yang lebih akurat dan berguna.
Apakah ada pertanyaan yang bisa saya jawab atau diskusikan untuk Anda?HTTP
Kode contoh
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": "glm-4.7",
"input":{
"messages":[
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"result_format": "message"
}
}'Fitur
Model | ||||||
glm-4.7 | Hanya dalam mode non-thinking | |||||
glm-4.6 | Hanya dalam mode non-thinking |
Nilai parameter default
Model | enable_thinking | temperature | top_p | top_k | repetition_penalty |
glm-4.7 | true | 1,0 | 0,95 | 20 | 1,0 |
glm-4.6 | true | 1,0 | 0,95 | 20 | 1,0 |
Penagihan
Penagihan didasarkan pada jumlah token input dan output untuk model. Untuk informasi selengkapnya, lihat GLM.
Dalam mode berpikir, chain-of-thought ditagih sebagai token output.
FAQ
T: Bagaimana cara menggunakan GLM di Dify?
J: Saat ini Anda tidak dapat mengintegrasikan model GLM dari Model Studio dengan Dify. Kami merekomendasikan penggunaan model Qwen3 melalui kartu TONGYI. Untuk informasi selengkapnya, lihat Dify.
Kode error
Jika terjadi error, lihat Error messages untuk troubleshooting.