Mistral API 怎么调用:密钥配置、Python 请求与常见报错处理
Mistral API 的调用方式与 OpenAI 类似,核心流程只有三步:在控制台创建 API Key、用 HTTP 请求访问聊天补全端点、按返回状态码排查问题。
本文以 Python 为例,说明从创建密钥到成功返回内容的具体操作,并列出新手最容易踩的几个坑。
先确认你用的是哪个端点
Mistral 模型可以通过官方平台 La Plateforme 调用,也可能通过云厂商托管服务调用。
两者接口地址和鉴权方式不同,写代码前先确认自己注册的是哪个控制台。
- 官方 La Plateforme:API 基础地址通常为
https://api.mistral.ai/v1,请求头使用Authorization: Bearer <你的API Key>。 - 其他托管渠道:地址和密钥格式以对应控制台文档为准,不要直接套用官方地址。
本文示例默认使用官方 La Plateforme 端点。
如果你的密钥来自其他平台,需要替换 base_url 和模型名。
创建 API Key 并设置环境变量
登录 Mistral 控制台后,进入 API Keys 页面创建新密钥。
密钥通常只完整显示一次,创建后立即复制保存。
不建议把密钥硬编码在代码里。
Linux 或 macOS 可以写入环境变量:
export MISTRAL_API_KEY="你的密钥"
Windows PowerShell 使用:
$env:MISTRAL_API_KEY="你的密钥"
如果要在服务器上长期使用,可以把变量写入 ~/.bashrc 或项目的 .env 文件,并确保 .env 不被提交到 Git。
用 Python 发送第一个请求
先安装 requests 库:
pip install requests
然后发送聊天补全请求:
import os
import requests
api_key = os.environ["MISTRAL_API_KEY"]
url = "https://api.mistral.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "mistral-small-latest",
"messages": [
{"role": "user", "content": "用一句话解释什么是 API"}
]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
print(resp.status_code)
print(resp.json())
请求成功后,返回 JSON 中的 choices[0].message.content 就是模型输出。
如果状态码不是 200,先看响应体里的 message 字段,再对照下一节排查。
模型名需要填写控制台当前可用的名称,例如 mistral-small-latest 这类带 latest 的别名,具体以你控制台模型列表为准,不要凭记忆写一个不存在的名字。
常见报错与处理方式
401 Unauthorized:密钥无效或请求头格式不对。
检查 Authorization 是否为 Bearer 加密钥,中间有一个空格;
确认环境变量确实加载成功,可以临时打印密钥前几位核对。
422 Unprocessable Entity:请求体字段不合法。
常见原因是 messages 不是列表、role 拼写错误、model 为空。
用 json= 传参而不是手动拼字符串,可以减少这类问题。
429 Too Many Requests:触发速率限制。
降低请求频率,或在代码中加入重试和退避等待,不要连续快速重发。
超时或连接失败:先检查服务器出网是否正常,可以用 curl -I https://api.mistral.ai/v1/models 测试连通性。
如果服务器在国内且网络受限,需要按实际网络环境处理,不要盲目改 hosts。
调用后的验证与注意事项
每次调整代码后,先发一条短消息验证链路是否通,再接入业务逻辑。
建议在日志中记录状态码和响应体摘要,但不要记录完整密钥。
另外注意:不同模型的上下文长度和计费方式可能不同,上线前在控制台确认当前模型的限制;
流式输出需要把 stream 设为 true 并按 SSE 格式解析,普通请求不要混用两种处理方式。
如果请求一直返回 401,优先重新生成一个密钥做最小化测试,排除旧密钥被删除或复制不完整的情况。