blog

Mistral API の使い方|料金・始め方【2026年版】

Mistral AIが提供するAPIは、軽量ながら高い推論精度を持つモデル群をプログラムから直接呼び出せる仕組みです。OpenAI互換のインターフェースを採用しているため、既存のワークフローに素早く組み込めるのが最大の魅力です。本記事では、Mistral APIの取得から実際のリクエスト送信、モデル選択の考え方、料金との関係まで、実運用で得た知見を交えながら徹底解説します。

Mistral APIとは何か

Mistral APIは、フランスのAIスタートアップMistral AIが公開するRESTful APIです。同社のモデルをクラウド経由で呼び出せるほか、オープンウェイトモデルをセルフホストする形でも同じAPIインターフェースを使えます。OpenAI APIのエンドポイント仕様と高い互換性を持ち、openaiライブラリやhttpxなど既存ツールをほぼそのまま流用できます。

Mistral AI全体の概要や沿革についてはMistralとは何か・全体像の記事で詳しく解説しています。本記事ではAPIの技術的な詳細と実装に焦点を当てます。

APIで呼び出せる主なモデル(2026年6月時点)

モデル名 用途 API単価(百万トークン) 特徴
mistral-medium-3.5 エージェント・コーディング・マルチモーダル 入力 $1.50 / 出力 $7.50 現行のプレミア・フロンティアモデル。Le Chat「Vibe」コーディングエージェントを駆動
mistral-small-4 軽量・低コスト・推論・コーディング 入力 $0.10 / 出力 $0.30 instruct/reasoning/codingを1モデルに統合。マルチモーダル対応で非常に安価
devstral-2 ソフトウェアエンジニアリング 要確認(console.mistral.ai) フロンティア・コードエージェントモデル
codestral-latest コード補完(FIM) 要確認(console.mistral.ai) 80以上の言語対応。fill-in-the-middle対応
mistral-embed テキスト埋め込み 要確認(console.mistral.ai) RAG・類似検索用ベクトル生成
mistral-moderation-2 コンテンツ審査 要確認(console.mistral.ai) 有害コンテンツ分類に特化(2026-03 更新版)

※料金は変動します。最新単価はMistral公式pricingおよびconsole.mistral.aiでご確認ください。モデルごとの詳細比較はMistral料金プランの詳細比較もご参照ください。

APIキーの取得手順

APIを使うにはまずMistral AI Platformのアカウントが必要です。無料トライアルの範囲や登録方法についてはMistral AIの無料プランと制限で詳しく説明しています。ここではキーの発行から管理までを解説します。

  1. console.mistral.ai にアクセスし、Googleアカウントまたはメールアドレスでサインアップする
  2. 左メニューの「API Keys」を開き、「Create new key」をクリックする
  3. キー名(用途別に命名すると管理しやすい)を入力し「Generate」を押す
  4. 表示されたキー文字列をコピーし、安全な場所に保存する(再表示不可)
  5. 環境変数 MISTRAL_API_KEY にセットして本番コードに直書きしない

実運用では複数のプロジェクトごとにキーを発行し、不要になったらコンソールから即時失効させる運用が安全です。弊社でも本番環境・ステージング環境・ローカル開発の3種でキーを分離し、ログへの誤出力を防ぐためにシークレットスキャナーを導入しています。

基本的なAPIリクエストの書き方

Mistral APIはHTTPS経由のREST APIです。公式SDKを使う方法とcurlなど生のHTTPリクエストを使う方法の両方を押さえておくと、デバッグ時に役立ちます。

Python公式SDKを使う場合

まずSDKをインストールします。

pip install mistralai

チャット補完の最小サンプルコードは以下のとおりです。

import os
from mistralai import Mistral

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

response = client.chat.complete(
    model="mistral-small-4",
    messages=[
        {"role": "user", "content": "Pythonでフィボナッチ数列を生成するコードを書いてください。"}
    ]
)

print(response.choices[0].message.content)

curlで試す場合

curl -X POST https://api.mistral.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -d '{
    "model": "mistral-small-4",
    "messages": [{"role": "user", "content": "こんにちは"}]
  }'

レスポンスはchoices[0].message.contentにテキストが格納されます。OpenAI APIと同じ構造なので、既存コードのmodelパラメータとベースURLを変更するだけで移行できるケースがほとんどです。

ストリーミングレスポンス

長い回答をリアルタイムに表示したい場合はstream=Trueを指定します。

with client.chat.stream(
    model="mistral-medium-3.5",
    messages=[{"role": "user", "content": "詳細なレポートを作成してください。"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

弊社のチャットUIでは、ストリーミングを有効にするだけでユーザーの体感速度が大きく改善しました。特に日本語の長文応答では待機時間の短縮効果が顕著で、応答完了まで画面が白いままになる問題をほぼ解消できました。

主要APIエンドポイントの全体像

Chat Completions
/v1/chat/completions
テキスト生成・会話
Embeddings
/v1/embeddings
ベクトル生成(RAG)
FIM(コード補完)
/v1/fim/completions
Codestral専用
Moderation
/v1/moderations
コンテンツ審査

Embeddingsエンドポイントの使い方

RAG(検索拡張生成)や類似文書検索のベクトル生成にmistral-embedを使います。

response = client.embeddings.create(
    model="mistral-embed",
    inputs=["この文章をベクトル化してください。"]
)
vector = response.data[0].embedding
print(f"次元数: {len(vector)}")  # 1024次元

出力は1024次元の浮動小数点数リストです。Pinecone、Qdrant、pgvectorなど主要なベクトルDBにそのまま格納できます。弊社ではFAQシステムの類似質問検索にmistral-embedを採用しており、日本語テキストでも十分実用的な精度が得られることを確認しています。

FIMエンドポイント(コード補完)

Fill-in-the-Middle(FIM)は、コードの途中に穴を開けてモデルに補完させる方式です。IDE拡張や自社開発エディタに組み込む際に活用します。

response = client.fim.complete(
    model="codestral-latest",
    prompt="def fibonacci(n):\n    if n <= 1:\n        return n\n    ",
    suffix="\n\nprint(fibonacci(10))"
)
print(response.choices[0].message.content)

Function Calling(ツール呼び出し)

Mistral APIはFunction Calling(ツール呼び出し)をサポートしており、モデルに外部関数を実行させてその結果を回答に組み込むことができます。エージェント構築の核となる機能です。

Function Callingの実装フロー

① ツール定義
関数スキーマをJSONで記述
② APIリクエスト
messagesとtoolsを送信
③ tool_calls受信
モデルが関数呼び出しを返す
④ 関数実行
ローカルで実際に実行
⑤ 結果を再送信
最終回答を取得

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "指定都市の現在の天気を返す",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "都市名(日本語可)"}
                },
                "required": ["city"]
            }
        }
    }
]

messages = [{"role": "user", "content": "東京の天気を教えて"}]

# ① ツール付きでリクエスト
response = client.chat.complete(
    model="mistral-medium-3.5",
    messages=messages,
    tools=tools,
    tool_choice="auto"
)

# ② tool_callsを受け取る
tool_call = response.choices[0].message.tool_calls[0]
func_name = tool_call.function.name
func_args = json.loads(tool_call.function.arguments)

# ③ 実際の関数を実行(ここは自前実装)
def get_weather(city): return f"{city}は晴れ、気温22℃"
result = get_weather(**func_args)

# ④ 結果を会話に追加して再リクエスト
messages.append(response.choices[0].message)
messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": result
})

final = client.chat.complete(model="mistral-medium-3.5", messages=messages)
print(final.choices[0].message.content)

モデル選択の実践的な判断基準

「どのモデルを使うべきか」は、精度・速度・コストのバランスで決まります。以下は弊社が実運用で採用している選択フローです。

タスク種別 推奨モデル 理由
大量ドキュメントの分類・要約 mistral-small-4 入力$0.10/出力$0.30と最安級。十分な精度
複雑な推論・多段階エージェント mistral-medium-3.5 プレミア・フロンティアモデル。エージェント用途に最適化
コードエージェント・大規模開発 devstral-2 ソフトウェアエンジニアリング特化のフロンティアモデル
コード補完(FIM) codestral-latest fill-in-the-middle対応のコード補完専用
RAG・セマンティック検索 mistral-embed ベクトル生成専用モデル
コンテンツモデレーション mistral-moderation-2 有害コンテンツ検出に特化(2026-03 更新版)
オープンウェイト・セルフホスト Mistral Large 3 / Ministral 3 Apache 2.0 等でオープン公開。自社インフラで動作可能

弊社の経験では、まずmistral-small-4で試作し、精度が不足する場合のみmistral-medium-3.5に切り替えるアプローチが費用対効果の面で優れています。Small 4とMedium 3.5の精度差が出やすいのは、論理的推論を複数ステップ踏む必要があるタスクや、ニュアンスの細かい日本語文章生成です。

パラメータの主要設定値と使い分け

パラメータ デフォルト 推奨値(用途別)
temperature 0.7 コード・分類:0〜0.3 / 創作:0.8〜1.0
max_tokens モデル上限 コスト管理のため明示的に指定を推奨
top_p 1.0 temperatureと同時変更は非推奨
safe_prompt false 一般公開サービスではtrueを推奨
random_seed null 再現性が必要なテスト時に整数を指定

OpenAIライブラリとの互換性を活かした移行方法

Mistral APIはOpenAI互換エンドポイントを提供しているため、openaiライブラリを使っているコードでもベースURLとAPIキーの2箇所を変更するだけで動作します。

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["MISTRAL_API_KEY"],
    base_url="https://api.mistral.ai/v1"
)

response = client.chat.completions.create(
    model="mistral-medium-3.5",
    messages=[{"role": "user", "content": "こんにちは"}]
)
print(response.choices[0].message.content)

LangChainやLlamaIndexなどのフレームワークでもChatMistralAIクラスやMistralAIインテグレーションが用意されており、既存のRAGパイプラインへの組み込みが容易です。

エラーハンドリングとレート制限への対処

本番環境での安定運用には、適切なエラーハンドリングが不可欠です。Mistral APIで頻出するエラーコードと対処法を整理します。

HTTPステータス 意味 対処法
401 APIキー無効 キーを再発行・環境変数を確認
422 リクエスト形式エラー messagesの構造・必須フィールドを確認
429 レート制限超過 指数バックオフでリトライ
500/503 サーバーエラー 一定間隔でリトライ(上限回数を設定)

429エラー(レート制限)に対する指数バックオフの実装例です。

import time
from mistralai import MistralAPIException

def chat_with_retry(client, messages, model, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.complete(model=model, messages=messages)
        except MistralAPIException as e:
            if e.status_code == 429:
                wait = 2 ** attempt  # 1, 2, 4, 8, 16秒
                print(f"レート制限: {wait}秒後にリトライ")
                time.sleep(wait)
            else:
                raise
    raise RuntimeError("最大リトライ回数に達しました")

セルフホストとクラウドAPIの使い分け

MistralのオープンウェイトモデルであるMistral Large 3(別称「Mistral 3」)やMinistral 3ファミリー(14B / 8B / 3B、Apache 2.0)は、ローカル環境やプライベートクラウドでも動作します。クラウドAPIとセルフホストのどちらを選ぶかは、以下の観点で判断します。

  • データ機密性が高い場合:個人情報・機密文書を扱うなら、データが外部に送信されないセルフホストが有利。OllamaやvLLMを使えば同じAPIインターフェースで動作します。
  • スケールアウトが必要な場合:トラフィックの波が大きいプロダクトでは、インフラ管理コストも含めてクラウドAPIの方がトータルで安くなることがほとんどです。
  • コスト最小化が最優先の場合:無料で試したい段階やPoC段階はMistral AIの無料プランを活用し、本番移行後はMistral Small 4(入力$0.10/出力$0.30)など低単価モデルの従量課金が現実的です。

実際の使い方の詳細(UIからの操作やLe Chatの使い方を含む)についてはMistral AIの使い方ガイドで解説しています。

テキストのベクトル化とRAGパイプラインのイメージ図
テキストのベクトル化とRAGパイプラインのイメージ図

Mistral APIを使う際のコスト最適化のポイント

APIコストはトークン数に比例するため、以下の対策が実効的です。

  1. システムプロンプトを簡潔に保つ:毎リクエストに含まれるシステムプロンプトは短いほど入力コストが下がります。冗長な指示は削除し、core instructionに絞ります。
  2. max_tokensを明示的に制限する:応答長の上限を設定しないと、不必要に長い回答が生成されてコストが膨らみます。タスクに応じた上限を設定してください。
  3. バッチ処理を活用する:非リアルタイムの処理(文書の一括分類・翻訳など)は、Batch APIを使うとコストを大幅に削減できます。
  4. 小さいモデルで試して上げる:Mistral Small 4(入力$0.10/出力$0.30)で品質評価を行い、問題がなければそのまま使います。多くのタスクはSmall 4で十分な精度が出ます。
  5. キャッシュレイヤーを設ける:同一入力への繰り返しリクエストは、Redis等でキャッシュして二重課金を防ぎます。

まとめ

Mistral APIは、OpenAI互換インターフェースによる導入のしやすさ、軽量モデルから高性能フロンティアまでの幅広いモデル選択肢、そしてオープンウェイトモデルとの組み合わせによる柔軟な運用形態が強みです。2026年6月時点の主要モデルは、プレミア・フロンティアのMistral Medium 3.5(入力$1.50/出力$7.50)と、高コスパ小型モデルのMistral Small 4(入力$0.10/出力$0.30)の2軸が中心です(出典:mistral.ai/pricing/、2026-06-08確認)。

  • APIキーはコンソールで即時発行でき、MISTRAL_API_KEY環境変数で管理する
  • チャット補完・エンベディング・FIM・モデレーションの4系統のエンドポイントを用途別に使い分ける
  • Function Callingでエージェント型アプリケーションを構築できる
  • コスト最適化は「Mistral Small 4から試す」「max_tokensを制限する」が基本
  • 429エラーには指数バックオフ、本番環境ではエラーハンドリングを必ず実装する

料金体系の詳細はMistral料金プランの詳細比較で、Mistral AI全体の概要はMistralとはでそれぞれ深掘りしています。APIを起点に、自社システムへの組み込みをぜひ試してみてください。

関連記事

参考文献

    監修

    河合 継(クリスタルメソッド株式会社 代表取締役)

    AI・ディープラーニングに関する特許16件の発明者。過去、国立がん研究センターとの共同研究や、テレビ番組でのAI解説実績を持つAI研究者として、AIの研究開発を主導している。
    運営会社について編集方針

    AIブログ購読

     
    クリスタルメソッドがお届けする
    AIブログの更新通知を受け取る

    Study about AI

    AIについて学ぶ

    • Meta インド データセンター AIインフラ——Reliance 168MW契約の深層と日本企業の実務対応

      Meta インド データセンター AIインフラ——Reliance 168MW契約の深層と日本企業の実務対応

      Meta インド データセンター AIインフラ——168MW契約の要点と背景 2026年6月9日、MetaはリライアンスIインダストリーズ(Reliance I...

    • ワーナー Sureel AI 音楽 著作権——買収の意味と日本企業への示唆

      ワーナー Sureel AI 音楽 著作権——買収の意味と日本企業への示唆

      ワーナー Sureel AI 音楽 著作権——買収の要点と業界的意義 2026年6月10日、Warner Music Group(以下WMG)はAIスタートアッ...

    • Vector Lakebase ベクターDB RAG——Zillizが示す統合AIデータ基盤の論点

      Vector Lakebase ベクターDB RAG——Zillizが示す統合AIデータ基盤の論点

      Vector Lakebaseとは何か——RAGデータ基盤をめぐる問い直し 2026年6月10日、ZillizはマネージドサービスZilliz Cloudをベー...

    View more