Skip to main content
本页面涉及的是由 xAI 提供的 Grok 模型——请勿与 Groq(一家独立的 AI 硬件和软件公司)混淆。请参阅 Groq 提供商页面
xAI 提供 API 以与 Grok 模型进行交互。
API 参考有关所有功能和配置选项的详细文档,请前往 ChatXAI API 参考。

概述

集成详情

可序列化JS 支持下载量版本
ChatXAIlangchain-xaibetaPyPI - DownloadsPyPI - Version

模型功能

工具调用结构化输出图像输入音频输入视频输入Token 级流式输出原生异步Token 用量对数概率

设置

要访问 xAI 模型,您需要创建 xAI 账户,获取 API key,并安装 langchain-xai 集成包。

凭据

前往 此页面 注册 xAI 并生成 API key。完成后,设置 XAI_API_KEY 环境变量:
import getpass
import os

if "XAI_API_KEY" not in os.environ:
    os.environ["XAI_API_KEY"] = getpass.getpass("Enter your xAI API key: ")
要启用模型调用的自动追踪,请设置您的 LangSmith API key:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

安装

LangChain xAI 集成位于 langchain-xai 包中:
pip install -qU langchain-xai

实例化

现在我们可以实例化模型对象并生成聊天补全:
from langchain_xai import ChatXAI

llm = ChatXAI(
    model="grok-beta",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    # other params...
)

调用

messages = [
    (
        "system",
        "You are a helpful assistant that translates English to French. Translate the user sentence.",
    ),
    ("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg
AIMessage(content="J'adore programmer.", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 6, 'prompt_tokens': 30, 'total_tokens': 36, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'grok-beta', 'system_fingerprint': 'fp_14b89b2dfc', 'finish_reason': 'stop', 'logprobs': None}, id='run-adffb7a3-e48a-4f52-b694-340d85abe5c3-0', usage_metadata={'input_tokens': 30, 'output_tokens': 6, 'total_tokens': 36, 'input_token_details': {}, 'output_token_details': {}})
print(ai_msg.content)
J'adore programmer.

工具调用

ChatXAI 拥有工具调用 API(我们在此将”工具调用”和”函数调用”互换使用),允许您描述工具及其参数,并让模型返回包含要调用的工具和该工具输入的 JSON 对象。工具调用对于构建工具使用链和智能体、以及从模型获取结构化输出极为有用。

ChatXAI.bind_tools()

通过 ChatXAI.bind_tools,我们可以轻松将 Pydantic 类、字典 schema、LangChain 工具甚至函数作为工具传递给模型。在底层,这些都会被转换为 OpenAI 工具 schema,格式如下:
{
    "name": "...",
    "description": "...",
    "parameters": {...}  # JSONSchema
}
并在每次模型调用时传入。
from pydantic import BaseModel, Field


class GetWeather(BaseModel):
    """Get the current weather in a given location"""

    location: str = Field(..., description="The city and state, e.g. San Francisco, CA")


llm_with_tools = llm.bind_tools([GetWeather])
ai_msg = llm_with_tools.invoke(
    "what is the weather like in San Francisco",
)
ai_msg
AIMessage(content='I am retrieving the current weather for San Francisco.', additional_kwargs={'tool_calls': [{'id': '0', 'function': {'arguments': '{"location":"San Francisco, CA"}', 'name': 'GetWeather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 151, 'total_tokens': 162, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'grok-beta', 'system_fingerprint': 'fp_14b89b2dfc', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-73707da7-afec-4a52-bee1-a176b0ab8585-0', tool_calls=[{'name': 'GetWeather', 'args': {'location': 'San Francisco, CA'}, 'id': '0', 'type': 'tool_call'}], usage_metadata={'input_tokens': 151, 'output_tokens': 11, 'total_tokens': 162, 'input_token_details': {}, 'output_token_details': {}})

实时搜索

xAI 支持实时搜索功能,使 Grok 能够利用网络搜索结果来支撑其回答:
from langchain_xai import ChatXAI

llm = ChatXAI(
    model="grok-3-latest",
    search_parameters={
        "mode": "auto",
        # Example optional parameters below:
        "max_search_results": 3,
        "from_date": "2025-05-26",
        "to_date": "2025-05-27",
    },
)

llm.invoke("Provide me a digest of world news in the last 24 hours.")
完整的网络搜索选项请参阅 xAI 文档

API 参考

有关所有 ChatXAI 功能和配置的详细文档,请前往 API 参考