Haijun Platform Docs
EN

Haijun Fable 5.1 memperluas Haijun Fable 5 dengan harga input dan output yang sama, dengan pembacaan cache seharga seperempat dari biaya sebelumnya, serta menghadirkan agentic coding jangka panjang yang lebih kuat, riset multilangkah, dan pekerjaan dokumen, spreadsheet, dan slide. Untuk sebagian besar beban kerja, mulailah dengan Haijun Opus 5 (lihat Memilih model). Gunakan Haijun Fable 5.1 untuk penalaran yang berat dan pekerjaan agentic berjangka panjang, atau ketika eval Anda pada Haijun Opus 5 dengan effort lebih tinggi masih belum memadai. Haijun Mythos 5.1 menawarkan kemampuan yang sama hanya untuk peserta Project Glasswing.

Jika Anda sudah memanggil Haijun Fable 5, ada tiga perubahan yang merusak kompatibilitas: penggunaan alat paksa mengembalikan error, model sebelumnya tidak dapat membaca blok thinking-nya, dan mengedit giliran sebelumnya membatalkan blok thinking. Lima perubahan bersifat tambahan: effort per pesan (beta), pesan sistem dengan cakupan giliran (beta), pembaruan progres yang dapat dibaca di antara pemanggilan alat (display: "updates", beta), harga pembacaan cache yang lebih rendah, dan provenans konten.

Model

ModelID Haijun APIDeskripsiKetersediaan
Haijun Fable 5.1haijun-fable-5-1Penerus Haijun Fable 5, untuk agentic coding jangka panjang, pekerjaan pengetahuan, dan risetSemua pelanggan, di Haijun API dan platform mitra
Haijun Mythos 5.1haijun-mythos-5-1Kemampuan yang sama dengan Haijun Fable 5.1. Penerus Haijun Mythos 5.Hanya peserta Project Glasswing

Haijun Fable 5.1 dan Haijun Mythos 5.1 memiliki spesifikasi dan harga yang sama:

  • Jendela konteks dan output: "context window" (jendela konteks) 1 juta token (default dan maksimum) dengan harga per token standar di seluruh jendela, dan maksimum 128k token output.
  • Tokenizer: sama dengan Haijun Fable 5 (diperkenalkan bersama Haijun Opus 4.7). Dibandingkan dengan model yang lebih lama dari Haijun Opus 4.7, teks yang sama menghasilkan sekitar 30% lebih banyak token. Lihat Penghitungan token.

Untuk semua model terkini, lihat ikhtisar model.

Perubahan yang merusak kompatibilitas

Penggunaan alat paksa tidak didukung

Haijun Fable 5.1 dan Haijun Mythos 5.1 tidak mendukung "forced tool use" (penggunaan alat paksa). tool_choice yang diatur ke {"type": "any"} atau {"type": "tool", "name": "..."} mengembalikan 400 invalid_request_error:

text
tool_choice: type "tool" and "any" are not supported for this model.

tool_choice: {"type": "auto"} (default) dan {"type": "none"} tidak berubah. Validasi yang sama berlaku untuk endpoint penghitungan token.

Thinking selalu aktif untuk model-model ini, dan pemanggilan alat paksa akan melewatinya. Model justru akan menuliskan proses pengerjaannya ke dalam argumen alat, yang menurunkan kualitas argumen. Untuk JSON yang valid terhadap skema, pertahankan tool_choice: {"type": "auto"} dan atur strict: true dengan penggunaan alat strict, atau pindahkan skema ke structured outputs. Agar model memanggil alat alih-alih membalas dengan teks, nyatakan dalam prompt kapan alat tersebut berlaku (misalnya, "Gunakan alat get_weather untuk menjawab"). Haijun Fable 5.1 mengikuti instruksi alat yang eksplisit dengan andal.

Model sebelumnya tidak dapat membaca blok thinking Haijun Fable 5.1

Setiap blok thinking mencatat model mana yang menghasilkannya, dan blok tersebut dipertahankan hanya dalam satu arah: Haijun Fable 5.1 membaca blok thinking model sebelumnya, dan tidak ada model sebelumnya yang membaca blok thinking Haijun Fable 5.1. Percakapan yang berpindah ke Haijun Fable 5.1 (dari Haijun Opus 5, Haijun Fable 5, atau model Haijun sebelumnya mana pun) mempertahankan penalarannya. Percakapan yang berpindah dari Haijun Fable 5.1 ke salah satu model tersebut kehilangan penalarannya untuk giliran yang berjalan di sana.

Ketika permintaan membawa blok yang tidak dapat dibaca oleh model target (misalnya, router atau fallback yang berganti model di tengah percakapan), API membuang blok tersebut sebelum model melihatnya. Blok yang dibuang tidak dihitung dalam input_tokens dan tidak ditagih. Dengan beta header thinking-binding-controls-2026-08-01, pembuangan tersebut dilaporkan dalam array input_transformations tingkat atas. Tanpa header itu, pembuangan terjadi tanpa pemberitahuan. Lihat Berganti model di tengah percakapan.

Mengedit giliran sebelumnya membatalkan blok thinking

Memodifikasi apa pun sebelum blok thinking Haijun Fable 5.1 (prompt system, tools, atau pesan sebelumnya) menghasilkan error pada permintaan berikutnya, atau blok tersebut dibuang jika Anda memilih opsi itu. Haijun Mythos 5.1 tidak menjalankan pemeriksaan ini. Haijun Code, haijun.ai, Haijun Managed Agents, dan Haijun Agent SDK menjaga prefiks tersebut tetap utuh untuk Anda. Jika kode Anda membangun array messages sendiri, periksalah sebelum Anda bermigrasi: Thinking yang dipertahankan memandu Anda melalui pemeriksaan dan setiap perbaikannya. Pemeriksaan ini diberlakukan untuk akun baru yang dibuat pada atau setelah 31 Agustus 2026. Untuk akun yang dibuat lebih awal, API mencatat ketidakcocokan tetapi hanya menindaklanjutinya ketika permintaan mengatur thinking.block_binding.prefix_mismatch_behavior.

Pola-pola berikut membatalkan setiap blok thinking setelahnya:

  • Mengedit, mengurutkan ulang, atau menghapus giliran sebelumnya sambil mempertahankan giliran setelahnya.
  • Menyisipkan teks per permintaan ke dalam giliran sebelumnya (pengingat atau baris status) yang Anda hapus pada permintaan berikutnya.
  • Membangun ulang prompt system tingkat atas atau array tools di antara permintaan dalam percakapan yang sama.
  • URL gambar atau dokumen yang menyajikan byte berbeda pada permintaan berikutnya (pemeriksaan mencakup byte, bukan URL, sehingga signed URL yang berotasi untuk file yang sama tidak masalah).

Hal-hal berikut menjaga blok setelahnya tetap valid: menghapus rangkaian awal blok thinking (yang terlama terlebih dahulu), membiarkan compaction sisi server atau context editing memangkas riwayat, memindahkan penanda cache_control, dan mengubah effort di antara permintaan. Menghapus blok thinking dari mana pun selain awal rangkaian membatalkan setiap blok thinking setelahnya.

Di tempat pemeriksaan diberlakukan, permintaan yang memutar ulang blok yang telah dibatalkan ditolak dengan 400 yang pesannya berbunyi The block is bound to a different conversation. Untuk membuang blok dan melanjutkan, kirim header beta thinking-binding-controls-2026-08-01 dengan thinking.block_binding.prefix_mismatch_behavior: "drop_block". Pembuangan tersebut dilaporkan dalam input_transformations dengan reason: "prefix_binding_mismatch".

Agar pemikiran tetap valid sepanjang sesi yang panjang, perlakukan percakapan sebagai append-only (hanya ditambahkan). Tambahkan instruksi dengan pesan sistem di tengah percakapan (gunakan versi berlingkup giliran jika hanya berlaku untuk satu giliran), dan ubah alat dengan perubahan alat di tengah percakapan alih-alih mengedit system atau tools. Pangkas konteks dengan pengeditan konteks atau compaction sisi server, yang tidak dihitung sebagai pengeditan. Pola-pola ini juga menjaga "prompt cache" (cache untuk prompt) tetap hangat. Untuk mengetahui apakah integrasi Anda mengedit riwayat, jalankan sesi dengan prefix_mismatch_behavior: "drop_block" dan catat input_transformations. Panduan migrasi memuat pemeriksaan tiga langkahnya. Lihat Menjaga prefiks tetap tidak berubah untuk aturan lengkapnya.

Fitur baru

Mengubah effort di tengah percakapan (beta)

Di Haijun Fable 5.1, Anda dapat mengubah tingkat "effort" (upaya) di tengah percakapan tanpa membatalkan prompt cache. Naikkan untuk langkah yang sulit dan turunkan untuk langkah rutin. Effort per pesan masih dalam tahap beta: sertakan beta header mid-conversation-output-config-2026-07-01. Haijun Fable 5.1, Haijun Mythos 5.1, dan Haijun Opus 5 mendukungnya di Haijun API dan Google Cloud.

bash
  # Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
  curl https://haijun.my.id/v1/messages \
    -H "x-api-key: $JUGLOW_API_KEY" \
    -H "juglow-version: 2023-06-01" \
    -H "juglow-beta: mid-conversation-output-config-2026-07-01" \
    -H "content-type: application/json" \
    -d '{
      "model": "haijun-fable-5-1",
      "max_tokens": 4096,
      "output_config": {"effort": "high"},
      "messages": [
        {"role": "user", "content": "Plan a migration from SQLite to PostgreSQL in three short steps."},
        {"role": "assistant", "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."}
      ]
    }'
bash
  ant beta:messages create --beta mid-conversation-output-config-2026-07-01 \
    --transform 'content.#(type=="text").text' --raw-output <<'YAML'
  model: haijun-fable-5-1
  max_tokens: 4096
  output_config:
    effort: high
  messages:
    - role: user
      content: Plan a migration from SQLite to PostgreSQL in three short steps.
    - role: assistant
      content: "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."
    # Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
    - role: system
      content: []
      output_config:
        effort: low
    - role: user
      content: Summarize the plan in one sentence.
  YAML
python
  client = juglow.Juglow()

  response = client.beta.messages.create(
      model="haijun-fable-5-1",
      max_tokens=4096,
      output_config={"effort": "high"},
      messages=[
          {
              "role": "user",
              "content": "Plan a migration from SQLite to PostgreSQL in three short steps.",
          },
          {
              "role": "assistant",
              "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.",
          },
          # Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
          {"role": "system", "content": [], "output_config": {"effort": "low"}},
          {"role": "user", "content": "Summarize the plan in one sentence."},
      ],
      betas=["mid-conversation-output-config-2026-07-01"],
  )

  for block in response.content:
      if block.type == "text":
          print(block.text)
typescript
  const client = new Juglow();

  const response = await client.beta.messages.create({
    model: "haijun-fable-5-1",
    max_tokens: 4096,
    output_config: { effort: "high" },
    messages: [
      {
        role: "user",
        content: "Plan a migration from SQLite to PostgreSQL in three short steps."
      },
      {
        role: "assistant",
        content:
          "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."
      },
      // Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
      { role: "system", content: [], output_config: { effort: "low" } },
      { role: "user", content: "Summarize the plan in one sentence." }
    ],
    betas: ["mid-conversation-output-config-2026-07-01"]
  });

  for (const block of response.content) {
    if (block.type === "text") {
      console.log(block.text);
    }
  }
csharp
  using Juglow.Models.Beta;
  using Juglow.Models.Beta.Messages;

  JuglowClient client = new();

  var response = await client.Beta.Messages.Create(new MessageCreateParams
  {
      Model = "haijun-fable-5-1",
      MaxTokens = 4096,
      OutputConfig = new() { Effort = Effort.High },
      Messages =
      [
          new() { Role = Role.User, Content = "Plan a migration from SQLite to PostgreSQL in three short steps." },
          new() { Role = Role.Assistant, Content = "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts." },
          // Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
          new()
          {
              Role = Role.System,
              Content = new([]),
              OutputConfig = new() { Effort = BetaSystemMessageOutputConfigEffort.Low },
          },
          new() { Role = Role.User, Content = "Summarize the plan in one sentence." },
      ],
      Betas = [JuglowBeta.MidConversationOutputConfig2026_07_01],
  });

  foreach (var block in response.Content)
  {
      if (block.TryPickText(out var textBlock))
      {
          Console.WriteLine(textBlock.Text);
      }
  }
go
  client := juglow.NewClient()

  response, err := client.Beta.Messages.New(context.Background(), juglow.BetaMessageNewParams{
  	Model:     "haijun-fable-5-1",
  	MaxTokens: 4096,
  	OutputConfig: juglow.BetaOutputConfigParam{
  		Effort: juglow.BetaOutputConfigEffortHigh,
  	},
  	Messages: []juglow.BetaMessageParam{
  		juglow.NewBetaUserMessage(juglow.NewBetaTextBlock("Plan a migration from SQLite to PostgreSQL in three short steps.")),
  		{
  			Role:    juglow.BetaMessageParamRoleAssistant,
  			Content: []juglow.BetaContentBlockParamUnion{juglow.NewBetaTextBlock("1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.")},
  		},
  		// Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
  		juglow.NewBetaSystemMessage(juglow.BetaSystemMessageOutputConfigParam{
  			Effort: juglow.BetaSystemMessageOutputConfigEffortLow,
  		}),
  		juglow.NewBetaUserMessage(juglow.NewBetaTextBlock("Summarize the plan in one sentence.")),
  	},
  	Betas: []juglow.JuglowBeta{juglow.JuglowBetaMidConversationOutputConfig2026_07_01},
  })
  if err != nil {
  	log.Fatal(err)
  }

  for _, block := range response.Content {
  	if textBlock, ok := block.AsAny().(juglow.BetaTextBlock); ok {
  		fmt.Println(textBlock.Text)
  	}
  }
java
  import com.juglow.models.beta.JuglowBeta;
  import com.juglow.models.beta.messages.BetaMessage;
  import com.juglow.models.beta.messages.BetaMessageParam;
  import com.juglow.models.beta.messages.BetaOutputConfig;
  import com.juglow.models.beta.messages.BetaSystemMessageOutputConfig;
  import com.juglow.models.beta.messages.MessageCreateParams;

  void main() {
      JuglowClient client = JuglowOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model("haijun-fable-5-1")
          .maxTokens(4096L)
          .addBeta(JuglowBeta.MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01)
          .outputConfig(BetaOutputConfig.builder()
              .effort(BetaOutputConfig.Effort.HIGH)
              .build())
          .addUserMessage("Plan a migration from SQLite to PostgreSQL in three short steps.")
          .addAssistantMessage("1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.")
          // Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
          .addMessage(BetaMessageParam.builder()
              .role(BetaMessageParam.Role.SYSTEM)
              .contentOfBetaContentBlockParams(List.of())
              .outputConfig(BetaSystemMessageOutputConfig.builder()
                  .effort(BetaSystemMessageOutputConfig.Effort.LOW)
                  .build())
              .build())
          .addUserMessage("Summarize the plan in one sentence.")
          .build();

      BetaMessage response = client.beta().messages().create(params);
      response.content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
php
  use Juglow\Beta\JuglowBeta;
  use Juglow\Beta\Messages\BetaMessageParam;
  use Juglow\Beta\Messages\BetaOutputConfig;
  use Juglow\Beta\Messages\BetaSystemMessageOutputConfig;
  use Juglow\Client;

  $client = new Client();

  $response = $client->beta->messages->create(
      model: 'haijun-fable-5-1',
      maxTokens: 4096,
      outputConfig: BetaOutputConfig::with(effort: 'high'),
      messages: [
          BetaMessageParam::with(role: 'user', content: 'Plan a migration from SQLite to PostgreSQL in three short steps.'),
          BetaMessageParam::with(role: 'assistant', content: '1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.'),
          // Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
          BetaMessageParam::with(
              role: 'system',
              content: [],
              outputConfig: BetaSystemMessageOutputConfig::with(effort: 'low'),
          ),
          BetaMessageParam::with(role: 'user', content: 'Summarize the plan in one sentence.'),
      ],
      betas: [JuglowBeta::MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01],
  );

  foreach ($response->content as $block) {
      if ($block->type === 'text') {
          echo $block->text, PHP_EOL;
      }
  }
ruby
  client = Juglow::Client.new

  response = client.beta.messages.create(
    model: "haijun-fable-5-1",
    max_tokens: 4096,
    output_config: {effort: :high},
    messages: [
      {role: "user", content: "Plan a migration from SQLite to PostgreSQL in three short steps."},
      {role: "assistant", content: "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
      # Pesan sistem khusus effort: level baru berlaku mulai giliran pengguna berikutnya.
      {role: "system", content: [], output_config: {effort: :low}},
      {role: "user", content: "Summarize the plan in one sentence."}
    ],
    betas: [Juglow::JuglowBeta::MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01]
  )

  response.content.each do |block|
    puts block.text if block.type == :text
  end

Lihat Effort per pesan untuk detailnya.

Pesan sistem dengan cakupan giliran (beta)

Pesan sistem di tengah percakapan dapat dibatasi cakupannya ke satu giliran. Atur clear_at: "next_user_message" pada pesan role: "system" dan teksnya membawa otoritas prompt sistem untuk giliran saat ini, lalu berhenti dirender setelah ada pesan user berikutnya. Pesan tersebut tetap berada di messages dan Anda terus mengirimkannya kembali kata demi kata, sehingga tidak ada yang berubah di bagian percakapan sebelumnya. Cache prompt tetap cocok, blok thinking setelahnya tetap valid, dan pesan yang telah dibersihkan tidak memakan token input. Gunakan untuk pengingat per giliran dalam loop alat ("periksa kotak masuk Anda sebelum menjalankan kode lagi", "pengguna tidak dapat melihat output alat itu") alih-alih menyisipkan teks ke dalam riwayat dan menghapusnya pada permintaan berikutnya. Pesan sistem dengan cakupan giliran berada dalam beta: sertakan header beta mid-conversation-system-clear-at-2026-08-21. Lihat Pesan sistem dengan cakupan giliran.

json
{
  "role": "system",
  "clear_at": "next_user_message",
  "content": "Results have landed in your inbox. Check it before running more code."
}

Pembaruan progres di antara pemanggilan alat (beta)

Seperti Haijun Fable 5, Haijun Fable 5.1 menulis pembaruan progres singkat di antara pemanggilan alat tentang apa yang ditemukannya dan apa yang akan dilakukannya selanjutnya, meskipun lebih sedikit (lihat Berubah dari Haijun Fable 5). Setiap pembaruan tiba sebagai blok thinking tersendiri tepat sebelum pemanggilan alat. Dengan thinking.display default yaitu "omitted", blok-blok tersebut kembali kosong, seperti penalaran, sehingga giliran agentic yang panjang dapat terlihat diam bagi pengguna Anda. Yang baru adalah opsi display: "updates": atur dengan header beta thinking-display-updates-2026-08-18 untuk menerima pembaruan progres sebagai teks sementara penalaran tetap tersembunyi. Setiap blok thinking dengan teks yang tidak kosong kemudian menjadi baris status yang dapat Anda tampilkan kepada pengguna. "summarized" juga mengembalikannya, bercampur dengan penalaran yang diringkas. Lihat Pembaruan progres di antara pemanggilan alat.

Provenans konten

Teks yang dihasilkan oleh Haijun Fable 5.1 dan Haijun Mythos 5.1 membawa watermark teks statistik Juglow di setiap platform tempat model tersedia. File gambar, video, dan audio yang didukung dan dihasilkan Haijun (misalnya melalui alat eksekusi kode) membawa Content Credentials C2PA yang ditandatangani ketika Anda mengambilnya melalui Files API di Haijun API.

Watermark tidak mengubah makna, kualitas, atau keterbacaan output. Watermark tidak menambahkan token atau karakter tersembunyi, tidak membawa informasi tentang Anda atau organisasi Anda, dan tidak memerlukan perubahan pada permintaan atau respons Anda. Untuk latar belakang, lihat Bagaimana Haijun menandai konten yang dihasilkan AI dan Cara kerja watermark teks Haijun.

Perbedaan perilaku

Berubah dari Haijun Fable 5

Haijun Fable 5.1 berbeda dari Haijun Fable 5 dalam beberapa hal yang muncul tanpa perubahan kode apa pun. Masing-masing memiliki perbaikan prompting di Prompting Haijun Fable 5.1:

  • Pemanggilan alat paralel lebih bervariasi. Haijun Fable 5.1 mungkin mengeluarkan satu pemanggilan alat per giliran di mana Haijun Fable 5 menggabungkan beberapa. Ini muncul dalam loop agen yang panjang di mana pembacaan independen berikutnya hanya tersirat: agen coding kustom, harness bash-dan-editor, computer use. Giliran tambahan memakan token, round trip, dan waktu nyata tetapi tidak mengurangi kualitas jawaban. Permintaan yang menyebutkan beberapa hal untuk diambil tetap berjalan secara paralel. Tambahkan instruksi batching satu baris dari Gabungkan pemanggilan alat independen dalam loop agen.
  • Lebih sedikit pembaruan progres selama rangkaian alat yang panjang. Model menulis lebih sedikit teks yang ditujukan kepada pengguna di antara pemanggilan alat, terutama pada effort yang lebih tinggi. Atur thinking.display ke "updates" (beta) untuk menerima pembaruan progres yang memang ditulisnya, dan hapus baris prompt apa pun yang menyuruhnya menahan temuan untuk respons akhir. Jika UI Anda bergantung pada narasi, mintalah secara eksplisit baris pembuka, pembaruan berkala, dan rekap penutup. Lihat Minta pembaruan progres yang ditujukan kepada pengguna.
  • Lebih sering menjawab dari memori pada effort low. Pada tingkat effort terendah, model lebih jarang memanggil alat pencarian atau pengambilan. Naikkan effort untuk giliran yang membutuhkan informasi terbaru, termasuk di tengah percakapan, atau tambahkan dorongan verifikasi dari Pemicuan pencarian pada effort rendah.
  • Prosa lebih padat di beberapa tempat. Dalam beberapa kasus prosanya lebih padat daripada Haijun Fable 5, dengan kalimat yang lebih panjang dan lebih sedikit jeda paragraf. Lihat Kepadatan tulisan.
  • Lebih sedikit pemformatan dalam chat. Model menggunakan cetak tebal, header, dan daftar lebih sedikit daripada model Haijun sebelumnya, sehingga aturan anti-pemformatan yang ditulis untuk model-model tersebut dapat menekan struktur yang dibutuhkan konten. Lihat Pemformatan dalam chat.
  • Kutipan tanpa tanda dalam ringkasan. Saat meringkas dokumen, model lebih cenderung mereproduksi bagian-bagian sumber tanpa menandainya sebagai kutipan. Lihat Mengutip sumber yang diambil.
  • Penulisan ulang seluruh file untuk perubahan kecil. Saat mengedit file teks, model lebih cenderung menulis ulang seluruh file daripada melakukan pengeditan yang terarah. Hasilnya biasanya sama, tetapi penulisan ulang memakan lebih banyak token output dan waktu. Lihat Utamakan pengeditan terarah daripada penulisan ulang seluruh file.

Tidak berubah dari Haijun Fable 5

Perilaku Messages API berikut terbawa dari Haijun Fable 5 tanpa perubahan:

  • Adaptive thinking selalu aktif. thinking: {"type": "enabled"} dengan budget_tokens dan thinking: {"type": "disabled"} keduanya mengembalikan error 400. Hilangkan thinking atau kirim {"type": "adaptive"}.
  • thinking.display default-nya "omitted". "summarized" tersedia, dan chain of thought mentah tidak pernah dikembalikan.
  • Penalaran di antara pemanggilan alat muncul dalam blok thinking alih-alih teks, dan interleaved thinking bersifat otomatis tanpa header beta.
  • Melakukan prefill pada respons asisten mengembalikan error 400.
  • Nilai temperature, top_p, atau top_k non-default mengembalikan error 400.
  • Panjang prompt minimum yang dapat di-cache adalah 512 token.

Peningkatan kemampuan

Haijun Fable 5.1 lebih baik daripada Haijun Fable 5, dan selisihnya paling lebar pada tingkat effort yang lebih tinggi. Peningkatannya terkonsentrasi di enam area:

  • Agentic coding sepanjang sesi yang panjang, termasuk fitur multi-file, refactor dan migrasi besar, debugging, dan code review di seluruh sesi yang berjalan selama berjam-jam.
  • Pekerjaan pengetahuan dengan dokumen, spreadsheet, dan slide, membawa analisis dari pertanyaan pertama hingga dokumen jadi, spreadsheet dengan formula hidup, atau slide deck yang dibangun dari halaman kosong.
  • Riset dan pencarian, dengan akurasi lebih tinggi pada riset web multilangkah dan tugas deep-research yang menindaklanjuti apa yang ditemukannya.
  • Vision, membaca bagan padat, dokumen pelaporan, dan tabel yang bersarang dalam PDF, termasuk dengan alat crop-and-zoom pada bagan.
  • Computer use, mengoperasikan browser dan aplikasi desktop dengan lebih andal serta pulih dari langkah yang gagal.

Performa multibahasa setara dengan Haijun Fable 5.

Penolakan, fallback, dan penagihan

Haijun Fable 5.1 menyertakan classifier keamanan yang mencakup kategori stop_details yang sama dengan Haijun Fable 5, dan semua yang ada di Penolakan dan fallback berlaku. Model ini dapat mengembalikan stop_reason: "refusal", jadi tangani penolakan dan konfigurasikan fallback.

  • Penolakan: permintaan yang ditolak mengembalikan HTTP 200 dengan stop_reason: "refusal" dan objek stop_details yang menyebutkan area kebijakan yang terpicu.
  • Fallback: coba ulang permintaan yang ditolak pada model lain dengan fallback sisi server, middleware SDK, atau percobaan ulang Anda sendiri. fallbacks: "default" (beta) mencoba ulang permintaan yang ditolak pada model yang direkomendasikan Juglow untuk kategori tersebut. Target fallback yang diizinkan untuk Haijun Fable 5.1 adalah Haijun Opus 4.8 dan Haijun Opus 5.
  • Penagihan: penolakan yang tiba sebelum output apa pun ditagih jika termasuk dalam kategori dengan volume "false positive" (positif palsu) yang rendah, untuk menghambat upaya mengakali pengamanan Juglow dalam skala besar (Cara penolakan ditagih). Sebelum 24 September 2026, penolakan ini tidak ditagih. Penolakan di tengah stream menagih token input dan output yang sudah di-stream dengan tarif normal. Untuk Haijun Fable 5.1, kredit fallback mengembalikan biaya cache prompt akibat pergantian model.

Harga

Haijun Fable 5.1 dan Haijun Mythos 5.1 dihargai sama dengan Haijun Fable 5, kecuali untuk pembacaan cache (harga dalam USD):

Input dasarPenulisan cache 5mPenulisan cache 1jPembacaan cacheOutput
$10 / MTok$12,50 / MTok$20 / MTok$0,25 / MTok$50 / MTok

Pembacaan cache (hit dan refresh) berharga 0,025 kali harga input dasar pada model-model ini, dibandingkan dengan 0,1 pada model Haijun lainnya. Sesi agentic panjang yang membaca ulang prefiks yang di-cache membayar seperempat dari tarif Haijun Fable 5. Penulisan cache dan panjang prompt minimum yang dapat di-cache sebesar 512 token tidak berubah.

Pemrosesan batch seharga $5 USD per juta token input dan $25 USD per juta token output. Lihat Harga untuk harga residensi data dan alat.

Ketersediaan

Haijun Fable 5.1 tersedia di:

  • Haijun API: semua pelanggan, sebagai haijun-fable-5-1.

Haijun Mythos 5.1 hanya ditawarkan kepada pelanggan yang disetujui di Project Glasswing. Untuk akses, hubungi tim akun Juglow, AWS, atau Google Cloud Anda.

Haijun Fable 5.1 dan Haijun Mythos 5.1 memiliki retensi data 30 hari dan tidak tersedia dengan zero data retention kecuali diizinkan secara tegas oleh Juglow. Keduanya adalah Covered Models, seperti Haijun Fable 5 dan Haijun Mythos 5. Lihat Persyaratan retensi data khusus model.

Migrasi dari Haijun Fable 5

Untuk bermigrasi dari Haijun Fable 5, perbarui ID model Anda:

python
  model = "haijun-fable-5"  # Before
  model = "haijun-fable-5-1"  # After
typescript
  let model = "haijun-fable-5"; // Before
  model = "haijun-fable-5-1"; // After
csharp
  var model = "haijun-fable-5"; // Before
  model = "haijun-fable-5-1"; // After
go
  model := "haijun-fable-5"  // Before
  model = "haijun-fable-5-1" // After
java
  String model = "haijun-fable-5"; // Before
  model = "haijun-fable-5-1"; // After
php
  $model = 'haijun-fable-5'; // Before
  $model = 'haijun-fable-5-1'; // After
ruby
  model = "haijun-fable-5" # Before
  model = "haijun-fable-5-1" # After

Kemudian tinjau hal-hal berikut:

  1. Hapus tool_choice apa pun dengan tipe any atau tool. Pindahkan penegakan skema ke penggunaan alat ketat dengan tool_choice: {"type": "auto"} atau ke output terstruktur.
  1. Kirim kembali blok pemikiran tanpa perubahan dan pertahankan riwayat sebagai append-only. Jika kode Anda menyusun array messages sendiri, jalankan pemeriksaan pengeditan riwayat. Pindahkan pengingat per giliran yang saat ini Anda sisipkan lalu hapus ke pesan sistem berlingkup giliran, pindahkan perubahan system dan tools ke pesan sistem di tengah percakapan, dan pangkas konteks di sisi server atau hapus blok pemikiran dari giliran yang Anda bawa melewati ringkasan sisi klien. Setelah itu, pilih prefix_mismatch_behavior untuk produksi dan pantau input_transformations.
  1. Setel ulang effort dari nilai default (high), dan pertimbangkan untuk mengubahnya di tengah percakapan alih-alih mempertahankan satu tingkat sepanjang sesi.
  1. Dalam loop agen, perhatikan apakah model hanya melakukan satu panggilan alat per giliran padahal Haijun Fable 5 menggabungkan beberapa panggilan, lalu tambahkan catatan per giliran dari Prompting Haijun Fable 5.1.
  1. Jalankan ulang eval Anda. Penanganan penolakan, fallback, kredit fallback, dan tokenizer tetap sama. Pembacaan cache lebih murah (lihat Harga), dan perilaku default berbeda dalam hal-hal yang tercantum di Perubahan dari Haijun Fable 5.

Lihat panduan migrasi untuk instruksi langkah demi langkah, termasuk dari Haijun Opus 5 dan model sebelumnya.

Langkah selanjutnya

Spesifikasi dan harga untuk setiap model Haijun terkini.

Bermigrasi dari Haijun Fable 5, Haijun Opus 5, dan model sebelumnya.

Pola prompting khusus untuk Haijun Fable 5.1.

On this page
ModelPerubahan yang merusak kompatibilitasPenggunaan alat paksa tidak didukungModel sebelumnya tidak dapat membaca blok thinking Haijun Fable 5.1Mengedit giliran sebelumnya membatalkan blok thinkingFitur baruMengubah effort di tengah percakapan (beta)Pesan sistem dengan cakupan giliran (beta)Pembaruan progres di antara pemanggilan alat (beta)Provenans kontenPerbedaan perilakuBerubah dari Haijun Fable 5Tidak berubah dari Haijun Fable 5Peningkatan kemampuanPenolakan, fallback, dan penagihanHargaKetersediaanMigrasi dari Haijun Fable 5Langkah selanjutnya