指南
聊天
文本输入,文本输出。聊天是 xAI API 上最受欢迎的功能,可用于从总结文章、生成创意写作、回答问题、提供客户支持到协助编码任务的任何事情。
先决条件
- xAI 帐户:您需要一个 xAI 帐户才能访问 API。
- API 密钥:确保您的 API 密钥有权访问聊天终端节点,并且已启用聊天模型。
如果您没有这些并且不确定如何创建一个,请按照 Hitchhiker's Guide to Grok 进行作。
您可以在 xAI 控制台 API 密钥页面上创建 API 密钥。
在您的环境中设置 API 密钥:
bash
export XAI_API_KEY="your_api_key"
基本的 Chat Completions 示例
您还可以流式传输响应,这在 流式响应 中进行了介绍。
用户向 xAI API 终端节点发送请求。API 会处理此事件并返回完整的响应。
import os
from openai import OpenAI
client = OpenAI(
api_key="<YOUR_XAI_API_KEY_HERE>",
base_url="https://api.x.ai/v1",
)
completion = client.chat.completions.create(
model="grok-2-latest",
messages=[
{"role": "system", "content": "You are a PhD-level mathematician."},
{"role": "user", "content": "What is 2 + 2?"},
],
)
print(completion.choices[0].message)
响应:
ChatCompletionMessage(
content='2 + 2 equals 4.',
refusal=None,
role='assistant',
audio=None,
function_call=None,
tool_calls=None
)
对话
xAI API 是无状态的,不会使用您之前请求历史记录的上下文处理新请求。
但是,您可以向新的聊天生成请求提供以前的聊天生成提示和结果,让模型在处理您的新请求时考虑到上下文。
示例消息:
json
{
"role": "user",
"content": [{ "type": "text", "text": "Why don't eggs tell jokes?" }]
},
{
"role": "assistant",
"content": [{ "type": "text", "text": "They'd crack up!" }]
},
{
"role": "user",
"content": [{"type": "text", "text": "Can you explain the joke?"}],
}
此策略可用于函数调用,其中模型响应将调用工具调用,用户的程序响应工具调用,并通过将工具调用结果附加到消息来继续对话。有关更多详细信息,请查看我们的 函数调用指南。
消息角色灵活性
与其他提供商的某些模型不同,xAI API 的一个独特之处在于它在消息角色方面的灵活性:
- 无订单限制:您可以混合
system
,user
或assistant
角色。
示例 1 - 多个系统消息:
json
[
{"role": "system", "content": "..."},
{"role": "system", "content": "..."},
{"role": "user", "content": "..."},
{"role": "user", "content": "..."}
]
示例 2 - 用户消息优先:
json
{"role": "user", "content": "..."},
{"role": "user", "content": "..."},
{"role": "system", "content": "..."}
参数
您可以在请求中自定义以下参数,以获得不同的生成结果。
请求正文
messages
数组
必填
构成聊天对话的消息列表。不同的模型支持不同的消息类型,例如图像和文本。
model
字符串
必填
要使用的模型的模型名称。