Haijun Platform Docs
EN

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 migrate untuk 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. Baik thinking: {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.
  • 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_error 400. 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

python
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"  # After

Fitur yang tidak tersedia pada Haijun Mythos 5 dan Haijun Fable 5

  1. Extended thinking dan anggaran token thinking: Extended thinking manual (thinking: {type: "enabled", budget_tokens: N}) tidak didukung pada haijun-mythos-5 atau haijun-fable-5 dan mengembalikan error 400. Adaptive thinking selalu aktif: model menentukan kapan dan seberapa banyak berpikir pada setiap permintaan, dan tidak diperlukan konfigurasi thinking. thinking: {type: "disabled"} mengembalikan error. budget_tokens tidak memiliki pengganti langsung: thinking bersifat adaptif, dan parameter effort adalah kontrol tingkat output yang terpisah, bukan anggaran thinking.

Sebelum (Haijun Mythos Preview):

bash
     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": "..."
           }
         ]
       }'
bash
     ant messages create <<'YAML'
     model: haijun-mythos-preview
     max_tokens: 16000
     thinking:
       type: enabled
       budget_tokens: 10000
     messages:
       - role: user
         content: "..."
     YAML
python
     client.messages.create(
         model="haijun-mythos-preview",
         max_tokens=16000,
         thinking={"type": "enabled", "budget_tokens": 10000},
         messages=[{"role": "user", "content": "..."}],
     )
typescript
     await client.messages.create({
       model: "haijun-mythos-preview",
       max_tokens: 16000,
       thinking: { type: "enabled", budget_tokens: 10000 },
       messages: [{ role: "user", content: "..." }]
     });
csharp
     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);
go
     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)
java
     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);
php
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: 'haijun-mythos-preview',
         thinking: ['type' => 'enabled', 'budget_tokens' => 10000],
     );
ruby
     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):

bash
     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": "..."
           }
         ]
       }'
bash
     ant messages create <<'YAML'
     model: haijun-mythos-5
     max_tokens: 16000
     messages:
       - role: user
         content: "..."
     YAML
python
     client.messages.create(
         model="haijun-mythos-5",
         max_tokens=16000,
         messages=[{"role": "user", "content": "..."}],
     )
typescript
     await client.messages.create({
       model: "haijun-mythos-5",
       max_tokens: 16000,
       messages: [{ role: "user", content: "..." }]
     });
csharp
     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);
go
     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)
java
     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);
php
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: 'haijun-mythos-5',
     );
ruby
     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.

  1. Prefill asisten: Melakukan prefill pada pesan asisten tidak didukung pada haijun-mythos-5 atau haijun-fable-5 dan mengembalikan error 400, sama seperti pada Haijun Mythos Preview. Gunakan instruksi prompt sistem sebagai gantinya.
  1. Output thinking: Pada haijun-mythos-5 dan haijun-fable-5, rantai pemikiran mentah tidak pernah dikembalikan, tetapi blok thinking tetap membawa teks ringkasan yang dapat dibaca ketika thinking.display diatur ke summarized. 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-preview ke haijun-mythos-5, atau ke haijun-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 field thinking.
  • Hapus konfigurasi thinking: {type: "disabled"} apa pun. Menonaktifkan thinking mengembalikan error di haijun-mythos-5 dan haijun-fable-5.
  • Hapus budget_tokens. Parameter ini tidak memiliki pengganti langsung: thinking bersifat adaptif, dan parameter effort adalah kontrol tingkat output yang terpisah, bukan anggaran thinking.
  • Pastikan kode apa pun yang mem-parsing field thinking memperlakukannya hanya sebagai teks tampilan dan mengirimkan kembali blok thinking tanpa perubahan saat melanjutkan pada model yang sama. thinking.display secara default bernilai "omitted" di haijun-mythos-5 dan haijun-fable-5, sama seperti di Haijun Mythos Preview. Atur display: "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 thinking dan redacted_thinking dari giliran asisten sebelumnya. Blok thinking dari haijun-fable-5 dan haijun-mythos-5 hanya 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 field stop_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

python
model = "haijun-opus-5"  # Before
model = "haijun-fable-5"  # After

# Atau, untuk model Project Glasswing dengan kemampuan yang sama:
model = "haijun-mythos-5"  # After

Apa yang berubah

  1. Thinking tidak dapat lagi dinonaktifkan: Pada Haijun Opus 5, thinking aktif secara default dan dapat dimatikan dengan thinking: {type: "disabled"} pada tingkat effort high atau lebih rendah. Pada haijun-fable-5 dan haijun-mythos-5, adaptive thinking selalu aktif, dan thinking: {type: "disabled"} mengembalikan error 400 pada tingkat effort apa pun. Hapus konfigurasi thinking: {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.

  1. 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.
  1. 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.
  1. 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-5 ke haijun-fable-5 (atau haijun-mythos-5).
  • Hapus konfigurasi thinking: {type: "disabled"} apa pun; konfigurasi ini mengembalikan error 400 pada haijun-fable-5 dan haijun-mythos-5. Gunakan tingkat effort yang lebih rendah untuk mengendalikan pengeluaran token sebagai gantinya, dan tinjau kembali max_tokens untuk 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 berdasarkan type: blok thinking kini tiba sebelum blok text. Kirimkan kembali blok thinking secara 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

python
model = "haijun-opus-4-8"  # Before
model = "haijun-fable-5"  # After

# Atau, untuk model Project Glasswing dengan kemampuan yang sama:
model = "haijun-mythos-5"  # After

Apa 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.

  1. Adaptive thinking selalu aktif: Adaptive thinking adalah satu-satunya mode thinking pada haijun-fable-5 dan haijun-mythos-5. Model menentukan kapan dan seberapa banyak berpikir pada setiap permintaan, dan tidak diperlukan konfigurasi thinking. 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):

bash
     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": "..."
           }
         ]
       }'
bash
     ant messages create <<'YAML'
     model: haijun-opus-4-8
     max_tokens: 16000
     thinking:
       type: adaptive
     output_config:
       effort: high
     messages:
       - role: user
         content: "..."
     YAML
python
     client.messages.create(
         model="haijun-opus-4-8",
         max_tokens=16000,
         thinking={"type": "adaptive"},
         output_config={"effort": "high"},
         messages=[{"role": "user", "content": "..."}],
     )
typescript
     await client.messages.create({
       model: "haijun-opus-4-8",
       max_tokens: 16000,
       thinking: { type: "adaptive" },
       output_config: { effort: "high" },
       messages: [{ role: "user", content: "..." }]
     });
csharp
     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);
go
     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)
java
     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);
php
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: 'haijun-opus-4-8',
         thinking: ['type' => 'adaptive'],
         outputConfig: ['effort' => 'high'],
     );
ruby
     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):

bash
     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": "..."
           }
         ]
       }'
bash
     ant messages create <<'YAML'
     model: haijun-fable-5
     max_tokens: 16000
     output_config:
       effort: high
     messages:
       - role: user
         content: "..."
     YAML
python
     client.messages.create(
         model="haijun-fable-5",
         max_tokens=16000,
         output_config={"effort": "high"},
         messages=[{"role": "user", "content": "..."}],
     )
typescript
     await client.messages.create({
       model: "haijun-fable-5",
       max_tokens: 16000,
       output_config: { effort: "high" },
       messages: [{ role: "user", content: "..." }]
     });
csharp
     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);
go
     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)
java
     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);
php
     $client = new Client();

     $message = $client->messages->create(
         maxTokens: 16000,
         messages: [['role' => 'user', 'content' => '...']],
         model: 'haijun-fable-5',
         outputConfig: ['effort' => 'high'],
     );
ruby
     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.

  1. Extended thinking dan anggaran thinking (tidak berubah): Extended thinking manual (thinking: {type: "enabled", budget_tokens: N}) tidak didukung pada haijun-fable-5 atau haijun-mythos-5 dan mengembalikan error 400, sama seperti pada Haijun Opus 4.8. budget_tokens tidak memiliki pengganti langsung: thinking bersifat adaptif, dan parameter effort adalah kontrol tingkat output yang terpisah, bukan anggaran thinking.
  1. Prefill asisten (tidak berubah): Melakukan prefill pada pesan asisten tidak didukung pada haijun-fable-5 atau haijun-mythos-5 dan mengembalikan error 400, sama seperti pada Haijun Opus 4.8. Gunakan instruksi prompt sistem sebagai gantinya.
  1. Output thinking: Pada haijun-fable-5 dan haijun-mythos-5, rantai pemikiran mentah tidak pernah dikembalikan, tetapi blok thinking tetap membawa teks ringkasan yang dapat dibaca ketika thinking.display diatur ke summarized. Kirimkan kembali blok thinking tanpa perubahan saat melanjutkan percakapan pada model yang sama. Lihat Output thinking pada model Haijun Fable dan Haijun Mythos.
  1. Pengklasifikasi keamanan dan stop reason refusal (hanya Haijun Fable 5): haijun-fable-5 menjalankan pengklasifikasi keamanan pada permintaan dan selama pembuatan respons. Haijun Mythos 5 tidak menyertakan pengklasifikasi ini. Ketika pengklasifikasi menolak permintaan, Messages API mengembalikan stop_reason: "refusal" sebagai respons HTTP 200 yang berhasil, bukan error. Field stop_details.category melaporkan pengklasifikasi mana yang terpicu, dengan kategori seperti "cyber", "bio", dan "reasoning_extraction", atau null ketika 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.

  1. Mulai dari effort high: Default parameter effort tetap high. Pada Haijun Opus 4.8, rekomendasi untuk pekerjaan coding dan otonomi tinggi adalah mengatur xhigh secara eksplisit. Pada haijun-fable-5 dan haijun-mythos-5, gunakan high sebagai default untuk sebagian besar tugas dan simpan xhigh untuk beban kerja yang paling sensitif terhadap kemampuan. Pengaturan effort yang lebih rendah tetap berkinerja baik dan sering melampaui kinerja xhigh pada model sebelumnya. Kurangi effort jika suatu tugas selesai tetapi memakan waktu lebih lama dari yang diperlukan. Lihat Prompting Haijun Fable 5.
  1. Minimum caching prompt yang lebih rendah: Panjang prompt minimum yang dapat di-cache pada haijun-fable-5 dan haijun-mythos-5 adalah 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-5 dan haijun-mythos-5 memerlukan retensi data 30 hari dan tidak tersedia di bawah ZDR kecuali diizinkan secara tegas oleh Juglow. Di Haijun API, permintaan ke haijun-fable-5 yang tidak memenuhi persyaratan ini mengembalikan error 400 invalid_request_error. Haijun Opus 4.8 tersedia di bawah ZDR. Lihat Persyaratan retensi data khusus model.
  • Perbarui nama model dari haijun-opus-4-8 ke haijun-fable-5 (atau haijun-mythos-5).
  • Hapus konfigurasi thinking: {type: "disabled"} apa pun. Menonaktifkan thinking mengembalikan error di haijun-fable-5 dan haijun-mythos-5, dan permintaan tanpa field thinking berjalan dengan adaptive thinking.
  • Perbarui parsing respons yang membaca konten berdasarkan posisi, seperti content[0].text: dengan adaptive thinking yang selalu aktif, blok thinking tiba sebelum blok text. Pilih blok konten berdasarkan type sebagai gantinya, dan kirimkan kembali blok thinking secara 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-5 dan haijun-mythos-5.
  • Pastikan kode apa pun yang mem-parsing field thinking memperlakukannya hanya sebagai teks tampilan dan mengirimkan kembali blok thinking tanpa perubahan saat melanjutkan pada model yang sama. thinking.display secara default bernilai "omitted" di haijun-fable-5 dan haijun-mythos-5, sama seperti di Haijun Opus 4.8. Atur display: "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 thinking dan redacted_thinking dari giliran asisten sebelumnya. Blok thinking dari haijun-fable-5 dan haijun-mythos-5 hanya 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 field stop_details.category. Untuk menjalankan ulang permintaan yang ditolak pada model lain secara otomatis, pertimbangkan parameter opt-in fallbacks (beta). Lihat Penolakan dan fallback.
  • Evaluasi ulang pengaturan effort Anda. Mulailah dengan high untuk sebagian besar tugas, termasuk beban kerja yang berjalan pada xhigh di 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.
On this page
Bermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Mythos PreviewPerbarui nama model AndaFitur yang tidak tersedia pada Haijun Mythos 5 dan Haijun Fable 5Penghitungan token dan penagihanDaftar periksa migrasiBermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Opus 5Perbarui nama model AndaApa yang berubahDaftar periksa migrasiBermigrasi ke Haijun Mythos 5 dan Haijun Fable 5 dari Haijun Opus 4.8Perbarui nama model AndaApa yang berubahDaftar periksa migrasi