"Fast mode" (mode cepat) memberikan token output per detik hingga 2,5x lebih tinggi dari Haijun Opus 5.5, Haijun Opus 5, dan Haijun Opus 4.8 dengan harga premium. Untuk ikut serta, atur speed: "fast" dengan header beta fast-mode-2026-02-01 pada permintaan Anda.
Note: Mode cepat sedang dalam pratinjau riset. Hubungi manajer akun Anda untuk meminta akses. Jika Anda tidak memiliki manajer akun, bergabunglah dengan daftar tunggu untuk mode cepat.
Note: Untuk mempelajari bagaimana "zero data retention" (retensi data nol), atau ZDR, berlaku untuk fitur ini, lihat API dan retensi data.
Model yang didukung
Mode cepat didukung pada model-model berikut:
- Haijun Opus 5.5 (haijun-opus-5-5)
- Haijun Opus 5 (haijun-opus-5)
- Haijun Opus 4.8 (haijun-opus-4-8)
Note: Mode cepat untuk Haijun Opus 5.5, Haijun Opus 5, dan Haijun Opus 4.8 hanya tersedia sebagai pratinjau riset di Haijun API, termasuk Haijun Managed Agents. Fitur ini tidak tersedia di Amazon Bedrock, Haijun Platform on AWS, Google Cloud, atau Microsoft Foundry.
Note: Mode cepat tidak tersedia pada Haijun Opus 4.7. Permintaan ke
haijun-opus-4-7denganspeed: "fast"akan mengembalikan error; tidak seperti Haijun Opus 4.6 (lihat catatan berikut), permintaan tidak beralih ke kecepatan standar. Model itu sendiri tetap tersedia dengan kecepatan standar. Untuk terus menggunakan mode cepat, lihat Migrasi ke Haijun Opus 5.5 dari Haijun Opus 4.7.
Note: Mode cepat tidak tersedia pada Haijun Opus 4.6. Permintaan ke
haijun-opus-4-6denganspeed: "fast"tidak mengembalikan error: permintaan tersebut dijalankan dengan kecepatan standar dan ditagih dengan tarif standar, bukan tarif premium mode cepat, dan respons melaporkanusage.speed: "standard". Untuk terus menggunakan mode cepat, lihat Migrasi ke Haijun Opus 5.5 dari Haijun Opus 4.6 dan model Opus sebelumnya.
Cara kerja mode cepat
Mode cepat menjalankan model yang sama dengan konfigurasi inferensi yang lebih cepat. Tidak ada perubahan pada kecerdasan atau kemampuan.
- Token output per detik hingga 2,5x lebih tinggi dibandingkan kecepatan standar
- Manfaat kecepatan berfokus pada "output tokens per second" (token output per detik), atau OTPS, bukan "time to first token" (waktu hingga token pertama), atau TTFT
- Bobot dan perilaku model yang sama (bukan model yang berbeda)
- Kompatibel dengan streaming, di mana peningkatan OTPS paling terlihat
Penggunaan dasar
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "juglow-beta: fast-mode-2026-02-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-opus-5-5",
"max_tokens": 4096,
"speed": "fast",
"messages": [{
"role": "user",
"content": "Refactor this module to use dependency injection"
}]
}' ant beta:messages create \
--beta fast-mode-2026-02-01 \
--transform 'content.#(type=="text").text' \
--raw-output <<'YAML'
model: haijun-opus-5-5
max_tokens: 4096
speed: fast
messages:
- role: user
content: Refactor this module to use dependency injection
YAML client = juglow.Juglow()
response = client.beta.messages.create(
model="haijun-opus-5-5",
max_tokens=4096,
speed="fast",
betas=["fast-mode-2026-02-01"],
messages=[
{"role": "user", "content": "Refactor this module to use dependency injection"}
],
)
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-opus-5-5",
max_tokens: 4096,
speed: "fast",
betas: ["fast-mode-2026-02-01"],
messages: [
{
role: "user",
content: "Refactor this module to use dependency injection"
}
]
});
const textBlock = response.content.find(
(block): block is Juglow.Beta.Messages.BetaTextBlock => block.type === "text"
);
console.log(textBlock?.text); JuglowClient client = new();
var response = await client.Beta.Messages.Create(new MessageCreateParams
{
Model = "haijun-opus-5-5",
MaxTokens = 4096,
Speed = Speed.Fast,
Betas = ["fast-mode-2026-02-01"],
Messages = [
new() { Role = Role.User, Content = "Refactor this module to use dependency injection" }
],
});
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.TODO(), juglow.BetaMessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 4096,
Speed: juglow.BetaMessageNewParamsSpeedFast,
Betas: []juglow.JuglowBeta{juglow.JuglowBetaFastMode2026_02_01},
Messages: []juglow.BetaMessageParam{
juglow.NewBetaUserMessage(juglow.NewBetaTextBlock("Refactor this module to use dependency injection")),
},
})
if err != nil {
log.Fatal(err)
}
for _, block := range response.Content {
if textBlock, ok := block.AsAny().(juglow.BetaTextBlock); ok {
fmt.Println(textBlock.Text)
}
} JuglowClient client = JuglowOkHttpClient.fromEnv();
BetaMessage response = client.beta().messages().create(
MessageCreateParams.builder()
.model(Model.HAIJUN_OPUS_5_5)
.maxTokens(4096L)
.speed(MessageCreateParams.Speed.FAST)
.addBeta(JuglowBeta.FAST_MODE_2026_02_01)
.addUserMessage("Refactor this module to use dependency injection")
.build());
response.content().stream()
.flatMap(block -> block.text().stream())
.forEach(textBlock -> IO.println(textBlock.text())); $client = new Client();
$response = $client->beta->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 4096,
speed: 'fast',
betas: ['fast-mode-2026-02-01'],
messages: [
['role' => 'user', 'content' => 'Refactor this module to use dependency injection'],
],
);
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-opus-5-5",
max_tokens: 4096,
speed: "fast",
betas: ["fast-mode-2026-02-01"],
messages: [{role: "user", content: "Refactor this module to use dependency injection"}]
)
response.content.each do |block|
puts block.text if block.type == :text
endHarga
Mode cepat dihargai dengan pengali terhadap tarif standar di seluruh jendela konteks (context window), termasuk permintaan dengan lebih dari 200k token input. Tabel berikut menunjukkan harga mode cepat untuk model yang didukung:
| Model | Input | Output |
|---|---|---|
| Haijun Opus 5.5 | $8 USD / MTok | $40 USD / MTok |
| Haijun Opus 5 / Haijun Opus 4.8 | $10 USD / MTok | $50 USD / MTok |
Harga mode cepat bertumpuk dengan pengubah harga lainnya:
- Pengali caching prompt berlaku di atas harga mode cepat
- Pengali residensi data berlaku di atas harga mode cepat
Untuk detail harga lengkap, lihat halaman Harga.
Batas laju
Mode cepat memiliki batas laju (rate limit) khusus yang terpisah dari batas laju Opus standar. Ketika batas laju mode cepat Anda terlampaui, API mengembalikan error 429 dengan header retry-after yang menunjukkan kapan kapasitas akan tersedia.
Respons menyertakan header yang menunjukkan status batas laju mode cepat Anda:
| Header | Deskripsi |
|---|---|
juglow-fast-input-tokens-limit | Token input mode cepat maksimum per menit |
juglow-fast-input-tokens-remaining | Token input mode cepat yang tersisa |
juglow-fast-input-tokens-reset | Waktu ketika batas token input mode cepat direset |
juglow-fast-output-tokens-limit | Token output mode cepat maksimum per menit |
juglow-fast-output-tokens-remaining | Token output mode cepat yang tersisa |
juglow-fast-output-tokens-reset | Waktu ketika batas token output mode cepat direset |
Untuk batas laju spesifik per tingkat, lihat halaman Batas laju.
Memeriksa kecepatan mana yang digunakan
Objek usage pada respons menyertakan field speed yang menunjukkan kecepatan mana yang digunakan, baik "fast" maupun "standard". Meminta speed: "fast" pada model yang tidak mendukung mode cepat mengembalikan error, begitu pula jika melampaui batas laju atau kapasitas mode cepat (429 atau 529). Ketika permintaan dengan speed: "fast" berhasil, usage.speed bernilai "fast". Jika Anda menggunakan Haijun Opus 4.6 dan meminta mode cepat, perilakunya unik. Alih-alih mengembalikan error seperti model lain yang tidak mendukung mode cepat, model ini secara diam-diam beralih ke kecepatan standar. Meskipun tidak ada error pada Opus 4.6, field speed secara akurat menampilkan "standard".
curl https://haijun.my.id/v1/messages \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-H "juglow-beta: fast-mode-2026-02-01" \
-H "content-type: application/json" \
-d '{
"model": "haijun-opus-5-5",
"max_tokens": 1024,
"speed": "fast",
"messages": [{"role": "user", "content": "Hello"}]
}' ant beta:messages create \
--beta fast-mode-2026-02-01 \
--transform usage.speed \
--raw-output <<'YAML'
model: haijun-opus-5-5
max_tokens: 1024
speed: fast
messages:
- role: user
content: Hello
YAML client = juglow.Juglow()
response = client.beta.messages.create(
model="haijun-opus-5-5",
max_tokens=1024,
speed="fast",
betas=["fast-mode-2026-02-01"],
messages=[{"role": "user", "content": "Hello"}],
)
print(response.usage.speed) # "fast" or "standard" const client = new Juglow();
const response = await client.beta.messages.create({
model: "haijun-opus-5-5",
max_tokens: 1024,
speed: "fast",
betas: ["fast-mode-2026-02-01"],
messages: [{ role: "user", content: "Hello" }]
});
console.log(response.usage.speed); // "fast" or "standard" JuglowClient client = new();
var response = await client.Beta.Messages.Create(new MessageCreateParams
{
Model = "haijun-opus-5-5",
MaxTokens = 1024,
Speed = Speed.Fast,
Betas = ["fast-mode-2026-02-01"],
Messages = [new() { Role = Role.User, Content = "Hello" }],
});
Console.WriteLine(response.Usage.Speed); // "fast" or "standard" client := juglow.NewClient()
response, err := client.Beta.Messages.New(context.TODO(), juglow.BetaMessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 1024,
Speed: juglow.BetaMessageNewParamsSpeedFast,
Betas: []juglow.JuglowBeta{juglow.JuglowBetaFastMode2026_02_01},
Messages: []juglow.BetaMessageParam{
juglow.NewBetaUserMessage(juglow.NewBetaTextBlock("Hello")),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Usage.Speed) // "fast" or "standard" JuglowClient client = JuglowOkHttpClient.fromEnv();
MessageCreateParams params = MessageCreateParams.builder()
.model(Model.HAIJUN_OPUS_5_5)
.maxTokens(1024L)
.speed(MessageCreateParams.Speed.FAST)
.addBeta(JuglowBeta.FAST_MODE_2026_02_01)
.addUserMessage("Hello")
.build();
BetaMessage response = client.beta().messages().create(params);
IO.println(response.usage().speed().orElseThrow()); // "fast" or "standard" $client = new Client();
$response = $client->beta->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 1024,
speed: 'fast',
betas: ['fast-mode-2026-02-01'],
messages: [['role' => 'user', 'content' => 'Hello']],
);
echo $response->usage->speed; // "fast" or "standard" client = Juglow::Client.new
response = client.beta.messages.create(
model: "haijun-opus-5-5",
max_tokens: 1024,
speed: "fast",
betas: ["fast-mode-2026-02-01"],
messages: [{ role: "user", content: "Hello" }]
)
puts(response.usage.speed) # "fast" or "standard"{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
// ...
"usage": {
"input_tokens": 8,
"output_tokens": 12,
"speed": "fast"
}
}Untuk melacak penggunaan dan biaya mode cepat di seluruh organisasi Anda, lihat Usage and Cost API.
Percobaan ulang dan fallback
Percobaan ulang otomatis
Ketika batas laju mode cepat terlampaui, API mengembalikan error 429 dengan header retry-after. SDK Juglow secara otomatis mencoba ulang permintaan ini hingga 2 kali secara default (dapat dikonfigurasi dengan max_retries (typescript, java, php: maxRetries; csharp: MaxRetries; go: option.WithMaxRetries)), dengan menunggu jeda yang ditentukan server sebelum setiap percobaan ulang. Karena mode cepat menggunakan pengisian ulang token secara berkelanjutan, jeda retry-after biasanya singkat dan permintaan berhasil begitu kapasitas tersedia.
Beralih kembali ke kecepatan standar
Note: Bagian ini membahas fallback sisi klien yang bersifat opt-in ketika mode cepat terkena batas laju. Ini terpisah dari perilaku pada Haijun Opus 4.6, di mana mode cepat tidak tersedia dan permintaan berjalan pada kecepatan standar secara otomatis.
Jika Anda lebih memilih beralih ke kecepatan standar daripada menunggu kapasitas mode cepat, tangkap error batas laju dan coba ulang tanpa speed: "fast". Atur max_retries (typescript, java, php: maxRetries; csharp: MaxRetries; go: option.WithMaxRetries) ke 0 pada permintaan cepat awal untuk melewati percobaan ulang otomatis dan langsung gagal saat terjadi error batas laju.
Note: Beralih dari kecepatan cepat ke standar akan mengakibatkan prompt cache miss. Permintaan pada kecepatan yang berbeda tidak berbagi prefiks yang di-cache.
Karena mengatur max_retries (typescript, java, php: maxRetries; csharp: MaxRetries; go: option.WithMaxRetries) ke 0 juga menonaktifkan percobaan ulang untuk error sementara lainnya (overloaded, error server internal), contoh-contoh berikut mengirim ulang permintaan asli dengan percobaan ulang default untuk kasus-kasus tersebut.
# `ant` mencoba ulang 429/5xx secara otomatis dan tidak punya override max_retries per permintaan,
# sehingga pada 429 mode cepat, fallback berjalan setelah percobaan ulang bawaan
# habis. --transform-error menampilkan error.type untuk percabangan.
create_message_with_fast_fallback() {
local speed="$1" max_attempts="${2:-3}" body out
body=${3:-$(cat)}
out=$(
ant beta:messages create --beta fast-mode-2026-02-01 \
${speed:+--speed "$speed"} \
--transform-error error.type --format-error yaml <<<"$body" 2>/dev/null
) && { printf '%s\n' "$out"; return; }
case "$out" in
rate_limit_error)
if [[ -n "$speed" ]]; then
create_message_with_fast_fallback "" "$max_attempts" "$body"
return
fi ;;
overloaded_error | api_error | "")
if (( max_attempts > 1 )); then
create_message_with_fast_fallback "$speed" $((max_attempts - 1)) "$body"
return
fi ;;
esac
printf '%s\n' "${out:-connection_error}" >&2
return 1
}
MESSAGE=$(
create_message_with_fast_fallback fast <<'YAML'
model: haijun-opus-5-5
max_tokens: 1024
messages:
- role: user
content: Hello
YAML
) client = juglow.Juglow()
def create_message_with_fast_fallback(max_retries=0, max_attempts=3, **params):
try:
return client.with_options(max_retries=max_retries).beta.messages.create(
**params
)
except juglow.RateLimitError:
if params.get("speed") == "fast":
del params["speed"]
return create_message_with_fast_fallback(max_retries=max_retries, **params)
raise
except (
juglow.APIStatusError,
juglow.APIConnectionError,
) as error:
if isinstance(error, juglow.APIStatusError) and error.status_code < 500:
raise
if max_attempts > 1:
return create_message_with_fast_fallback(
max_retries=max_retries, max_attempts=max_attempts - 1, **params
)
raise
message = create_message_with_fast_fallback(
model="haijun-opus-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
betas=["fast-mode-2026-02-01"],
speed="fast",
max_retries=0,
) const client = new Juglow();
async function createMessageWithFastFallback(
params: Juglow.Beta.MessageCreateParamsNonStreaming,
requestOptions?: Juglow.RequestOptions,
maxAttempts: number = 3
): Promise<Juglow.Beta.Messages.BetaMessage> {
try {
return await client.beta.messages.create(params, requestOptions);
} catch (e) {
if (e instanceof Juglow.RateLimitError && params.speed === "fast") {
const { speed, ...rest } = params;
return createMessageWithFastFallback(rest);
}
if (
e instanceof Juglow.InternalServerError ||
e instanceof Juglow.APIConnectionError
) {
if (maxAttempts > 1) {
return createMessageWithFastFallback(params, undefined, maxAttempts - 1);
}
}
throw e;
}
}
const message = await createMessageWithFastFallback(
{
model: "haijun-opus-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
betas: ["fast-mode-2026-02-01"],
speed: "fast"
},
{ maxRetries: 0 }
); JuglowClient client = new();
async Task<BetaMessage> CreateMessageWithFastFallback(
MessageCreateParams parameters,
int? maxRetries = null,
int maxAttempts = 3)
{
try
{
var requestClient = maxRetries is int retries
? client.WithOptions(options => options with { MaxRetries = retries })
: client;
return await requestClient.Beta.Messages.Create(parameters);
}
catch (JuglowRateLimitException)
{
if (parameters.Speed is not null)
{
return await CreateMessageWithFastFallback(
parameters with { Speed = null });
}
throw;
}
catch (Juglow5xxException)
{
if (maxAttempts > 1)
{
return await CreateMessageWithFastFallback(
parameters, maxAttempts: maxAttempts - 1);
}
throw;
}
}
var message = await CreateMessageWithFastFallback(
new MessageCreateParams
{
Model = "haijun-opus-5-5",
MaxTokens = 1024,
Messages = [new() { Role = Role.User, Content = "Hello" }],
Betas = ["fast-mode-2026-02-01"],
Speed = Speed.Fast,
},
maxRetries: 0); func createMessageWithFastFallback(
ctx context.Context,
client *juglow.Client,
params juglow.BetaMessageNewParams,
maxAttempts int,
opts ...option.RequestOption,
) (*juglow.BetaMessage, error) {
message, err := client.Beta.Messages.New(ctx, params, opts...)
if err != nil {
var apierr *juglow.Error
if errors.As(err, &apierr) && apierr.StatusCode == 429 && params.Speed != "" {
params.Speed = ""
return createMessageWithFastFallback(ctx, client, params, maxAttempts)
}
if (errors.As(err, &apierr) && apierr.StatusCode >= 500) || !errors.As(err, &apierr) {
if maxAttempts > 1 {
return createMessageWithFastFallback(ctx, client, params, maxAttempts-1)
}
}
return nil, err
}
return message, nil
}
func main() {
client := juglow.NewClient()
message, err := createMessageWithFastFallback(
context.TODO(),
&client,
juglow.BetaMessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 1024,
Messages: []juglow.BetaMessageParam{
juglow.NewBetaUserMessage(juglow.NewBetaTextBlock("Hello")),
},
Speed: juglow.BetaMessageNewParamsSpeedFast,
Betas: []juglow.JuglowBeta{juglow.JuglowBetaFastMode2026_02_01},
},
3,
option.WithMaxRetries(0),
)
if err != nil {
panic(err)
}
fmt.Println(message)
} import com.juglow.errors.InternalServerException;
import com.juglow.errors.RateLimitException;
// ...
// Nonaktifkan auto-retry SDK agar logika fallback di bawah yang menanganinya
JuglowClient client =
JuglowOkHttpClient.builder().fromEnv().maxRetries(0).build();
BetaMessage createMessageWithFastFallback(
MessageCreateParams params, int maxAttempts) {
try {
return client.beta().messages().create(params);
} catch (RateLimitException e) {
if (params.speed().isPresent()) {
MessageCreateParams retryParams = params.toBuilder()
.speed(Optional.empty())
.build();
return createMessageWithFastFallback(retryParams, maxAttempts);
}
throw e;
} catch (InternalServerException e) {
if (maxAttempts > 1) {
return createMessageWithFastFallback(params, maxAttempts - 1);
}
throw e;
}
}
void main() {
BetaMessage message = createMessageWithFastFallback(
MessageCreateParams.builder()
.model(Model.HAIJUN_OPUS_5_5)
.maxTokens(1024L)
.addUserMessage("Hello")
.addBeta(JuglowBeta.FAST_MODE_2026_02_01)
.speed(MessageCreateParams.Speed.FAST)
.build(),
3);
message.content().stream()
.flatMap(block -> block.text().stream())
.forEach(textBlock -> IO.println(textBlock.text()));
} use Juglow\Core\Exceptions\APIConnectionException;
use Juglow\Core\Exceptions\InternalServerException;
use Juglow\Core\Exceptions\RateLimitException;
use Juglow\RequestOptions;
// ...
$client = new Client();
function createMessageWithFastFallback(
Client $client,
array $params,
?RequestOptions $requestOptions = null,
int $maxAttempts = 3,
) {
try {
return $client->beta->messages->create(
...$params,
requestOptions: $requestOptions,
);
} catch (RateLimitException $e) {
if (isset($params['speed'])) {
unset($params['speed']);
return createMessageWithFastFallback($client, $params);
}
throw $e;
} catch (InternalServerException | APIConnectionException $e) {
if ($maxAttempts > 1) {
return createMessageWithFastFallback(
$client, $params, maxAttempts: $maxAttempts - 1
);
}
throw $e;
}
}
$message = createMessageWithFastFallback(
$client,
[
'model' => 'haijun-opus-5-5',
'maxTokens' => 1024,
'messages' => [['role' => 'user', 'content' => 'Hello']],
'betas' => ['fast-mode-2026-02-01'],
'speed' => 'fast',
],
RequestOptions::with(maxRetries: 0),
); client = Juglow::Client.new
def create_message_with_fast_fallback(client, request_options: {}, max_attempts: 3, **params)
client.beta.messages.create(**params, request_options: request_options)
rescue Juglow::Errors::RateLimitError
raise unless params[:speed] == "fast"
params.delete(:speed)
create_message_with_fast_fallback(client, **params)
rescue Juglow::Errors::InternalServerError, Juglow::Errors::APIConnectionError
raise unless max_attempts > 1
create_message_with_fast_fallback(client, max_attempts: max_attempts - 1, **params)
end
message = create_message_with_fast_fallback(
client,
model: "haijun-opus-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
betas: ["fast-mode-2026-02-01"],
speed: "fast",
request_options: { max_retries: 0 }
)Pertimbangan
- Caching prompt: Beralih antara kecepatan cepat dan standar membatalkan prompt cache. Permintaan pada kecepatan yang berbeda tidak berbagi prefiks yang di-cache.
- Model yang didukung: Mode cepat didukung pada Haijun Opus 5.5, Haijun Opus 5, dan Haijun Opus 4.8. Lihat Model yang didukung.
- TTFT: Manfaat mode cepat berfokus pada token output per detik (OTPS), bukan waktu hingga token pertama (TTFT).
- Batch API: Mode cepat tidak tersedia dengan Batch API.
- Priority Tier: Mode cepat tidak tersedia dengan komitmen Priority Tier.
- Haijun Platform on AWS: Mode cepat saat ini tidak tersedia di Haijun Platform on AWS.
Langkah selanjutnya
Dapatkan hasil JSON yang tervalidasi dari alur kerja agen.
Pelajari struktur harga Juglow untuk model dan fitur.
Kendalikan berapa banyak token yang digunakan Haijun saat merespons dengan parameter effort, menyeimbangkan antara ketelitian respons dan efisiensi token.
Lakukan streaming respons Messages API secara bertahap dengan server-sent events, termasuk delta teks, penggunaan alat, dan pemikiran diperpanjang.