Llama 4 Maverick API入門 — MetaのオープンモデルをPythonで試す
Discussion
Llama 4 Maverickは、17Bの有効パラメータ、128 experts、400Bの総パラメータを持つMetaのMixture-of-Expertsモデルです。本記事ではCometAPIのOpenAI互換エンドポイントを使い、テキストAPIをPythonから呼び出して、応答時間とトークン数を確認します。
Llama 4 Maverickとは
Metaの公式モデルカードでは、Llama 4 MaverickはネイティブマルチモーダルなLlama 4シリーズの一つとして説明されています。
| 項目 | 仕様 |
|---|---|
| アーキテクチャ | Mixture-of-Experts(MoE) |
| 有効パラメータ | 17B |
| 総パラメータ | 400B |
| Expert数 | 128 |
| 入力 | 多言語テキスト、画像 |
| 出力 | 多言語テキスト、コード |
| コンテキスト長 | 1M tokens |
| 学習データの知識カットオフ | 2024年8月 |
| 公開日 | 2025年4月5日 |
| ライセンス | Llama 4 Community License Agreement |
今回はCometAPIで現在確認できるテキストのChat Completionsルートを使用します。モデル自体の公式カードには画像入力が記載されていますが、マルチモーダル機能の対応状況やリクエスト形式はホスティング先ごとに異なります。画像を送る前に、利用するルートの最新ドキュメントを確認してください。
環境
- OS: macOS 15 / Ubuntu 24.04
- Python: 3.12
- ライブラリ:
openai1.x系 - API: CometAPI OpenAI互換エンドポイント
- モデルID:
llama-4-maverick
1. APIキーを環境変数へ保存する
CometAPIでAPIキーを発行したら、環境変数へ保存します。
export COMETAPI_KEY="your_api_key_here"
export LLAMA_MODEL_ID="llama-4-maverick"
実際のAPIキーをPythonファイル、スクリーンショット、GitHubリポジトリへ含めないでください。
2. SDKをインストールする
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade openai
3. 最初のリクエストを送る
llama4_maverick_quickstart.pyを作成します。
import os
import time
from openai import OpenAI
api_key = os.environ.get("COMETAPI_KEY")
model_id = os.environ.get("LLAMA_MODEL_ID", "llama-4-maverick")
if not api_key:
raise RuntimeError("COMETAPI_KEYを環境変数に設定してください。")
client = OpenAI(
api_key=api_key,
base_url="https://api.cometapi.com/v1",
timeout=60.0,
max_retries=2,
)
prompt = """
次の要件を満たすPython関数を作成してください。
- 入力は文字列のリスト
- 前後の空白を削除
- 空文字列を除外
- 重複を削除し、元の順序を維持
- 型ヒントと短い説明を付ける
""".strip()
started = time.perf_counter()
response = client.chat.completions.create(
model=model_id,
messages=[
{
"role": "system",
"content": "あなたは安全で読みやすいPythonコードを書くアシスタントです。",
},
{"role": "user", "content": prompt},
],
temperature=0.2,
max_completion_tokens=1_000,
)
elapsed = time.perf_counter() - started
answer = response.choices[0].message.content or ""
print(answer)
print(f"\nmodel: {response.model}")
print(f"elapsed: {elapsed:.2f} sec")
if response.usage:
print(f"input tokens: {response.usage.prompt_tokens}")
print(f"output tokens: {response.usage.completion_tokens}")
実行します。
python llama4_maverick_quickstart.py
成功すると、Python関数と説明に続いて、モデル名、処理時間、入出力トークン数が表示されます。回答の具体的な内容は実行時に変わるため、固定の出力例は掲載しません。
4. JSON形式をプロンプトで指定する
APIの構造化出力機能はルートによって異なるため、最初はプロンプトでJSONを要求し、Python側で必ず検証します。
import json
response = client.chat.completions.create(
model=model_id,
messages=[
{
"role": "user",
"content": (
"次の問い合わせを分類し、JSONオブジェクトだけを返してください。"
"必須キーはcategory、priority、summaryです。\n"
"問い合わせ: CSVエクスポートが空になり、今日の給与処理を完了できません。"
),
}
],
temperature=0,
max_completion_tokens=300,
)
raw = response.choices[0].message.content or ""
data = json.loads(raw)
required = {"category", "priority", "summary"}
missing = required - data.keys()
if missing:
raise ValueError(f"不足しているキー: {sorted(missing)}")
print(json.dumps(data, ensure_ascii=False, indent=2))
JSONとして読み込めても、分類結果が正しいとは限りません。実運用では、許可するカテゴリや優先度を列挙して検証してください。
5. API料金を概算する
2026年7月23日時点のCometAPIモデル一覧では、llama-4-maverickのルート料金は次のとおりです。
| 項目 | 1M tokensあたり |
|---|---|
| 入力 | $0.60 |
| 出力 | $1.80 |
入力2,000 tokens、出力800 tokensの例では次のようになります。
入力: 2,000 × 0.60 / 1,000,000 = $0.00120
出力: 800 × 1.80 / 1,000,000 = $0.00144
合計: $0.00264
料金は変更される可能性があります。公開・実行前にモデル一覧で確認してください。
6. 1Mコンテキストを試す前の注意点
1M tokensの入力上限は、大きなリポジトリや長い資料を扱う可能性を広げます。ただし、入力できることと、内容を正確に利用できることは別です。
長文評価では次を測定します。
- 冒頭・中央・末尾に置いた事実の検索精度
- 似た情報を混ぜた場合の識別精度
- 32K、128K、512K、1Mでの精度変化
- 入力長ごとのP50/P95レイテンシ
- 実際の料金とメモリ使用量
単に長い文書を要約させるだけでは、長文理解の品質を判断できません。
7. オープンモデルとして確認すべきこと
Llama 4 Maverickは重みを入手できるモデルですが、「オープン」であることと、無条件に利用できることは同じではありません。
- Llama 4 Community License Agreementを確認する
- Acceptable Use Policyを確認する
- API利用時はホスティング事業者の規約も確認する
- 個人情報、ログ保存、利用地域を確認する
- セルフホスト時は400Bの総パラメータを含むインフラ要件を評価する
17Bは有効パラメータ数であり、モデル全体の重みが17Bという意味ではありません。
まとめ
- Llama 4 Maverickは17B active / 400B total / 128 expertsのMoEモデルです。
- 公式モデルカードでは1M tokensとマルチモーダル入力が記載されています。
- CometAPIのテキストルートはOpenAI SDKから呼び出せます。
- マルチモーダル対応は、利用する配信ルートの仕様を別途確認します。
- 本番導入ではJSON検証、レイテンシ、料金、ライセンスを評価します。