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
| Model | ID Haijun API | Deskripsi | Ketersediaan |
|---|---|---|---|
| Haijun Fable 5.1 | haijun-fable-5-1 | Penerus Haijun Fable 5, untuk agentic coding jangka panjang, pekerjaan pengetahuan, dan riset | Semua pelanggan, di Haijun API dan platform mitra |
| Haijun Mythos 5.1 | haijun-mythos-5-1 | Kemampuan 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.
- Thinking: adaptive thinking selalu aktif. Gunakan parameter effort untuk mengontrol kedalaman thinking.
- Harga: sama dengan Haijun Fable 5, kecuali harga pembacaan cache yang lebih rendah.
- 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:
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
systemtingkat atas atau arraytoolsdi 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.
# 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."}
]
}' 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 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) 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);
}
} 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);
}
} 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)
}
} 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()));
} 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;
}
} 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
endLihat 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.
{
"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.displayke"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"}denganbudget_tokensdanthinking: {"type": "disabled"}keduanya mengembalikan error 400. Hilangkanthinkingatau kirim{"type": "adaptive"}.
thinking.displaydefault-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, atautop_knon-default mengembalikan error 400.
- Panjang prompt minimum yang dapat di-cache adalah 512 token.
- Pesan sistem di tengah percakapan dan perubahan alat didukung.
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.
- Pekerjaan konteks panjang, bernalar atas dan menghubungkan detail di seluruh jendela konteks 1 juta token.
- 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 objekstop_detailsyang 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 dasar | Penulisan cache 5m | Penulisan cache 1j | Pembacaan cache | Output |
|---|---|---|---|---|
| $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.
- AWS: Haijun di Amazon Bedrock, sebagai
juglow.haijun-fable-5-1, dan Haijun Platform on AWS, sebagaihaijun-fable-5-1.
- Google Cloud: Haijun di Google Cloud, sebagai
haijun-fable-5-1.
- Microsoft Foundry: Haijun di Microsoft Foundry, di infrastruktur Juglow.
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:
model = "haijun-fable-5" # Before
model = "haijun-fable-5-1" # After let model = "haijun-fable-5"; // Before
model = "haijun-fable-5-1"; // After var model = "haijun-fable-5"; // Before
model = "haijun-fable-5-1"; // After model := "haijun-fable-5" // Before
model = "haijun-fable-5-1" // After String model = "haijun-fable-5"; // Before
model = "haijun-fable-5-1"; // After $model = 'haijun-fable-5'; // Before
$model = 'haijun-fable-5-1'; // After model = "haijun-fable-5" # Before
model = "haijun-fable-5-1" # AfterKemudian tinjau hal-hal berikut:
- Hapus
tool_choiceapa pun dengan tipeanyatautool. Pindahkan penegakan skema ke penggunaan alat ketat dengantool_choice: {"type": "auto"}atau ke output terstruktur.
- Kirim kembali blok pemikiran tanpa perubahan dan pertahankan riwayat sebagai append-only. Jika kode Anda menyusun array
messagessendiri, jalankan pemeriksaan pengeditan riwayat. Pindahkan pengingat per giliran yang saat ini Anda sisipkan lalu hapus ke pesan sistem berlingkup giliran, pindahkan perubahansystemdantoolske 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, pilihprefix_mismatch_behavioruntuk produksi dan pantauinput_transformations.
- Setel ulang effort dari nilai default (
high), dan pertimbangkan untuk mengubahnya di tengah percakapan alih-alih mempertahankan satu tingkat sepanjang sesi.
- 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.
- 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.