Skip to main content
Open In ColabOpen on GitHub

ChatXAI

此页面将帮助您开始使用xAI 聊天模型。要查看所有ChatXAI功能和配置的详细文档,请前往 API 参考

xAI 提供一个API用于与Grok模型交互。

概览

集成细节

Class本地序列化JS支持Package downloadsPackage 最新版本
ChatXAIlangchain-xaibetaPyPI - DownloadsPyPI - Version

模型特性

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

设置

要访问xAI模型,您需要创建一个xAI账号、获取API密钥,并安装langchain-xai集成包。

Credentials

Head to 这个页面 注册xAI并生成API密钥。完成这些步骤后,请设置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密钥:

# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

安装

The LangChain xAI集成存在于langchain-xai包中:

%pip install -qU langchain-xai

Instantiation

现在我们就可以实例化我们的模型对象并生成聊天完成内容:

from langchain_xai import ChatXAI

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

Invocation

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.

链式调用

我们可以通过以下方式将模型与提示模板进行链接

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
),
("human", "{input}"),
]
)

chain = prompt | llm
chain.invoke(
{
"input_language": "English",
"output_language": "German",
"input": "I love programming.",
}
)
AIMessage(content='Ich liebe das Programmieren.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 7, 'prompt_tokens': 25, 'total_tokens': 32, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'grok-beta', 'system_fingerprint': 'fp_14b89b2dfc', 'finish_reason': 'stop', 'logprobs': None}, id='run-569fc8dc-101b-4e6d-864e-d4fa80df2b63-0', usage_metadata={'input_tokens': 25, 'output_tokens': 7, 'total_tokens': 32, 'input_token_details': {}, 'output_token_details': {}})

工具调用

ChatXAI 有一个 称为工具调用(我们在这里交替使用“工具调用”和“函数调用”这两个术语)的 API,它允许您描述工具及其参数,并让模型返回一个包含要调用的工具及该工具输入的 JSON 对象。工具调用对于构建使用工具的链和代理非常有用,并且可以让模型以更结构化的方式输出结果。

ChatXAI.bind_tools()

使用 ChatXAI.bind_tools,我们可以轻松地将 Pydantic 类、字典模式、LangChain 工具或甚至作为工具的函数传递给模型。在幕后,这些会被转换为一个 OpenAI 工具模式,看起来像这样:

{
"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': {}})

API 参考

详细文档请参阅所有ChatXAI功能和配置:https://python.langchain.com/api_reference/xai/chat_models/langchain_xai.chat_models.ChatXAI.html