从写代码,到创作下一幕

探索 字节跳动 - 火山方舟 的 AI 编程与视频创作活动。

火山方舟 Agent Plan 与 Coding Plan 活动,价格 ¥9.9 起

Agent Plan & Coding Plan

一站体验多款热门模型,为 AI 编程与智能体开发提供更多选择。新用户可联系(微信: goo_lvyouyou)免费体验 9.9 agent plan。

查看套餐优惠
Seedance 2.5 视频创作活动:30 秒视频、多模态参考、局部编辑

Seedance 2.5

让创意,跃然成片。探索 30 秒视频、多模态参考与局部编辑,把脑海中的画面变成下一支作品。

探索视频创作

关键信息

成本跟踪

查看 Markdown

xAI API 的每个推理响应都包含该请求实际收取的确切费用,该值通过聊天补全、Responses API、图像生成和视频生成响应的 cost_in_usd_ticks 对象中的 usage 字段返回。

费用按请求计算:无论是简单补全、流式响应,还是使用服务端 tool 的智能体循环,每次调用都会返回该单独请求的费用。这是应用所有适用折扣(包括 prompt caching 减免)后的实际计费金额,包含全部 token 费用和服务端 tool 调用费用。无需估算,也无需事后查询账单。


工作原理

费用以 tick 表示,其中 1 USD = 10,000,000,000 tick(10^10)。换算为美元的方法如下:

Text

cost_usd = cost_in_usd_ticks / 10,000,000,000

例如,响应的 "cost_in_usd_ticks": 37756000 表示费用为 $0.0038。图像生成的 "cost_in_usd_ticks": 400000000 表示费用为 $0.04。

tick 用于精确计价:它可表示低至几分之一美分的费用,且无需浮点数舍入。处理数千个请求并需要准确汇总时,这一点非常重要。


从响应中读取费用

xAI SDK

xAI SDK 提供 cost_usd 便捷属性,可自动将 tick 换算为美元。如需整数精度,也可以通过 response.usage.cost_in_usd_ticks 访问原始 tick:

Python

import os
from xai_sdk import Client
from xai_sdk.chat import user

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

chat = client.chat.create(
    model="grok-4.7",
    messages=[user("Say hello")],
)
response = chat.sample()

# Convenience property — ticks converted to dollars.
print(f"Cost: ${response.cost_usd:.6f}")

# Raw ticks for integer-precision accounting.
print(f"Cost (ticks): {response.usage.cost_in_usd_ticks}")

Chat Completions 与 Responses API

每个 REST 补全和响应中的 usage 对象都包含 cost_in_usd_ticks:

"usage": {
    "input_tokens": 199,
    "output_tokens": 1,
    "total_tokens": 200,
    "cost_in_usd_ticks": 158500
}

流式传输

使用 xAI SDK 进行流式传输时,每个 chunk 都包含持续更新的 cost_in_usd_ticks 总额;最后一个 chunk 反映该请求的最终费用。组装后的 Response 对象会自动包含该值。

使用 OpenAI SDK 或 REST API 时,请在请求中设置 stream_options: { include_usage: true }。费用仅包含在最后一个 chunk 中(其 choices 为空);中间 chunk 不包含用量数据。

import os
from openai import OpenAI

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

stream = client.chat.completions.create(
    model="grok-4.7",
    messages=[{"role": "user", "content": "Tell me a joke"}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.usage:
        cost_ticks = chunk.usage.cost_in_usd_ticks
        print(f"\nCost: ${cost_ticks / 1e10:.6f}")
    elif chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)

跟踪整个对话的费用

cost_in_usd_ticks 按请求计算,不会跨轮次累积。在多轮对话中,需要自行汇总费用:

import os
from openai import OpenAI

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

messages = [{"role": "system", "content": "You are a helpful assistant."}]
total_cost_usd = 0.0

while True:
    prompt = input("You: ")
    if prompt.lower() == "exit":
        break

    messages.append({"role": "user", "content": prompt})
    completion = client.chat.completions.create(
        model="grok-4.7",
        messages=messages,
    )

    reply = completion.choices[0].message.content
    print(f"Grok: {reply}")
    messages.append({"role": "assistant", "content": reply})

    cost_ticks = completion.usage.cost_in_usd_ticks
    cost_usd = cost_ticks / 1e10
    total_cost_usd += cost_usd
    print(f"  (this turn: ${cost_usd:.6f})")

print(f"Total session cost: ${total_cost_usd:.4f}")

服务端 tool

当请求使用服务端 tool(web search、X search、code execution)时,模型可能在返回最终答案前进行多次内部调用。返回的 cost_in_usd_ticks 会以单个值涵盖该请求的全部 token 费用和所有 tool 调用费用,无需单独累加。

import os
from openai import OpenAI

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

response = client.responses.create(
    model="grok-4.7",
    input="What are people saying about SpaceXSI's latest announcement?",
    tools=[
        {"type": "web_search"},
        {"type": "x_search"},
    ],
)

print(response.output_text)

# Cost covers all model decodes + every tool call in the agentic loop.
cost_ticks = response.usage.cost_in_usd_ticks
print(f"Cost: ${cost_ticks / 1e10:.4f}")

图像与视频生成

图像和视频响应的 cost_in_usd_ticks 对象中也包含相同的 usage 字段:

import os
from openai import OpenAI

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

response = client.images.generate(
    model="grok-imagine-image-2.0",
    prompt="A cat on a rocket",
)

cost_ticks = response.usage.cost_in_usd_ticks
print(f"Image cost: ${cost_ticks / 1e10:.4f}")

Batch API

Batch 结果包含每个请求的费用。可以将其汇总得到 batch 总费用,也可以直接读取 batch 对象上的 cost_breakdown。详情请参阅 Batch API。


最后更新:2026 年 10 月 10 日