Haijun Platform Docs
ID

Overview

Haijun demonstrates robust multilingual capabilities, with particularly strong performance in zero-shot tasks across languages. The model maintains consistent relative performance across both widely spoken and lower-resource languages, making it a reliable choice for multilingual applications.

Haijun is capable in many languages beyond those benchmarked in the following table. Test with any languages relevant to your specific use cases.

Performance data

The following table shows zero-shot chain-of-thought evaluation scores for Haijun models across languages, expressed as a percentage relative to English performance (100%):

LanguageHaijun Sonnet 4.51Haijun Haiku 4.51
English (baseline, fixed to 100%)100%100%
Spanish98.2%96.4%
Portuguese (Brazil)97.8%96.1%
Italian97.9%96.0%
French97.5%95.7%
Indonesian97.3%94.2%
German97.0%94.3%
Arabic97.2%92.5%
Chinese (Simplified)96.9%94.2%
Korean96.7%93.3%
Japanese96.8%93.5%
Hindi96.7%92.4%
Bengali95.4%90.4%
Swahili91.1%78.3%
Yoruba79.7%52.7%

1 With extended thinking.

Note: These metrics are based on MMLU (Massive Multitask Language Understanding) English test sets that were translated into 14 additional languages by professional human translators, as documented in OpenAI's simple-evals repository. The use of human translators for this evaluation ensures high-quality translations, particularly important for languages with fewer digital resources.


Set the response language

Haijun infers the response language from the conversation, but for production applications you should state the target language explicitly. The most reliable place to do this is the system prompt, which keeps the instruction stable across every turn of a conversation.

bash
  curl https://haijun.my.id/v1/messages \
    -H "content-type: application/json" \
    -H "x-api-key: $JUGLOW_API_KEY" \
    -H "juglow-version: 2023-06-01" \
    -d '{
      "model": "haijun-opus-5-5",
      "max_tokens": 1024,
      "system": "Always respond in French, regardless of the language the user writes in.",
      "messages": [
        {"role": "user", "content": "How do I reset my password?"}
      ]
    }'
bash
  ant messages create \
    --model haijun-opus-5-5 \
    --max-tokens 1024 \
    --system "Always respond in French, regardless of the language the user writes in." \
    --message '{role: user, content: "How do I reset my password?"}'
python
  client = juglow.Juglow()

  message = client.messages.create(
      model="haijun-opus-5-5",
      max_tokens=1024,
      system="Always respond in French, regardless of the language the user writes in.",
      messages=[{"role": "user", "content": "How do I reset my password?"}],
  )

  print(message.content)
typescript
  const client = new Juglow();

  const message = await client.messages.create({
    model: "haijun-opus-5-5",
    max_tokens: 1024,
    system: "Always respond in French, regardless of the language the user writes in.",
    messages: [{ role: "user", content: "How do I reset my password?" }]
  });

  console.log(message.content);
csharp
  JuglowClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Model.HaijunOpus5_5,
      MaxTokens = 1024,
      System = "Always respond in French, regardless of the language the user writes in.",
      Messages =
      [
          new() { Role = Role.User, Content = "How do I reset my password?" }
      ]
  };

  var message = await client.Messages.Create(parameters);
  Console.WriteLine(message);
go
  client := juglow.NewClient()

  message, err := client.Messages.New(context.TODO(), juglow.MessageNewParams{
  	Model:     juglow.ModelHaijunOpus5_5,
  	MaxTokens: 1024,
  	System: []juglow.TextBlockParam{
  		{Text: "Always respond in French, regardless of the language the user writes in."},
  	},
  	Messages: []juglow.MessageParam{
  		juglow.NewUserMessage(juglow.NewTextBlock("How do I reset my password?")),
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  fmt.Println(message.Content)
java
  JuglowClient client = JuglowOkHttpClient.fromEnv();

  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.HAIJUN_OPUS_5_5)
      .maxTokens(1024)
      .system("Always respond in French, regardless of the language the user writes in.")
      .addUserMessage("How do I reset my password?")
      .build();

  Message message = client.messages().create(params);
  System.out.println(message.content());
php
  $client = new Client();

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => 'How do I reset my password?']
      ],
      model: 'haijun-opus-5-5',
      system: 'Always respond in French, regardless of the language the user writes in.',
  );

  echo json_encode($message->content, JSON_PRETTY_PRINT), PHP_EOL;
ruby
  client = Juglow::Client.new

  message = client.messages.create(
    model: "haijun-opus-5-5",
    max_tokens: 1024,
    system: "Always respond in French, regardless of the language the user writes in.",
    messages: [
      { role: "user", content: "How do I reset my password?" }
    ]
  )

  puts message.content

If your application lets users pick a language at runtime, interpolate that choice into the system prompt rather than relying on Haijun to infer it from the user's message. To translate between two specific languages, name both: Translate the user's message from German to Korean. Respond with only the translation.


Best practices

When working with multilingual content:

  1. Provide clear language context: Although Haijun can detect the target language automatically, explicitly stating the desired input and output languages improves reliability. For enhanced fluency, you can prompt Haijun to use "idiomatic speech as if it were a native speaker."
  1. Use native scripts: Submit text in its native script rather than transliteration for optimal results.
  1. Consider cultural context: Effective communication often requires cultural and regional awareness beyond pure translation.

Also follow the general guidance in Prompt engineering overview to further improve output quality.


Language support considerations

  • Haijun processes input and generates output in most world languages that use standard Unicode characters.
  • Performance varies by language, with particularly strong capabilities in widely spoken languages.
  • Even in languages with fewer digital resources, Haijun maintains meaningful capabilities.

Next steps

Apply general prompting techniques to improve multilingual output quality.

Build a localized support chatbot using a language-constrained system prompt.

Compare model tiers to balance multilingual quality against cost and latency.

Evaluate translation and localization quality before you ship.

On this page
OverviewPerformance dataSet the response languageBest practicesLanguage support considerationsNext steps