廣告位招商中 歡迎洽談

將 Grok 整合至自訂軟體:API 金鑰配置、模型參數調校與函式呼叫實戰

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

讓你的 AI 用上 365 Wiki

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

下載完整版 Skill

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

365Wiki Skill

將 xAI 的 Grok 大型語言模型整合至自有軟體與業務架構中,能為系統注入強大的推理分析、超長上下文視窗以及即時外部資料檢索能力。xAI 提供了完全相容 OpenAI REST 規格的 API 介面(端點基底路徑為 https://api.x.ai/v1),開發者可直接沿用現有的官方 OpenAI SDK,或導入專屬的 xai-sdk 與 @ai-sdk/xai 套件進行工程串接。

在實際系統整合中,成功的 Grok 應用由三大技術基石構成:於控制台安全取得並管理 API 金鑰憑證、依據應用場景精準調校模型執行期參數,以及建置穩健的客戶端函式呼叫(Function Calling / Tool Calling)工作流,賦予 Grok 自主調用內部微服務、營運資料庫與第三方 API 的執行能力。


一、取得並配置 xAI API 開發者憑證

在調用 Grok API 之前,必須在 xAI 開發者控制台完成帳號註冊、額度加值與金鑰簽發。

1. 建立帳號並生成 API Key

  1. 前往 xAI Console 開發者管理後台:https://console.x.ai。
  2. 建立帳單設定檔,並儲值足夠的 API 調用額度點數。
  3. 進入 API Keys 管理頁面,點擊生成新的 API 金鑰。
  4. 將金鑰安全注入環境變數中,切勿將明文金鑰直接寫入 Git 程式庫:
export XAI_API_KEY="xai-your-api-key-here"

在本地端開發環境中,建議將其存放於未納入版本控管的 .env 檔案中:

XAI_API_KEY=xai-your-api-key-here

2. 用戶端初始化設定

由於 xAI 端點與 OpenAI 規格完全相容,初始化用戶端時僅需將基底 URL 指向 https://api.x.ai/v1。

Python(OpenAI SDK)

import os
from openai import OpenAI

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

TypeScript / Node.js(OpenAI SDK)

import OpenAI from "openai";

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

二、模型選型與執行期參數調校

因應不同的業務延遲與預算需求,精確挑選模型規格並配置參數,是確保輸出品質與成本控制的核心關鍵。

主要生產環境模型比較

模型代號核心優勢上下文視窗容量典型應用場景
grok-4.7旗艦級高階推理模型,具備深度邏輯推演與精密工具編排實力500,000 tokens多步驟自主 Agent 工作流、程式碼邏輯審查、高複雜度商業決策分析
grok-4.3高性價比推理模型,反應速度快且吞吐量大1,000,000 tokens超長文件研讀、全量知識庫檢索增強(RAG)、大規模客戶支援系統
grok-build-0.1專為程式編寫優化的輕量低延遲模型256,000 tokens即時程式碼補全、語法除錯修復、開發自動化腳本執行

關鍵推論參數說明

調用 chat.completions.create 或 responses.create 時,請重點關注下列參數配置:


三、函式呼叫(Function Calling)運作架構

函式呼叫使 Grok 能突破純文字生成的限制。模型在解析使用者輸入後,能自主判斷何時必須調用外部工具,並依照開發者定義的結構規範(JSON Schema)產生精準入參,等待本地系統執行完畢並回傳資料。

伺服器端內建工具 vs 用戶端自訂函式

xAI 支援兩類工具的混合執行:

  1. 伺服器端內建工具(Built-in Tools): 例如網路搜尋(web_search)、社群情報檢索(x_search)與沙盒程式執行(code_execution)。由 xAI 雲端伺服器全自動運算處理,無需用戶端程式碼介入。
  2. 用戶端自訂函式(Function Calling): 由開發者自訂入參規格並於內部伺服器執行。模型判斷需要調用時會暫停回應,將函式名稱與參數封裝回傳,待本地程式碼執行完成後再傳回結果繼續生成。

參數架構規範與防錯

參數規格必須完全符合 JSON Schema 規則:

工具決策與平行調用


四、完整函式呼叫實作程式碼範例

下列 Python 範例展示了定義本機函式、配置工具 Schema、攔截模型呼叫請求、執行訂單查詢,並將結果送回 Grok 以合成最終語音答覆的完整流程:

import json
import os
from openai import OpenAI

# 初始化指向 xAI 端點的用戶端
client = OpenAI(
    api_key=os.environ.get("XAI_API_KEY"),
    base_url="https://api.x.ai/v1",
)

# 1. 定義內部業務查詢函式
def get_customer_order(order_id: str) -> dict:
    """模擬內部資料庫查詢顧客訂單"""
    orders_db = {
        "ORD-9821": {
            "order_id": "ORD-9821",
            "status": "已出貨",
            "items": ["機械鍵盤", "Type-C 高速編織傳輸線"],
            "delivery_date": "2026-10-02",
        },
        "ORD-5432": {
            "order_id": "ORD-5432",
            "status": "備貨處理中",
            "items": ["主動降噪耳機"],
            "delivery_date": "2026-10-05",
        },
    }
    return orders_db.get(order_id, {"error": "查無此訂單編號"})

# 本地可用函式映射表
available_tools = {
    "get_customer_order": get_customer_order,
}

# 2. 定義提供給 Grok 的工具規格 Schema
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_customer_order",
            "description": "透過訂單編號查詢物流進度、商品品項及預計配達日期。",
            "parameters": {
                "type": "object",
                "properties": {
                    "order_id": {
                        "type": "string",
                        "description": "唯一的訂單代碼,格式例如 ORD-9821",
                    }
                },
                "required": ["order_id"],
            },
        },
    }
]

# 3. 建立對話歷程
messages = [
    {
        "role": "system",
        "content": "你是專業的電子商務客服助手,請依據工具查詢結果提供客氣且清晰的解答。",
    },
    {
        "role": "user",
        "content": "你好,我想查詢訂單 ORD-9821 的出貨狀態與預計送達日期。",
    },
]

# 4. 發送初次 API 請求
response = client.chat.completions.create(
    model="grok-4.7",
    messages=messages,
    tools=tools,
    tool_choice="auto",
    temperature=0.1,  # 低隨機度確保參數產出精確
)

response_message = response.choices[0].message
tool_calls = response_message.tool_calls

# 5. 處理模型觸發的工具調用
if tool_calls:
    # 將包含 tool_calls 的 assistant 訊息寫入對話紀錄
    messages.append(response_message)

    for tool_call in tool_calls:
        func_name = tool_call.function.name
        func_args = json.loads(tool_call.function.arguments)

        if func_name in available_tools:
            target_func = available_tools[func_name]
            output_data = target_func(**func_args)

            # 回傳工具處理結果,並指定對應的 tool_call_id
            messages.append(
                {
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": json.dumps(output_data, ensure_ascii=False),
                }
            )

    # 6. 二次發送請求:由 Grok 總結資料並產生給使用者的最終答覆
    second_response = client.chat.completions.create(
        model="grok-4.7",
        messages=messages,
    )
    final_text = second_response.choices[0].message.content
    print("最終回覆:\n", final_text)
else:
    print("直接輸出:\n", response_message.content)

五、生產環境架構部署要點

  1. 頂層物件型態校驗: 宣告自訂函式時,parameters 根節點必須是 "type": "object",所有輸入引數都必須包裹於 properties 內,避免觸發 400 格式錯誤。
  2. 處理並行呼叫與冪等性: 在 parallel_tool_calls 啟用下,Grok 可能同時觸發多筆調用。對於資料庫寫入或金流扣款等關鍵操作,本機處理常式必須實作嚴密的冪等性保護。
  3. 優雅回報內部錯誤: 當本機資料庫連線逾時或 API 例外時,切勿直接終止流程,應回傳 JSON 格式的錯誤訊息(例如 {"error": "內部資料庫查詢逾時,請稍後重試"}),使 Grok 能適當向使用者解釋情況。
  4. API 限流彈性重試: 生產環境應針對 HTTP 429 狀態碼配置指數退避(Exponential Backoff)重試機制,強化服務抗壓能力。
  5. 金鑰隔離防護: 嚴禁在瀏覽器前端 JavaScript 或行動應用程式原生程式碼中直接儲存 XAI_API_KEY,所有 API 呼叫均應由受信任的後端 API 閘道進行代理與權限驗證。

參考資料