TL;DR: クイック修正
このエラーは、Groq APIがmodelパラメータに渡された文字列を認識できない場合に発生します。通常は単なるタイポ(入力ミス)か、llama-3.1-8b-instantのような完全なIDではなくllama3のような短縮名を使用していることが原因です。
すぐに修正するには、コード内のモデルIDをレジストリにある有効なものに更新してください:
# これを:
completion = client.chat.completions.create(model="llama3", ...)
# こちらに変更(現在の Llama 3.1 ID):
completion = client.chat.completions.create(model="llama-3.1-8b-instant", ...)
なぜこのエラーが発生するのか?
コンソールに404エラーが表示されていますか?これは、APIがリクエストされた特定のリソースを見つけられないことを意味します。一部のプロバイダーとは異なり、Groqはモデルの正確な文字列を要求します。よくある問題ですが、主な原因は以下の3点です:
- サフィックス(接尾辞)の欠落: バージョンやコンテキストウィンドウの指定を忘れている(例:
mixtral-8x7b-32768ではなくmixtral-8x7bを使用している)。 - 非推奨モデルの使用:
llama-3.1や3.2シリーズに置き換えられたllama3-8b-8192などの古いモデルを使用しようとしている。 - 隠れた文字:
.envファイル内の余計なスペースや改行文字がリクエストを破損させている。
ステップバイステップの修正手順
1. SDK経由でアクティブなモデル一覧を取得する
モデル名を推測するのはやめましょう。Groqから直接アクティブなモデルの最新リストを取得できます。これが、お使いのリージョンで現在サポートされているものを確認する最も確実な方法です。
from groq import Groq
import os
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
# 利用可能なすべてのモデルを取得
models = client.models.list()
print("現在の有効なモデルID一覧:")
for model in models.data:
print(f"- {model.id}")
このスクリプトを実行し、正確な文字列をコピーしてください。リストにllama-3.2-3b-previewがあれば、そのテキストをそのまま使用します。
2. 更新されたモデルIDを使用する
Groqがインフラを更新するにつれて、モデル名も変更されます。2024年後半に使用されている以下の一般的なパターンと設定が一致しているか確認してください:
- Llama 3.1 8B:
llama-3.1-8b-instant - Llama 3.1 70B:
llama-3.1-70b-versatile - Llama 3.2 1B (Preview):
llama-3.2-1b-preview - Mixtral 8x7b:
mixtral-8x7b-32768
3. 環境変数をクリーニングする
もし.envファイルからモデル名を読み込んでいる場合、末尾にスペースが1つあるだけで404エラーが発生します。クライアントに渡す前に.strip()を使用して入力をサニタイズしましょう。
import os
from groq import Groq
# フォールバック付きで環境変数から取得
RAW_MODEL_NAME = os.getenv("GROQ_MODEL_NAME", "llama-3.1-8b-instant")
# 誤入力を防ぐため空白を削除
CLEAN_MODEL_NAME = RAW_MODEL_NAME.strip()
client = Groq()
# APIコールで CLEAN_MODEL_NAME を使用する
修正の確認
すべてが正常に動作しているか確認するために、以下の最小限のスクリプトを実行してください。レスポンスが表示されれば、モデルの設定は完璧です。
from groq import Groq
client = Groq()
try:
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": "Test"}],
model="llama-3.1-8b-instant",
)
print("成功!モデルが見つかりました。")
except Exception as e:
print(f"エラーが継続中: {e}")
本番環境向けのプロのアドバイス
モデルの非推奨化によってアプリが停止しないようにしましょう。モデルIDは複数のファイルにハードコードせず、中央のconfig.pyなどで定義してください。ミッションクリティカルなアプリでは、呼び出しをtry-exceptブロックで囲みます。特にgroq.NotFoundErrorをキャッチすることで、チームに対して明確なアラートをログに記録し、すぐにモデルIDを更新できるようになります。
参考資料
- Groq公式モデルドキュメント - サポートされているLLMの決定版リスト。
- Groq Python SDK GitHub - ライブラリのアップデートや破壊的変更についてはこちらを確認してください。

