月之暗面API怎么用:从创建密钥到Python调用
月之暗面API(Kimi大模型开放接口)兼容OpenAI的调用格式,拿到API Key后把base_url指向官方地址即可用Python的openai库直接调用。
适用前提是你已注册开放平台账号并完成实名认证,本地或服务器能正常访问外网。
先拿到能用的API Key
登录月之暗面开放平台,进入API Key管理页面,点击创建新的密钥。
密钥只在创建时完整显示一次,复制后存到安全位置。
建议把密钥写入环境变量,不要硬编码在代码里:
export MOONSHOT_API_KEY="你的API Key"
在Linux服务器上可以写进 ~/.bashrc 或项目的 .env 文件,并在 .gitignore 中排除该文件,避免密钥被提交到代码仓库。
安装依赖并发起第一次请求
月之暗面接口兼容OpenAI SDK,安装官方Python包即可:
pip install openai
调用时关键是设置 base_url 为 https://api.moonshot.cn/v1,模型名按平台文档填写(如 moonshot-v1-8k 等可用模型)。
示例:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"],
base_url="https://api.moonshot.cn/v1"
)
resp = client.chat.completions.create(
model="moonshot-v1-8k",
messages=[
{"role": "system", "content": "你是一个简洁的助手"},
{"role": "user", "content": "用一句话解释什么是API"}
],
temperature=0.3
)
print(resp.choices[0].message.content)
运行后终端应输出模型返回的文本。
如果没有输出,先检查环境变量是否在当前终端生效,再确认模型名拼写是否与平台文档一致。
流式输出和超时控制
长文本场景建议开启流式输出,避免等待整段生成:
stream = client.chat.completions.create(
model="moonshot-v1-8k",
messages=[{"role": "user", "content": "写一段200字的简介"}],
stream=True
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
生产环境还应设置超时和重试,防止请求挂死:
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"],
base_url="https://api.moonshot.cn/v1",
timeout=30.0,
max_retries=2
)
常见报错怎么排查
401 Unauthorized:密钥无效或未正确传入。
检查请求头中的 Authorization: Bearer ,确认环境变量没有多余空格或换行。
404 Not Found:base_url 写错,常见是把地址写成 https://api.moonshot.cn 而漏掉 /v1,或者模型名不存在。
429 Too Many Requests:触发频率或并发限制。
降低请求速率,加入指数退避重试,不要用固定间隔猛刷。
连接超时:服务器出口网络受限。
用 curl -I https://api.moonshot.cn/v1/models 配合密钥测试连通性,确认DNS和防火墙策略。
上线前要确认的几件事
密钥只放在服务端环境变量或密钥管理服务中,前端代码和日志里不能出现。
对话内容涉及用户数据时,按业务要求做脱敏,不要直接把原始隐私文本发给接口。
计费和限流规则以开放平台控制台展示为准,长期运行前先确认账户余额和配额。
按上面的步骤,先跑通单次请求,再加流式输出,最后补超时和重试,是月之暗面API接入比较稳妥的顺序。
遇到报错时优先核对密钥、base_url 和模型名这三个参数,大部分调用失败都能在这里定位。