廣告位招商中 歡迎洽談

如何配置 API 金鑰、選擇模型端點並使用 xAI Grok API 實現函式呼叫

365Finds Editorial
已收錄 11,430 篇 Wiki 文章

讓你的 AI 用上 365 Wiki

複製下方的提示詞,貼給你常用的 AI,然後直接提問。

下載完整版 Skill

先用提示詞體驗;經常使用時,安裝完整版 365Wiki Skill,以後無需重複複製。沒有常用 AI?Gemini、Microsoft Copilot 等網頁版也可以。

365Wiki Skill

軟體開發者將 xAI 的 Grok 模型整合至自身應用程式的過程非常直覺且高效,因為 xAI 平台不僅提供原生 SDK 與現代化 REST 端點,亦完全相容 OpenAI SDK 規範。Grok API 統一運行於 https://api.x.ai/v1 基礎位址,開發者只需配置標準的 Bearer Token 授權,即可自由調用旗艦級推理模型(如 grok-4.7)或低延遲程式碼模型(如 grok-build-0.1),並透過多輪函式呼叫(Function Calling)將 Grok 與企業資料庫、內部微服務以及外部第三方 API 深度串接。

本文為開發者提供從金鑰配置、模型與端點選型,到完整函式呼叫實作的完整指南。


一、配置 API 金鑰與基礎授權

存取 Grok API 所需的所有憑證皆透過 xAI 控制台(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. 配置環境變數

建議透過環境變數傳入金鑰,變數名稱通常設定為 XAI_API_KEY:

export XAI_API_KEY="xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

在 Node.js 或 Python 專案中,可儲存在專案根目錄的 .env 檔案內:

XAI_API_KEY=xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. 初始化客戶端 SDK

由於 xAI 嚴格遵循標準 REST 協定並支援 OpenAI Schema 相容性,開發者可選擇官方 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",
});

二、模型端點與架構選型

在設計系統架構時,開發者需釐清 HTTP 端點通訊協定與各模型代號間的對應關係。

端點協定:/v1/responses 與 /v1/chat/completions

文字與推理模型比較

模型名稱 / 別名上下文視窗最佳應用場景計費標準(每 100 萬 Token)
grok-4.7 (grok-4.7-latest)500,000 tokens旗艦推理模型,專門針對複雜 Agent 決策、深層程式碼分析、多工具鏈路調用優化,支援配置推理強度(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 tokens具備百萬級超長上下文視窗,適合超大程式庫檢索、長篇法律文檔分析與長對話歷史摘要。輸入 $1.25 / 輸出 $2.50(快取輸入 $0.20)
grok-4.20-multi-agent-03091,000,000 tokens針對多 Agent 協同架構、任務指派與分散式狀態協商深度調校。輸入 $1.25 / 輸出 $2.50(快取輸入 $0.20)

補充說明:除了語言模型,xAI 亦提供專屬多模態端點,包括即時雙向語音 grok-voice-think-fast-2.0(Voice API)與影像/影片生成模型 grok-imagine-image-2.0(Imagine API)。


三、實現函式呼叫(Function Calling / Tool Calling)

函式呼叫賦予 Grok 自主使用外部工具的能力。模型不再僅依賴靜態訓練資料,而是能動態產生結構化參數來呼叫外部 API、讀寫資料庫或執行內部指令。

核心運作流程

  1. 宣告工具: 開發者於請求中傳入具備 JSON Schema 格式的工具陣列(包含 name、description 與 parameters)。
  2. 模型評估: Grok 分析使用者輸入,判斷是否需要呼叫外部函式以取得資訊。
  3. 發出呼叫請求: 模型回傳包含函式名稱及 JSON 參數的 tool_calls 物件,並暫停產出文字。
  4. 本機執行: 應用程式解析參數,並於本機或後端伺服器執行對應業務邏輯。
  5. 回傳結果並總結: 將函式執行結果包裝後回傳給 Grok,模型結合結果生成最終的使用者回覆。

完整範例程式碼(Python + OpenAI 客戶端)

以下範例示範如何在 responses 端點中定義客戶資料查詢工具,解析呼叫請求、執行本機函式並將結果回傳:

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. 定義工具 Schema(必須遵循 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": "是否同步回傳當前計費週期的 Token 使用量數據",
                    "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. 將執行結果回傳給 Grok 繼續推論
            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)

四、工程架構重要規範與進階功能

在建置生產等級的 Grok 工具呼叫架構時,需留意下列規格特點:


參考資料