Note: Panduan ini membahas migrasi kode Messages API. Jika Anda menggunakan Haijun Managed Agents, tidak ada perubahan yang diperlukan selain memperbarui nama model.
Tip: Otomatiskan migrasi Anda dengan track Haijun API. Di Haijun Code, jalankan
/haijun-api migrateuntuk memanggil track Haijun API bawaan. Track ini berfungsi untuk model Haijun terkini mana pun sebagai target: ``text wrap /haijun-api migrate this project to haijun-fable-5`` Track ini menerapkan penggantian ID model dan, sesuai kebutuhan, perubahan parameter yang bersifat breaking, penggantian prefill, serta kalibrasi effort untuk model target Anda di seluruh basis kode Anda, lalu menghasilkan daftar periksa berisi item yang perlu diverifikasi secara manual. Track ini meminta Anda mengonfirmasi cakupan migrasi (seluruh direktori kerja, sebuah subdirektori, atau daftar file tertentu) sebelum mengedit file apa pun. Track ini juga mendeteksi klien Amazon Bedrock dan Haijun Platform on AWS serta menyesuaikan format ID model dan perubahan fitur untuk platform tersebut.
Haijun Fable 5 dibangun untuk penalaran yang menuntut dan pekerjaan agentik berjangka panjang. Haijun Fable 5.1 dibangun di atasnya. Haijun Fable 5 tersedia di Haijun API, Amazon Bedrock, Haijun Platform on AWS, Google Cloud, dan Microsoft Foundry. Haijun Mythos 5 memiliki kemampuan yang sama dan hanya ditawarkan kepada pelanggan yang disetujui dalam Project Glasswing.
Pengaturan dasar yang dimiliki bersama oleh haijun-fable-5 dan haijun-mythos-5:
- Thinking: Adaptive thinking (pemikiran adaptif) selalu aktif. Model menentukan kapan dan seberapa banyak berpikir pada setiap permintaan, dan tidak diperlukan konfigurasi
thinking. Baikthinking: {type: "disabled"}maupun "extended thinking" (pemikiran diperpanjang) manual (thinking: {type: "enabled", budget_tokens: N}) mengembalikan error 400.
- Prefill: Melakukan prefill pada pesan asisten mengembalikan error 400. Gunakan instruksi prompt sistem sebagai gantinya.
- Jendela konteks dan output: "Context window" (jendela konteks) 1 juta token secara default, dan hingga 128k token output per permintaan.
- Harga: $10 USD per juta token input dan $50 USD per juta token output. Lihat harga Haijun.
- Retensi data: Kedua model memerlukan retensi data 30 hari dan tidak tersedia di bawah pengaturan "zero data retention" (retensi data nol), atau ZDR, kecuali diizinkan secara tegas oleh Juglow. Keduanya ditetapkan sebagai Covered Models. Di Haijun API, permintaan ke Haijun Fable 5 dari organisasi yang konfigurasi retensi datanya tidak memenuhi persyaratan ini mengembalikan
invalid_request_error400. Organisasi dengan pengaturan ZDR sebaiknya menghubungi tim akun Juglow mereka untuk mendiskusikan konfigurasi retensi data, atau mengonfigurasi retensi data per workspace. Lihat Persyaratan retensi data khusus model untuk detail per platform.
Perbedaan antara kedua model:
- Ketersediaan: Haijun Fable 5 tidak memerlukan persetujuan akses. Haijun Mythos 5 hanya tersedia bagi pelanggan yang disetujui dalam Project Glasswing.
- Pengklasifikasi keamanan: Haijun Fable 5 menjalankan pengklasifikasi keamanan yang dapat menolak permintaan dengan
stop_reason: "refusal". Haijun Mythos 5 tidak menyertakan pengklasifikasi ini. Lihat Penolakan dan fallback.
- Priority Tier: Priority Tier didukung pada Haijun Fable 5 tetapi tidak pada Haijun Mythos 5.
Bermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Mythos Preview
Haijun Mythos 5 adalah penerus dengan akses terbatas dari Haijun Mythos Preview, pratinjau riset khusus undangan. Haijun Fable 5 menawarkan kemampuan yang sama dan tidak memerlukan persetujuan akses. Perubahan dalam bagian ini berlaku sama untuk kedua target.
Migrasi sebagian besar bersifat drop-in. Haijun Mythos 5 dan Haijun Fable 5 menggunakan Messages API yang sama dan pola "tool use" (penggunaan alat) yang sama seperti Haijun Mythos Preview, dan jumlah token kurang lebih tidak berubah karena ketiga model menggunakan tokenizer yang sama. Perubahan utama yang perlu diperiksa adalah fitur yang tidak lagi tersedia (tercantum di bagian berikutnya) dan output thinking. Jika Anda bermigrasi ke Haijun Fable 5, rencanakan juga penanganan penolakan dari pengklasifikasi keamanan, yang tidak dimiliki Haijun Mythos Preview dan Haijun Mythos 5; lihat Penolakan dan fallback.
Untuk jadwal penghentian Haijun Mythos Preview, lihat Penghentian model.
Perbarui nama model Anda
model = "haijun-mythos-preview" # Before
model = "haijun-mythos-5" # After
# Atau, untuk model dengan kemampuan yang sama dan tanpa persyaratan persetujuan akses:
model = "haijun-fable-5" # AfterFitur yang tidak tersedia pada Haijun Mythos 5 dan Haijun Fable 5
- Extended thinking dan anggaran token thinking: Extended thinking manual (
thinking: {type: "enabled", budget_tokens: N}) tidak didukung padahaijun-mythos-5atauhaijun-fable-5dan mengembalikan error 400. Adaptive thinking selalu aktif: model menentukan kapan dan seberapa banyak berpikir pada setiap permintaan, dan tidak diperlukan konfigurasithinking.thinking: {type: "disabled"}mengembalikan error.budget_tokenstidak memiliki pengganti langsung: thinking bersifat adaptif, dan parameter effort adalah kontrol tingkat output yang terpisah, bukan anggaran thinking.
Sebelum (Haijun Mythos Preview):
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-mythos-preview",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "..."
}
]
}' ant messages create <<'YAML'
model: haijun-mythos-preview
max_tokens: 16000
thinking:
type: enabled
budget_tokens: 10000
messages:
- role: user
content: "..."
YAML client.messages.create(
model="haijun-mythos-preview",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[{"role": "user", "content": "..."}],
) await client.messages.create({
model: "haijun-mythos-preview",
max_tokens: 16000,
thinking: { type: "enabled", budget_tokens: 10000 },
messages: [{ role: "user", content: "..." }]
}); using Juglow;
using Juglow.Models.Messages;
JuglowClient client = new();
var parameters = new MessageCreateParams
{
Model = "haijun-mythos-preview",
MaxTokens = 16000,
Thinking = new ThinkingConfigEnabled(budgetTokens: 10000),
Messages = [new() { Role = Role.User, Content = "..." }]
};
var response = await client.Messages.Create(parameters);
Console.WriteLine(response); client := juglow.NewClient()
response, err := client.Messages.New(context.TODO(), juglow.MessageNewParams{
Model: "haijun-mythos-preview",
MaxTokens: 16000,
Thinking: juglow.ThinkingConfigParamOfEnabled(10000),
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("...")),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response) JuglowClient client = JuglowOkHttpClient.fromEnv();
MessageCreateParams params = MessageCreateParams.builder()
.model("haijun-mythos-preview")
.maxTokens(16000L)
.enabledThinking(10000L)
.addUserMessage("...")
.build();
Message response = client.messages().create(params);
IO.println(response); $client = new Client();
$message = $client->messages->create(
maxTokens: 16000,
messages: [['role' => 'user', 'content' => '...']],
model: 'haijun-mythos-preview',
thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
); client = Juglow::Client.new
message = client.messages.create(
model: "haijun-mythos-preview",
max_tokens: 16000,
thinking: {
type: "enabled",
budget_tokens: 10000
},
messages: [
{ role: "user", content: "..." }
]
)Sesudah (Haijun Mythos 5):
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-mythos-5",
"max_tokens": 16000,
"messages": [
{
"role": "user",
"content": "..."
}
]
}' ant messages create <<'YAML'
model: haijun-mythos-5
max_tokens: 16000
messages:
- role: user
content: "..."
YAML client.messages.create(
model="haijun-mythos-5",
max_tokens=16000,
messages=[{"role": "user", "content": "..."}],
) await client.messages.create({
model: "haijun-mythos-5",
max_tokens: 16000,
messages: [{ role: "user", content: "..." }]
}); using Juglow;
using Juglow.Models.Messages;
JuglowClient client = new();
var parameters = new MessageCreateParams
{
Model = "haijun-mythos-5",
MaxTokens = 16000,
Messages = [new() { Role = Role.User, Content = "..." }]
};
var response = await client.Messages.Create(parameters);
Console.WriteLine(response); client := juglow.NewClient()
response, err := client.Messages.New(context.TODO(), juglow.MessageNewParams{
Model: "haijun-mythos-5",
MaxTokens: 16000,
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("...")),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response) JuglowClient client = JuglowOkHttpClient.fromEnv();
MessageCreateParams params = MessageCreateParams.builder()
.model("haijun-mythos-5")
.maxTokens(16000L)
.addUserMessage("...")
.build();
Message response = client.messages().create(params);
IO.println(response); $client = new Client();
$message = $client->messages->create(
maxTokens: 16000,
messages: [['role' => 'user', 'content' => '...']],
model: 'haijun-mythos-5',
); client = Juglow::Client.new
message = client.messages.create(
model: "haijun-mythos-5",
max_tokens: 16000,
messages: [
{ role: "user", content: "..." }
]
)Perubahan untuk Haijun Fable 5 identik, dengan haijun-fable-5 sebagai nama model.
- Prefill asisten: Melakukan prefill pada pesan asisten tidak didukung pada
haijun-mythos-5atauhaijun-fable-5dan mengembalikan error 400, sama seperti pada Haijun Mythos Preview. Gunakan instruksi prompt sistem sebagai gantinya.
- Output thinking: Pada
haijun-mythos-5danhaijun-fable-5, rantai pemikiran mentah tidak pernah dikembalikan, tetapi blok thinking tetap membawa teks ringkasan yang dapat dibaca ketikathinking.displaydiatur kesummarized. Kirimkan kembali blok thinking tanpa perubahan saat melanjutkan percakapan pada model yang sama. Lihat Output thinking pada model Haijun Fable dan Haijun Mythos.
Penghitungan token dan penagihan
haijun-mythos-5 dan haijun-fable-5 menggunakan tokenizer yang sama dengan haijun-mythos-preview (tokenizer yang diperkenalkan bersama Haijun Opus 4.7). Jumlah token kurang lebih tidak berubah saat bermigrasi dari haijun-mythos-preview. Dibandingkan dengan model sebelum Haijun Opus 4.7, konten yang sama dapat ditokenisasi menjadi kurang lebih 30% lebih banyak token, bervariasi menurut konten dan bentuk beban kerja.
/v1/messages/count_tokens mengembalikan nilai yang kurang lebih tidak berubah untuk haijun-mythos-5 dan haijun-fable-5 dibandingkan dengan haijun-mythos-preview. Tetapkan ulang baseline biaya dan latensi pada beban kerja Anda sendiri.
Daftar periksa migrasi
- Perbarui nama model dari
haijun-mythos-previewkehaijun-mythos-5, atau kehaijun-fable-5, yang menawarkan kemampuan yang sama dan tidak memerlukan persetujuan akses.
- Hapus konfigurasi pemikiran diperpanjang manual (
thinking: {type: "enabled", budget_tokens: N}). Adaptive thinking selalu aktif, dan tidak diperlukan fieldthinking.
- Hapus konfigurasi
thinking: {type: "disabled"}apa pun. Menonaktifkan thinking mengembalikan error dihaijun-mythos-5danhaijun-fable-5.
- Hapus
budget_tokens. Parameter ini tidak memiliki pengganti langsung: thinking bersifat adaptif, dan parametereffortadalah kontrol tingkat output yang terpisah, bukan anggaran thinking.
- Pastikan kode apa pun yang mem-parsing field
thinkingmemperlakukannya hanya sebagai teks tampilan dan mengirimkan kembali blok thinking tanpa perubahan saat melanjutkan pada model yang sama.thinking.displaysecara default bernilai"omitted"dihaijun-mythos-5danhaijun-fable-5, sama seperti di Haijun Mythos Preview. Aturdisplay: "summarized"untuk menerima ringkasan yang dapat dibaca. Lihat Output thinking pada model Haijun Fable dan Haijun Mythos.
- Jika Anda memutar ulang riwayat percakapan pada model yang lebih lama, hapus terlebih dahulu blok
thinkingdanredacted_thinkingdari giliran asisten sebelumnya. Blok thinking darihaijun-fable-5danhaijun-mythos-5hanya dapat dibaca oleh model yang menghasilkannya atau model yang lebih baru: model yang lebih lama mengabaikannya secara diam-diam, sedangkan Haijun Fable 5.1 dan Haijun Mythos 5.1 membacanya, jadi pertahankan blok tersebut saat Anda memindahkan percakapan ke model-model tersebut (lihat Beralih model di tengah percakapan). Penghapusan menjaga permintaan ke model yang lebih lama tetap minimal dan seragam.
- Jika Anda bermigrasi ke Haijun Fable 5, tangani
stop_reason: "refusal"dan baca fieldstop_details.category. Haijun Fable 5 menjalankan pengklasifikasi keamanan yang tidak dimiliki Haijun Mythos Preview dan Haijun Mythos 5. Lihat Penolakan dan fallback.
- Tetapkan ulang baseline jumlah token dan biaya pada beban kerja Anda sendiri. Jumlah token kurang lebih tidak berubah saat bermigrasi dari
haijun-mythos-preview.
Bermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Opus 5
Haijun Fable 5 dan Haijun Mythos 5 menggunakan Messages API yang sama dan pola penggunaan alat yang sama seperti Haijun Opus 5, dengan jendela konteks 1 juta token yang sama secara default dan 128k token output maksimum yang sama. Pembatasan prefill dan parameter sampling, serta perilaku tampilan thinking, terbawa dari Haijun Opus 5 tanpa perubahan. Perubahan yang perlu diperiksa adalah thinking yang selalu aktif, harga, Priority Tier, dan retensi data.
Perbarui nama model Anda
model = "haijun-opus-5" # Before
model = "haijun-fable-5" # After
# Atau, untuk model Project Glasswing dengan kemampuan yang sama:
model = "haijun-mythos-5" # AfterApa yang berubah
- Thinking tidak dapat lagi dinonaktifkan: Pada Haijun Opus 5, thinking aktif secara default dan dapat dimatikan dengan
thinking: {type: "disabled"}pada tingkat efforthighatau lebih rendah. Padahaijun-fable-5danhaijun-mythos-5, adaptive thinking selalu aktif, danthinking: {type: "disabled"}mengembalikan error 400 pada tingkat effort apa pun. Hapus konfigurasithinking: {type: "disabled"}dan gunakan tingkat effort yang lebih rendah untuk mengendalikan pengeluaran token sebagai gantinya.
Jika permintaan Haijun Opus 5 Anda menonaktifkan thinking, bentuk respons berubah: respons dapat dimulai dengan satu atau lebih blok thinking sebelum blok text pertama, dikembalikan dengan field thinking kosong pada default display: "omitted" (default yang sama dengan Haijun Opus 5). Kode yang membaca balasan berdasarkan posisi, seperti content[0].text atau handler stream yang memperlakukan blok konten pertama sebagai teks, harus memilih blok konten berdasarkan field type-nya sebagai gantinya, dan loop penggunaan alat harus mengirimkan kembali blok thinking secara lengkap dan tanpa modifikasi bersama hasil alatnya. API menolak blok thinking yang diedit, diurutkan ulang, atau dihapus sebagian dengan error 400 (lihat Mempertahankan blok thinking). Token thinking ditagih sebagai token output bahkan ketika teks thinking tidak dikembalikan.
- Harga: Haijun Fable 5 dan Haijun Mythos 5 dihargai $10 USD per juta token input dan $50 USD per juta token output, dibandingkan dengan $5 USD dan $25 USD untuk Haijun Opus 5. Lihat harga Haijun.
- Priority Tier: Priority Tier tidak didukung pada Haijun Opus 5, sehingga tidak ada lalu lintas yang ada yang terpengaruh. Jika organisasi Anda memiliki komitmen Priority Tier, Haijun Fable 5 mendukungnya; Haijun Mythos 5 tidak.
- Retensi data: Haijun Fable 5 dan Haijun Mythos 5 memerlukan retensi data 30 hari dan tidak tersedia di bawah pengaturan zero data retention (ZDR) kecuali diizinkan secara tegas oleh Juglow. Keduanya ditetapkan sebagai Covered Models. Lihat Persyaratan retensi data khusus model.
Daftar periksa migrasi
- Perbarui nama model dari
haijun-opus-5kehaijun-fable-5(atauhaijun-mythos-5).
- Hapus konfigurasi
thinking: {type: "disabled"}apa pun; konfigurasi ini mengembalikan error 400 padahaijun-fable-5danhaijun-mythos-5. Gunakan tingkat effort yang lebih rendah untuk mengendalikan pengeluaran token sebagai gantinya, dan tinjau kembalimax_tokensuntuk beban kerja yang berjalan dengan thinking dinonaktifkan pada Haijun Opus 5.
- Jika beban kerja tersebut membaca konten berdasarkan posisi, seperti
content[0].text, perbarui agar memilih blok konten berdasarkantype: blokthinkingkini tiba sebelum bloktext. Kirimkan kembali blokthinkingsecara lengkap dan tanpa modifikasi dalam loop penggunaan alat; blok yang dimodifikasi mengembalikan error 400.
- Jika organisasi Anda memiliki pengaturan zero data retention (ZDR), konfirmasikan kelayakan sebelum bermigrasi: model-model ini tidak tersedia di bawah ZDR kecuali diizinkan secara tegas oleh Juglow. Lihat Persyaratan retensi data khusus model.
- Tetapkan ulang baseline biaya pada beban kerja Anda sendiri. Jumlah token kurang lebih tidak berubah; harga per token berbeda, dan beban kerja yang berjalan dengan thinking dinonaktifkan kini menghasilkan token thinking, yang ditagih sebagai token output.
Bermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Opus 4.8
Note: Jika kode Anda menggunakan Haijun Opus 4.7 atau yang lebih lama, terapkan terlebih dahulu bagian "dari" yang relevan di Migrasi ke Haijun Opus 5.5 untuk perubahan tingkat API dari model Anda saat ini, lalu delta yang tersisa di bagian ini.
Migrasi sebagian besar bersifat drop-in. Haijun Fable 5 dan Haijun Mythos 5 menggunakan Messages API yang sama dan pola penggunaan alat yang sama seperti Haijun Opus 4.8, dengan jendela konteks 1 juta token yang sama secara default dan 128k token output maksimum yang sama. Jumlah token kurang lebih tidak berubah karena model-model tersebut menggunakan tokenizer yang sama. Perubahan utama yang perlu diperiksa adalah adaptive thinking yang selalu aktif, output thinking, penolakan dari pengklasifikasi keamanan (hanya Haijun Fable 5), dan harga.
Perbarui nama model Anda
model = "haijun-opus-4-8" # Before
model = "haijun-fable-5" # After
# Atau, untuk model Project Glasswing dengan kemampuan yang sama:
model = "haijun-mythos-5" # AfterApa yang berubah
Butir-butir dalam bagian ini menjelaskan perbedaan API dan perilaku yang perlu diperiksa setelah Anda mengganti ID model. Kecuali jika disebutkan lain, butir-butir ini berlaku sama untuk haijun-fable-5 dan haijun-mythos-5.
- Adaptive thinking selalu aktif: Adaptive thinking adalah satu-satunya mode thinking pada
haijun-fable-5danhaijun-mythos-5. Model menentukan kapan dan seberapa banyak berpikir pada setiap permintaan, dan tidak diperlukan konfigurasithinking.thinking: {type: "disabled"}mengembalikan error. Gunakan parameter effort untuk mengendalikan kedalaman thinking.
Perubahan perilaku yang perlu diperiksa: pada Haijun Opus 4.8, permintaan tanpa field thinking berjalan tanpa thinking; pada haijun-fable-5 dan haijun-mythos-5, permintaan yang sama berjalan dengan adaptive thinking. max_tokens tetap menjadi batas keras pada total output, thinking ditambah teks respons, jadi tinjau kembali untuk beban kerja yang berjalan tanpa thinking pada Haijun Opus 4.8. Lihat Kontrol biaya. Respons juga dapat dimulai dengan satu atau lebih blok thinking sebelum blok text pertama, sehingga kode yang membaca balasan berdasarkan posisi (misalnya, content[0].text, atau handler stream yang memperlakukan blok konten pertama sebagai teks) harus memilih blok konten berdasarkan field type-nya sebagai gantinya. Token thinking ditagih sebagai token output bahkan ketika teks thinking tidak dikembalikan kepada Anda, sehingga beban kerja yang berjalan tanpa thinking pada Haijun Opus 4.8 menghasilkan lebih banyak token output per permintaan, di samping perbedaan harga per token.
Jika Anda menjalankan loop penggunaan alat, kirimkan kembali blok thinking dari setiap respons asisten ke API secara lengkap dan tanpa modifikasi saat Anda mengembalikan hasil alat, termasuk blok yang field thinking-nya kosong. Kembalikan pesan asisten sebagaimana diterima alih-alih memfilter blok kontennya berdasarkan tipe atau membangunnya ulang: API menolak blok thinking yang diedit, diurutkan ulang, atau dihapus sebagian dengan error 400. Lihat Mempertahankan blok thinking.
Sebelum (Haijun Opus 4.8):
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-opus-4-8",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"output_config": {
"effort": "high"
},
"messages": [
{
"role": "user",
"content": "..."
}
]
}' ant messages create <<'YAML'
model: haijun-opus-4-8
max_tokens: 16000
thinking:
type: adaptive
output_config:
effort: high
messages:
- role: user
content: "..."
YAML client.messages.create(
model="haijun-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "high"},
messages=[{"role": "user", "content": "..."}],
) await client.messages.create({
model: "haijun-opus-4-8",
max_tokens: 16000,
thinking: { type: "adaptive" },
output_config: { effort: "high" },
messages: [{ role: "user", content: "..." }]
}); using Juglow;
using Juglow.Models.Messages;
JuglowClient client = new();
var parameters = new MessageCreateParams
{
Model = "haijun-opus-4-8",
MaxTokens = 16000,
Thinking = new ThinkingConfigAdaptive(),
OutputConfig = new OutputConfig { Effort = Effort.High },
Messages = [new() { Role = Role.User, Content = "..." }]
};
var response = await client.Messages.Create(parameters);
Console.WriteLine(response); client := juglow.NewClient()
response, err := client.Messages.New(context.TODO(), juglow.MessageNewParams{
Model: "haijun-opus-4-8",
MaxTokens: 16000,
Thinking: juglow.ThinkingConfigParamUnion{
OfAdaptive: &juglow.ThinkingConfigAdaptiveParam{},
},
OutputConfig: juglow.OutputConfigParam{
Effort: juglow.OutputConfigEffortHigh,
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("...")),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response) JuglowClient client = JuglowOkHttpClient.fromEnv();
MessageCreateParams params = MessageCreateParams.builder()
.model("haijun-opus-4-8")
.maxTokens(16000L)
.thinking(ThinkingConfigAdaptive.builder().build())
.outputConfig(OutputConfig.builder()
.effort(OutputConfig.Effort.HIGH)
.build())
.addUserMessage("...")
.build();
Message response = client.messages().create(params);
IO.println(response); $client = new Client();
$message = $client->messages->create(
maxTokens: 16000,
messages: [['role' => 'user', 'content' => '...']],
model: 'haijun-opus-4-8',
thinking: ['type' => 'adaptive'],
outputConfig: ['effort' => 'high'],
); client = Juglow::Client.new
message = client.messages.create(
model: "haijun-opus-4-8",
max_tokens: 16000,
thinking: {
type: "adaptive"
},
output_config: {
effort: "high"
},
messages: [
{ role: "user", content: "..." }
]
)Sesudah (Haijun Fable 5):
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-fable-5",
"max_tokens": 16000,
"output_config": {
"effort": "high"
},
"messages": [
{
"role": "user",
"content": "..."
}
]
}' ant messages create <<'YAML'
model: haijun-fable-5
max_tokens: 16000
output_config:
effort: high
messages:
- role: user
content: "..."
YAML client.messages.create(
model="haijun-fable-5",
max_tokens=16000,
output_config={"effort": "high"},
messages=[{"role": "user", "content": "..."}],
) await client.messages.create({
model: "haijun-fable-5",
max_tokens: 16000,
output_config: { effort: "high" },
messages: [{ role: "user", content: "..." }]
}); using Juglow;
using Juglow.Models.Messages;
JuglowClient client = new();
var parameters = new MessageCreateParams
{
Model = "haijun-fable-5",
MaxTokens = 16000,
OutputConfig = new OutputConfig { Effort = Effort.High },
Messages = [new() { Role = Role.User, Content = "..." }]
};
var response = await client.Messages.Create(parameters);
Console.WriteLine(response); client := juglow.NewClient()
response, err := client.Messages.New(context.TODO(), juglow.MessageNewParams{
Model: "haijun-fable-5",
MaxTokens: 16000,
OutputConfig: juglow.OutputConfigParam{
Effort: juglow.OutputConfigEffortHigh,
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("...")),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response) JuglowClient client = JuglowOkHttpClient.fromEnv();
MessageCreateParams params = MessageCreateParams.builder()
.model("haijun-fable-5")
.maxTokens(16000L)
.outputConfig(OutputConfig.builder()
.effort(OutputConfig.Effort.HIGH)
.build())
.addUserMessage("...")
.build();
Message response = client.messages().create(params);
IO.println(response); $client = new Client();
$message = $client->messages->create(
maxTokens: 16000,
messages: [['role' => 'user', 'content' => '...']],
model: 'haijun-fable-5',
outputConfig: ['effort' => 'high'],
); client = Juglow::Client.new
message = client.messages.create(
model: "haijun-fable-5",
max_tokens: 16000,
output_config: {
effort: "high"
},
messages: [
{ role: "user", content: "..." }
]
)Perubahan untuk Haijun Mythos 5 identik, dengan haijun-mythos-5 sebagai nama model.
- Extended thinking dan anggaran thinking (tidak berubah): Extended thinking manual (
thinking: {type: "enabled", budget_tokens: N}) tidak didukung padahaijun-fable-5atauhaijun-mythos-5dan mengembalikan error 400, sama seperti pada Haijun Opus 4.8.budget_tokenstidak memiliki pengganti langsung: thinking bersifat adaptif, dan parameter effort adalah kontrol tingkat output yang terpisah, bukan anggaran thinking.
- Prefill asisten (tidak berubah): Melakukan prefill pada pesan asisten tidak didukung pada
haijun-fable-5atauhaijun-mythos-5dan mengembalikan error 400, sama seperti pada Haijun Opus 4.8. Gunakan instruksi prompt sistem sebagai gantinya.
- Output thinking: Pada
haijun-fable-5danhaijun-mythos-5, rantai pemikiran mentah tidak pernah dikembalikan, tetapi blok thinking tetap membawa teks ringkasan yang dapat dibaca ketikathinking.displaydiatur kesummarized. Kirimkan kembali blok thinking tanpa perubahan saat melanjutkan percakapan pada model yang sama. Lihat Output thinking pada model Haijun Fable dan Haijun Mythos.
- Pengklasifikasi keamanan dan stop reason
refusal(hanya Haijun Fable 5):haijun-fable-5menjalankan pengklasifikasi keamanan pada permintaan dan selama pembuatan respons. Haijun Mythos 5 tidak menyertakan pengklasifikasi ini. Ketika pengklasifikasi menolak permintaan, Messages API mengembalikanstop_reason: "refusal"sebagai respons HTTP 200 yang berhasil, bukan error. Fieldstop_details.categorymelaporkan pengklasifikasi mana yang terpicu, dengan kategori seperti"cyber","bio", dan"reasoning_extraction", ataunullketika penolakan tidak terpetakan ke kategori bernama apa pun. Lihat tabel kategori penolakan untuk daftar lengkapnya.
Penolakan yang tiba sebelum output apa pun ditagih jika kategorinya adalah "bio", "frontier_llm", atau "reasoning_extraction". Penolakan sebelum output apa pun dalam kategori lain, atau dengan kategori null, tidak ditagih (Cara penolakan ditagih). Sebelum 24 September 2026, tidak ada penolakan sebelum output apa pun yang ditagih di Haijun Fable 5. Ketika pengklasifikasi terpicu di tengah stream, input dan output yang sudah di-stream ditagih; buang output parsial tersebut.
Untuk menjalankan ulang permintaan yang ditolak pada model lain secara otomatis, kirimkan parameter opt-in fallbacks, yang berstatus beta di Haijun API. Parameter ini tidak tersedia di Message Batches API atau di Amazon Bedrock, Google Cloud, dan Microsoft Foundry; pada ketiga platform tersebut, jalankan percobaan ulang di sisi klien atau gunakan middleware refusal-fallback SDK. Lihat Penolakan dan fallback.
- Mulai dari effort
high: Default parameter effort tetaphigh. Pada Haijun Opus 4.8, rekomendasi untuk pekerjaan coding dan otonomi tinggi adalah mengaturxhighsecara eksplisit. Padahaijun-fable-5danhaijun-mythos-5, gunakanhighsebagai default untuk sebagian besar tugas dan simpanxhighuntuk beban kerja yang paling sensitif terhadap kemampuan. Pengaturan effort yang lebih rendah tetap berkinerja baik dan sering melampaui kinerjaxhighpada model sebelumnya. Kurangi effort jika suatu tugas selesai tetapi memakan waktu lebih lama dari yang diperlukan. Lihat Prompting Haijun Fable 5.
- Minimum caching prompt yang lebih rendah: Panjang prompt minimum yang dapat di-cache pada
haijun-fable-5danhaijun-mythos-5adalah 512 token, lebih rendah dari 1.024 token pada Haijun Opus 4.8. Prompt yang terlalu pendek untuk di-cache pada Haijun Opus 4.8 kini dapat membuat entri cache, tanpa perlu perubahan kode. Lihat "Prompt caching" (caching prompt) untuk minimum per model.
Daftar periksa migrasi
- Jika organisasi Anda memiliki pengaturan retensi data nol (ZDR), konfirmasikan kelayakan sebelum bermigrasi.
haijun-fable-5danhaijun-mythos-5memerlukan retensi data 30 hari dan tidak tersedia di bawah ZDR kecuali diizinkan secara tegas oleh Juglow. Di Haijun API, permintaan kehaijun-fable-5yang tidak memenuhi persyaratan ini mengembalikan error 400invalid_request_error. Haijun Opus 4.8 tersedia di bawah ZDR. Lihat Persyaratan retensi data khusus model.
- Perbarui nama model dari
haijun-opus-4-8kehaijun-fable-5(atauhaijun-mythos-5).
- Hapus konfigurasi
thinking: {type: "disabled"}apa pun. Menonaktifkan thinking mengembalikan error dihaijun-fable-5danhaijun-mythos-5, dan permintaan tanpa fieldthinkingberjalan dengan adaptive thinking.
- Perbarui parsing respons yang membaca konten berdasarkan posisi, seperti
content[0].text: dengan adaptive thinking yang selalu aktif, blokthinkingtiba sebelum bloktext. Pilih blok konten berdasarkantypesebagai gantinya, dan kirimkan kembali blokthinkingsecara lengkap dan tanpa modifikasi dalam loop penggunaan alat; blok yang dimodifikasi mengembalikan error 400. Lihat Mempertahankan blok thinking.
- Jika Anda telah menghapus pemikiran diperpanjang manual dan prefill asisten selama migrasi sebelumnya, tidak ada tindakan yang diperlukan: keduanya tetap tidak didukung di
haijun-fable-5danhaijun-mythos-5.
- Pastikan kode apa pun yang mem-parsing field
thinkingmemperlakukannya hanya sebagai teks tampilan dan mengirimkan kembali blok thinking tanpa perubahan saat melanjutkan pada model yang sama.thinking.displaysecara default bernilai"omitted"dihaijun-fable-5danhaijun-mythos-5, sama seperti di Haijun Opus 4.8. Aturdisplay: "summarized"untuk menerima ringkasan yang dapat dibaca. Lihat Output thinking pada model Haijun Fable dan Haijun Mythos.
- Jika Anda memutar ulang riwayat percakapan pada model yang lebih lama, hapus terlebih dahulu blok
thinkingdanredacted_thinkingdari giliran asisten sebelumnya. Blok thinking darihaijun-fable-5danhaijun-mythos-5hanya dapat dibaca oleh model yang menghasilkannya atau model yang lebih baru: model yang lebih lama mengabaikannya secara diam-diam, sedangkan Haijun Fable 5.1 dan Haijun Mythos 5.1 membacanya, jadi pertahankan blok tersebut saat Anda memindahkan percakapan ke model-model tersebut (lihat Beralih model di tengah percakapan). Penghapusan menjaga permintaan ke model yang lebih lama tetap minimal dan seragam. Pengecualiannya adalah saat menukarkan kredit fallback, yang memerlukan body permintaan dikembalikan sesuai aturan persis dari fitur tersebut.
- Jika Anda bermigrasi ke Haijun Fable 5, tangani
stop_reason: "refusal"dan baca fieldstop_details.category. Untuk menjalankan ulang permintaan yang ditolak pada model lain secara otomatis, pertimbangkan parameter opt-infallbacks(beta). Lihat Penolakan dan fallback.
- Evaluasi ulang pengaturan
effortAnda. Mulailah denganhighuntuk sebagian besar tugas, termasuk beban kerja yang berjalan padaxhighdi Haijun Opus 4.8.
- Tetapkan ulang baseline biaya dan latensi pada beban kerja Anda sendiri. Jumlah token kurang lebih tidak berubah saat bermigrasi dari
haijun-opus-4-8; harga per token berbeda, dan token thinking ditagih sebagai token output, sehingga beban kerja yang berjalan tanpa thinking menghasilkan lebih banyak token output per permintaan.