DEV Community

Cover image for Mistral Large 4 API の使い方
Akira
Akira

Posted on Originally published at apidog.com

Mistral Large 4 API の使い方

Mistral Large 4は、オープンウェイト公開の3週間前である2026年10月6日にMistral APIで稼働を開始しました。1兆パラメータの「Le Chonk」を今すぐ試すにはAPIが唯一の方法であり、現時点では最も安価な方法でもあります。Mistralはパブリックプレビュー期間中、入力トークン100万あたり0.68ドル、出力トークン100万あたり2.09ドルを提示しています。これは定価の1.36ドル/4.18ドルの半額です。

今すぐApidogを試す

このガイドでは、約5分で最初のAPI呼び出しを実行し、その後に実装でつまずきやすい推論チャンク、画像入力、関数呼び出し、JSON出力、費用を扱います。Apidogを使うと、リクエストを保存・再実行できるため、Large 4と現在使っているモデルを同じ条件で比較できます。

モデル自体について初めて知る場合は、ベンチマークやサイバー関連のヘッドラインの背景を解説した「Mistral Is Back: Le Chonk Beats GPT-6 Astra and Claude at Cyber」も参照してください。

必要なもの

項目 値
ベースURL https://api.mistral.ai/v1
認証 Authorization: Bearer $MISTRAL_API_KEY
モデルID mistral-large-4(エイリアス: mistral-large-4-0)
メインエンドポイント POST /v1/chat/completions
コンテキストウィンドウ 1Mトークン
入力タイプ テキスト、画像
Python SDK pip install mistralai
TypeScript SDK npm install @mistralai/mistralai

ステップ1:APIキーを取得する

  1. Mistral Studio(旧La Plateforme)にサインインします。
  2. API Keys を開き、新しいキーを作成します。local-dev や ci-staging のように用途がわかる名前を付けてください。
  3. 作成直後にキーをコピーします。Studioでは再表示されません。
  4. シェルの環境変数に設定します。
export MISTRAL_API_KEY="your-key-here"
Enter fullscreen mode Exit fullscreen mode

キーはGitなどのバージョン管理システムにコミットしないでください。複数のツールでキーを扱う場合は、APIキー管理のベストプラクティスを参照し、ローテーションとスコープ設定を整備してください。

ステップ2:最初の呼び出しを行う

まずはcurlで接続、認証、モデルIDをまとめて確認します。

curl https://api.mistral.ai/v1/chat/completions \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-large-4",
    "messages": [
      {
        "role": "user",
        "content": "ページネーションAPIでテストすべき3つのエッジケースを教えてください。"
      }
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

成功時は、回答を含む choices[0].message.content と、以下を含む usage ブロックが返ります。

  • prompt_tokens
  • completion_tokens
  • total_tokens

よくある初回エラーは次のとおりです。

  • 401: APIキーが間違っている、または環境変数にエクスポートされていない
  • 404: モデルIDのタイプミスであることが多い

Pythonで呼び出す

pip install mistralai
Enter fullscreen mode Exit fullscreen mode
import os
from mistralai import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

response = client.chat.complete(
    model="mistral-large-4",
    messages=[
        {
            "role": "user",
            "content": "ページネーションAPIでテストすべき3つのエッジケースを教えてください。",
        }
    ],
)

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

TypeScriptで呼び出す

npm install @mistralai/mistralai
Enter fullscreen mode Exit fullscreen mode
import { Mistral } from "@mistralai/mistralai";

const client = new Mistral({
  apiKey: process.env.MISTRAL_API_KEY,
});

const response = await client.chat.complete({
  model: "mistral-large-4",
  messages: [
    {
      role: "user",
      content: "ページネーションAPIでテストすべき3つのエッジケースを教えてください。",
    },
  ],
});

console.log(response.choices[0].message.content);
Enter fullscreen mode Exit fullscreen mode

ステップ3:Apidogに保存する

モデル比較を始めると、curlコマンドを毎回書き換える方法では管理しづらくなります。Apidogでは、同じ入力を使った比較用リクエストを保存できます。

  1. 新しいHTTPリクエストを作成します。
   POST https://api.mistral.ai/v1/chat/completions
Enter fullscreen mode Exit fullscreen mode
  1. 環境変数 MISTRAL_API_KEY を追加します。
  2. ヘッダーに次を設定します。
   Authorization: Bearer {{MISTRAL_API_KEY}}
Enter fullscreen mode Exit fullscreen mode
  1. ステップ2のJSONボディを貼り付けて送信します。
  2. リクエストを複製し、model を現在利用中のモデル(例: mistral-medium-3-5)に変更します。
  3. 両方のリクエストを実行し、結果を比較します。

これで、同一プロンプトを使う2つの保存済みリクエストを作成できます。Apidogではレスポンスボディ、ステータス、タイミング、サイズを確認できるため、スクリプトなしで回答品質、レイテンシ、usage のトークン数を比較できます。

さらに、choices[0].message.content が空でないことを確認するレスポンス後アサーションを追加してください。Mistralがプレビューを更新した際に再実行できるスモークテストになります。

ステップ4:推論のオン/オフを切り替える

Large 4はハイブリッドモデルです。高速な回答と段階的な推論を、reasoning_effort パラメータで切り替えます。

値 挙動 用途
"none" 最小限の思考。レスポンスに思考チャンクなし チャット、抽出、分類、低レイテンシが必要な処理
"high" 最終回答の前に完全な思考チャンクを返す デバッグ、多段階計画、数学、コードレビュー
curl https://api.mistral.ai/v1/chat/completions \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-large-4",
    "messages": [
      {
        "role": "user",
        "content": "当社のAPIは、負荷がかかると空のボディで200を返します。可能性のある原因を確率の高い順にリストしてください。"
      }
    ],
    "reasoning_effort": "high"
  }'
Enter fullscreen mode Exit fullscreen mode

reasoning_effort: "high" でパーサーが壊れる理由

reasoning_effort: "high" を指定すると、message.content は文字列ではなくチャンクのリストになります。リストには次の要素が含まれます。

  • 推論トレースを持つ thinking チャンク
  • 最終回答を持つ text チャンク

そのため、response.choices[0].message.content をそのまま表示すると、回答ではなくリストが出力されます。text チャンクだけを明示的に抽出してください。

response = client.chat.complete(
    model="mistral-large-4",
    messages=[
        {
            "role": "user",
            "content": "なぜ200レスポンスが空のボディを持つことがありますか?",
        }
    ],
    reasoning_effort="high",
)

content = response.choices[0].message.content

if isinstance(content, str):
    answer = content
else:
    answer = "".join(chunk.text for chunk in content if chunk.type == "text")

print(answer)
Enter fullscreen mode Exit fullscreen mode

思考トークンは出力トークンとして課金されます。通常は "none" をデフォルトにし、深い推論が必要な呼び出しだけ "high" に切り替えてください。

ステップ5:画像を送信する

Large 4は16億パラメータのビジョンエンコーダーを搭載するネイティブなマルチモーダルモデルです。画像はテキストと同じ content 配列に含めます。

curl https://api.mistral.ai/v1/chat/completions \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-large-4",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "これは弊社のAPIエラーダッシュボードのスクリーンショットです。どのエンドポイントが最も頻繁に失敗しており、エラーコードは何ですか?"
          },
          {
            "type": "image_url",
            "image_url": "https://example.com/dashboard.png"
          }
        ]
      }
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

ローカルファイルを送る場合は、base64データURLを image_url に設定します。

{
  "type": "image_url",
  "image_url": "data:image/png;base64,<encoded>"
}
Enter fullscreen mode Exit fullscreen mode

Mistralは、Dense 200のビジュアルグラウンディングベンチマークでLarge 4が42%を記録し、GPT-6 Astraの41%をわずかに上回ったと報告しています。そのため、ダッシュボード、グラフ、UI状態のスクリーンショット分析は適した用途です。

ステップ6:関数呼び出し

関数呼び出しは、Large 4のエージェント用途を実装する基本機能です。ツールを定義すると、モデルが呼び出すべきタイミングと引数を決定します。実際のAPI呼び出しはアプリケーション側で実行します。

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_order_status",
            "description": "注文IDで注文のステータスを検索します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "order_id": {
                        "type": "string",
                        "description": "注文ID、例: ORD-1042",
                    }
                },
                "required": ["order_id"],
            },
        },
    }
]

messages = [
    {
        "role": "user",
        "content": "注文ORD-1042はどこにありますか?",
    }
]

response = client.chat.complete(
    model="mistral-large-4",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

tool_call = response.choices[0].message.tool_calls[0]

print(tool_call.function.name)
print(tool_call.function.arguments)
Enter fullscreen mode Exit fullscreen mode

次に、アプリケーション側で関数を実行し、同じ tool_call_id を付けて結果をモデルへ返します。

import json

result = {
    "order_id": "ORD-1042",
    "status": "shipped",
    "eta": "2026-10-09",
}

messages.append(response.choices[0].message)
messages.append(
    {
        "role": "tool",
        "name": "get_order_status",
        "content": json.dumps(result),
        "tool_call_id": tool_call.id,
    }
)

final = client.chat.complete(
    model="mistral-large-4",
    messages=messages,
    tools=tools,
)

print(final.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

ツールスキーマは通常のJSON Schemaです。既存APIにOpenAPI仕様があるなら、各操作のリクエストスキーマを parameters に組み込めます。Apidogで先に仕様を設計しておくと、ツール定義と実際のAPIを同期しやすくなります。

ステップ7:JSONを返す

機械可読な出力が必要な場合は、response_format を指定します。

curl https://api.mistral.ai/v1/chat/completions \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-large-4",
    "messages": [
      {
        "role": "user",
        "content": "GET /v1/users/42 returned 404 から、メソッド、パス、ステータスコードを抽出してください。JSONで返答してください。"
      }
    ],
    "response_format": {
      "type": "json_object"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

JSON出力を使う場合は、プロンプトと response_format の両方でJSONを要求してください。

より厳密な形式が必要な場合、Mistralは完全なスキーマを持つ以下の形式もサポートしています。

{
  "type": "json_schema",
  "json_schema": {
    "...": "..."
  }
}
Enter fullscreen mode Exit fullscreen mode

Apidogでは、レスポンスにJSON Schemaアサーションを追加できます。形式がずれた場合、下流サービスで障害を起こす前にテストを明確に失敗させられます。

費用

利用内容 プレビュー価格 定価
入力、100万トークンあたり $0.68 $1.36
キャッシュ済み入力、100万トークンあたり $0.07 $0.14
出力、100万トークンあたり $2.09 $4.18

たとえば、1日10,000回の呼び出しを行うエージェントを考えます。各呼び出しは3,000入力トークンと500出力トークンで、入力の多くはキャッシュ済みシステムプロンプトとツール定義です。

  • 入力: 3,000万トークン 各3,000トークンのうち2,500トークンがキャッシュ済みの場合、2,500万トークンが$0.07、500万トークンが$0.68で課金されます。合計は1日あたり約$5.15です。
  • 出力: 500万トークン $2.09で課金されるため、合計は1日あたり約$10.45です。
  • 合計: プレビュー価格では1日あたり約$15.60、定価では約$31です。

同じワークロードをGPT-6 Astra(100万トークンあたり$10/$50、キャッシュ割引前)で実行すると、1日数百万ドルかかります。Mistralはプレビュー価格の終了時期を明言していないため、予算は定価を基準に見積もってください。

よくあるエラー

エラー 考えられる原因 解決策
401 Unauthorized キーがない、または間違っている echo $MISTRAL_API_KEY と Bearer プレフィックスを確認
404 / 無効なモデル モデルIDのタイプミス mistral-large-4 を正確に指定
422 Unprocessable Entity 不正なリクエストボディ。特に tools スキーマが多い 各ツールの parameters にあるJSON Schemaを検証
429 Too Many Requests ワークスペースティアのレート制限 バックオフして再試行するか、Studioで制限を上げる
回答がリストとして表示される reasoning_effort: "high" がチャンクを返す ステップ4のように text チャンクを抽出

よくある質問

Mistral Large 4はOpenAI互換ですか?

リクエスト形式は非常に似ています。model、messages、tools、tool_choice、response_format は期待どおりに動作します。安全のため、Mistral SDKまたはプレーンなHTTPを使用してください。推論出力はMistral独自のチャンク形式です。

いつローカルで実行できますか?

Mistralによると、ウェイトは2026年10月末までにリリース予定です。合計1.05兆パラメータのため、マルチGPUサーバーハードウェアが必要です。それまでの小型モデルのローカル実行については、「Mistral 3をローカルで実行する」ガイドを参照してください。

プレビュー版は本番環境に十分安定していますか?

まだです。このモデルはパブリックプレビューであり、ウェイトリリース前に変更される可能性があります。テストを固定し、Mistralがモデルを更新するたびに再実行してください。また、フォールバックモデルも設定しておくべきです。

既存のMistralコードでLarge 4を使用できますか?

はい。同じベースURL、認証、SDKを使えます。model 文字列を mistral-large-4 に変更してください。Medium 3.5から移行する場合は、「Mistral Medium 3.5 APIガイド」を参照してください。

まとめ

5分あれば、Large 4への動作するAPI呼び出しを作成できます。次の1時間は、実際のプロンプトをLarge 4と現在のモデルで並行実行し、品質・レイテンシ・トークン使用量を比較する時間に使ってください。

Apidogに両方のリクエストを保存し、ステータスとレスポンス形式のアサーションを追加すれば、プレビュー価格が半額である間に、Le Chonkをスタックへ追加する価値があるか判断できます。

Top comments (0)