广告位招商中 欢迎洽谈

如何配置 API 密钥、选择模型端点并使用 xAI Grok API 实现函数调用

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

让你的 AI 用上 365 Wiki

复制这段快捷提示词,粘贴到你正在使用的 AI 对话中,然后继续提问。AI 会搜索 365 Wiki,帮你查资料、比较方案并给出建议。

下载完整 Skill

偶尔使用,快捷提示词就够了。经常使用,安装 365Wiki Skill:无需每次复制,还能更完整地研究问题、比较选择并规划下一步。没有常用工具?Gemini、Microsoft Copilot 等网页版 AI 也能使用。

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 密钥配置、模型与端点选型,到完整函数调用实现的操作指南。


一、配置 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 兼容 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",
});

二、模型端点与架构选型

在构建实际系统时,开发者需要明确 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 在推理过程中按需调用外部服务,使模型从单纯的“回答者”转变为能够“操作工具”的智能体。

核心工作链路

  1. 定义工具: 开发者在请求中声明包含 JSON Schema 规范的工具数组(包括 name、description 和 parameters)。
  2. 模型决策: Grok 接收用户提问,判定是否需要调取外部数据或执行动作。
  3. 返回调用请求: Grok 返回包含函数名和参数 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)

四、工程落地的关键限制与高级特性

在生产环境中落地 Grok 工具调用时,开发者需重点关注以下技术细节:


参考资料