広告枠を募集中 ご相談ください

xAI Grok APIでAPIキーを設定し、モデルエンドポイントを選定し、関数呼び出しを実装する方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

xAIのGrokモデルを自社アプリケーションに統合する作業は、標準的なREST仕様およびOpenAI SDKとの完全な互換性により、極めてシンプルかつ迅速に行えます。Grok APIは https://api.x.ai/v1 をベースURLとして稼働しており、標準的なBearerトークンによる認証を設定するだけで、フラグシップ推論モデル(grok-4.7)や高速コーディングモデル(grok-build-0.1)を呼び出し、複数ターンの関数呼び出し(Function Calling / Tool Calling)を通じて社内データベースや外部APIと柔軟に連携させることが可能です。

本記事では、APIキーの発行と環境設定、ワークロードに応じたモデルエンドポイントの選定、そして本番環境で堅牢に動作する関数呼び出しの実装手順を解説します。


1. APIキーの設定と認証

Grok APIへのアクセス管理は、xAI Console(https://console.x.ai)を通じて一元的に行われます。

ステップ1: APIキーの発行

  1. xAI Console にアクセスし、アカウント登録またはログインを行います。
  2. Billing(請求)セクションでクレジットを購入し、API利用可能な残高を確保します。
  3. API Keys 管理ページ(https://console.x.ai/team/default/api-keys)を開き、Create API Key をクリックします。
  4. 生成されたキーを速やかにコピーして安全な場所に保管します(モーダルを閉じると再表示されません)。

ステップ2: 環境変数の設定

APIキーはソースコードにハードコードせず、XAI_API_KEY という名前の環境変数として設定します。

export XAI_API_KEY="xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Node.jsやPythonプロジェクトでは、プロジェクトルートの .env ファイルに記述します。

XAI_API_KEY=xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ステップ3: クライアントSDKの初期化

xAIはOpenAIのスキーマと互換性があるため、公式の xai-sdk、広く普及している openai ライブラリ、またはVercel AI SDKから直接接続できます。

Python(OpenAI公式ライブラリを使用):

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("XAI_API_KEY"),
    base_url="https://api.x.ai/v1",
)

Python(xAIネイティブSDKを使用):

import os
from xai_sdk import Client

client = Client(api_key=os.getenv("XAI_API_KEY"))

Node.js / TypeScript(openai パッケージを使用):

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.XAI_API_KEY,
  baseURL: "https://api.x.ai/v1",
});

2. モデルエンドポイントとアーキテクチャの選定

xAIは2種類の主要なHTTP推論エンドポイントと、レイテンシやコンテキスト長に応じたモデル群を提供しています。

エンドポイントプロトコル: /v1/responses と /v1/chat/completions

テキスト・推論モデル一覧と選択基準

モデル名 / エイリアスコンテキスト長最適なユースケース料金(100万トークンあたり)
grok-4.7 (grok-4.7-latest)500,000 tokens最上位の推論モデル。複雑なエージェント設計、深いコード解析、複数ツールのオーケストレーションに最適化。推論深度(low, medium, high, xhigh)の調整が可能。入力 $2.00 / 出力 $6.00(キャッシュ入力 $0.50)
grok-build-0.1 (grok-code-fast-1)256,000 tokensコード生成・補完に特化した高速モデル。インラインコード補全、リファクタリング、テストコード自動生成向け。入力 $1.00 / 出力 $2.00(キャッシュ入力 $0.20)
grok-4.3 (grok-4.3-latest)1,000,000 tokens100万トークンの超長大コンテキストを低コストで処理。大規模リポジトリの解析や長編ドキュメントの横断検索向け。入力 $1.25 / 出力 $2.50(キャッシュ入力 $0.20)
grok-4.20-multi-agent-03091,000,000 tokens複数エージェント協調システムや分散タスク向けに調整されたアーキテクチャ。入力 $1.25 / 出力 $2.50(キャッシュ入力 $0.20)

補足: テキスト以外に、リアルタイム双方向音声向けのエンドポイント grok-voice-think-fast-2.0(Voice API)や、画像・動画生成向けの grok-imagine-image-2.0(Imagine API)も用意されています。


3. 関数呼び出し(Function Calling / Tool Calling)の実装

関数呼び出しにより、Grokは単にテキストを生成するだけでなく、外部APIの呼び出しやデータベースクエリを実行するための構造化された引数を自律的に組み立てることができます。

処理のライフサイクル

  1. ツール定義: リクエスト内でJSON Schema形式のツール一覧(name, description, parameters)を渡します。
  2. モデルによる判断: Grokがユーザーの入力を解析し、外部データの取得が必要かどうかを判断します。
  3. 呼び出し要求の返却: モデルが関数名と引数JSONを含む tool_calls を返し、出力を一時停止します。
  4. ローカル実行: アプリケーション側で引数を展開し、実際の業務ロジックを実行します。
  5. 結果の送信と最終回答: 関数の戻り値をGrokに送り返し、モデルがそれを踏まえて最終的な回答を生成します。

完全な実装例(Python + OpenAIクライアント)

以下は、responses エンドポイントを用いてユーザーアカウント情報を照会するツールを定義し、Grokからの要求を受け取って実行結果を返すコード例です。

import os
import json
from openai import OpenAI

# 1. クライアントの初期化
client = OpenAI(
    api_key=os.getenv("XAI_API_KEY"),
    base_url="https://api.x.ai/v1",
)

# 2. JSON Schemaに準拠したツールの定義
tools = [
    {
        "type": "function",
        "name": "fetch_user_account",
        "description": "アカウントIDに基づいて、ユーザープロファイル、契約プラン、現在のステータスを取得します。",
        "parameters": {
            "type": "object",
            "properties": {
                "account_id": {
                    "type": "string",
                    "description": "ユーザーアカウント識別子(例: 'usr_10294')"
                },
                "include_usage_stats": {
                    "type": "boolean",
                    "description": "当請求サイクルのトークン使用量データを含めるかどうか",
                    "default": False
                }
            },
            "required": ["account_id"]
        }
    }
]

# ローカル関数のモック実装
def execute_fetch_user_account(account_id: str, include_usage_stats: bool = False):
    return {
        "account_id": account_id,
        "name": "Alex Mercer",
        "tier": "Enterprise",
        "status": "Active",
        "usage_tokens": 1420500 if include_usage_stats else None
    }

# 3. ツール定義を含めた問い合わせの送信
user_query = "アカウント usr_10294 の情報を照会し、有効な Enterprise プランに加入しているか確認してください。"

response = client.responses.create(
    model="grok-4.7",
    input=[{"role": "user", "content": user_query}],
    tools=tools,
)

# 4. モデルからのツール呼び出しリクエストを処理
for item in response.output:
    if item.type == "function_call":
        func_name = item.name
        func_args = json.loads(item.arguments)
        call_id = item.call_id
        
        print(f"モデルからツール呼び出しが要求されました: {func_name}, 引数: {func_args}")
        
        if func_name == "fetch_user_account":
            tool_result = execute_fetch_user_account(**func_args)
            
            # 5. 実行結果をモデルに送り返し、推論を継続
            followup = client.responses.create(
                model="grok-4.7",
                input=[{
                    "type": "function_call_output",
                    "call_id": call_id,
                    "output": json.dumps(tool_result)
                }],
                tools=tools,
                previous_response_id=response.id,
            )
            
            # モデルによる最終回答を表示
            for followup_item in followup.output:
                if followup_item.type == "message":
                    print("\n最終回答:\n", followup_item.content[0].text)

4. 本番運用のための重要仕様と応用機能

Grokでツール呼び出しシステムを構築する際は、以下の技術要件に留意する必要があります。


参考文献