认证方式
API 密钥认证
DeepSeek API 使用 API 密钥进行身份验证。您需要在每个请求的 Authorization
头中包含您的 API 密钥。
获取 API 密钥
- 访问 [API 管理页面]
- 登录您的账户
- 点击"创建新密钥"
- 为密钥设置一个描述性名称
- 复制生成的密钥并安全保存
重要提醒
- API 密钥只会在创建时显示一次
- 请立即复制并安全保存您的密钥
- 不要在客户端代码中暴露 API 密钥
使用 API 密钥
HTTP 头认证
在每个 API 请求中包含以下头部:
http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
示例请求
bash
curl http://ai.sankotrade.com/chat/completions \
-H "Authorization: Bearer sk-1234567890abcdef" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Hello!"}]
}'
环境变量设置
为了安全起见,建议将 API 密钥存储在环境变量中:
bash
export DEEPSEEK_API_KEY="your-api-key-here"
cmd
set DEEPSEEK_API_KEY=your-api-key-here
powershell
$env:DEEPSEEK_API_KEY="your-api-key-here"
在代码中使用
python
import os
import openai
client = openai.OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="http://ai.sankotrade.com"
)
javascript
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.DEEPSEEK_API_KEY,
baseURL: 'http://ai.sankotrade.com'
});
go
package main
import (
"os"
"github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig(os.Getenv("DEEPSEEK_API_KEY"))
config.BaseURL = "http://ai.sankotrade.com"
client := openai.NewClientWithConfig(config)
}
密钥管理最佳实践
1. 密钥轮换
定期更换您的 API 密钥以提高安全性:
- 建议每 90 天轮换一次
- 在怀疑密钥泄露时立即轮换
- 保留旧密钥一段时间以确保平滑过渡
2. 权限控制
为不同的应用或环境创建不同的 API 密钥:
- 开发环境使用独立密钥
- 生产环境使用独立密钥
- 不同项目使用独立密钥
3. 监控使用情况
定期检查 API 密钥的使用情况:
- 监控异常的使用模式
- 设置使用量警报
- 审查访问日志
错误处理
认证失败
当 API 密钥无效或缺失时,您会收到以下错误:
json
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
常见认证错误
错误码 | 描述 | 解决方案 |
---|---|---|
invalid_api_key | API 密钥无效 | 检查密钥是否正确 |
missing_api_key | 缺少 API 密钥 | 在请求头中添加密钥 |
api_key_expired | API 密钥已过期 | 创建新的 API 密钥 |
安全建议
1. 存储安全
- 使用环境变量存储密钥
- 不要在代码中硬编码密钥
- 使用密钥管理服务(如 AWS Secrets Manager)
2. 传输安全
- 始终使用 HTTPS 进行 API 调用
- 不要在 URL 参数中传递密钥
- 使用 Authorization 头部传递密钥
3. 访问控制
- 限制密钥的访问权限
- 使用最小权限原则
- 定期审查密钥使用情况
故障排除
检查密钥有效性
python
import openai
import os
def test_api_key():
try:
client = openai.OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="http://ai.sankotrade.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "test"}],
max_tokens=1
)
print("✅ API 密钥有效")
return True
except openai.AuthenticationError:
print("❌ API 密钥无效")
return False
except Exception as e:
print(f"❌ 其他错误: {e}")
return False
test_api_key()
调试认证问题
python
import requests
def debug_auth():
headers = {
"Authorization": f"Bearer {os.getenv('DEEPSEEK_API_KEY')}",
"Content-Type": "application/json"
}
response = requests.post(
"http://ai.sankotrade.com/chat/completions",
headers=headers,
json={
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "test"}]
}
)
print(f"状态码: {response.status_code}")
print(f"响应头: {response.headers}")
print(f"响应内容: {response.text}")
debug_auth()