用途
Kling AI Team Setup 用于管理团队对 Kling AI API 的访问,通过独立 API 密钥、基于环境的路由、按成员的用量配额以及集中式凭据管理来实现。
主要能力
按环境划分 API 密钥
在 Kling AI 开发者控制台中为每个环境创建独立的 API 密钥对:
| 环境 | 密钥命名约定 | 用途 |
|---|---|---|
| Development | dev-<project> | 本地测试、免费额度 |
| Staging | staging-<project> | 集成测试 |
| Production | prod-<project> | 线上流量 |
示例环境变量:
# .env.development
KLING_ACCESS_KEY="ak_dev_..."
KLING_SECRET_KEY="sk_dev_..."
# .env.production
KLING_ACCESS_KEY="ak_prod_..."
KLING_SECRET_KEY="sk_prod_..."
团队配置
通过数据类定义团队成员与团队配置,成员包含姓名、邮箱、角色(admin、editor、viewer)、每日额度上限和允许使用的模型列表;团队配置包含名称、成员列表、团队每日总上限、默认模型和默认模式。
from dataclasses import dataclass
from typing import Optional
@dataclass
class TeamMember:
name: str
email: str
role: str # admin, editor, viewer
daily_credit_limit: int
allowed_models: list[str]
@dataclass
class TeamConfig:
name: str
members: list[TeamMember]
total_daily_limit: int = 1000
default_model: str = "kling-v2-master"
default_mode: str = "standard"
def get_member(self, email: str) -> Optional[TeamMember]:
return next((m for m in self.members if m.email == email), None)
team = TeamConfig(
name="marketing",
total_daily_limit=5000,
members=[
TeamMember("Alice", "alice@co.com", "admin", 2000,
["kling-v2-6", "kling-v2-master", "kling-v2-5-turbo"]),
TeamMember("Bob", "bob@co.com", "editor", 500,
["kling-v2-master", "kling-v2-5-turbo"]),
TeamMember("Carol", "carol@co.com", "viewer", 100,
["kling-v2-5-turbo"]),
],
)
按成员用量配额
TeamQuotaManager 负责执行成员级与团队级额度限制,包括每日重置、模型授权检查、成员每日上限校验和团队每日总上限校验,并提供用量报告。
import time
from collections import defaultdict
class TeamQuotaManager:
"""Enforce per-member and team-wide credit limits."""
def __init__(self, config: TeamConfig):
self.config = config
self._usage = defaultdict(int) # email -> credits used today
self._reset_time = time.time()
def _check_reset(self):
if time.time() - self._reset_time > 86400:
self._usage.clear()
self._reset_time = time.time()
def authorize(self, email: str, credits_needed: int, model: str) -> bool:
self._check_reset()
member = self.config.get_member(email)
if not member:
raise PermissionError(f"Unknown user: {email}")
if model not in member.allowed_models:
raise PermissionError(f"{email} not authorized for {model}")
if self._usage[email] + credits_needed > member.daily_credit_limit:
raise RuntimeError(f"{email} exceeds daily limit "
f"({self._usage[email]} + {credits_needed} > {member.daily_credit_limit})")
team_total = sum(self._usage.values()) + credits_needed
if team_total > self.config.total_daily_limit:
raise RuntimeError(f"Team daily limit exceeded ({team_total} > {self.config.total_daily_limit})")
return True
def record_usage(self, email: str, credits: int):
self._usage[email] += credits
def usage_report(self) -> dict:
return {
"team_total": sum(self._usage.values()),
"team_limit": self.config.total_daily_limit,
"by_member": dict(self._usage),
}
密钥管理
支持多种密钥存储工具:
| 工具 | 存储 AK/SK 的方式 |
|---|---|
| AWS Secrets Manager | aws secretsmanager create-secret --name kling/prod |
| GCP Secret Manager | gcloud secrets create kling-prod |
| HashiCorp Vault | vault kv put secret/kling ak=... sk=... |
| 1Password CLI | op item create --category login --title "Kling API" |
从 AWS Secrets Manager 加载凭据的示例:
import boto3
import json
def get_kling_credentials(secret_name="kling/prod"):
client = boto3.client("secretsmanager")
secret = client.get_secret_value(SecretId=secret_name)
creds = json.loads(secret["SecretString"])
return creds["access_key"], creds["secret_key"]
访问控制封装
TeamKlingClient 在基础客户端之上加入团队级访问控制,在调用 text_to_video 前先进行配额授权,调用后记录用量。
class TeamKlingClient:
"""Kling client with team-level access control."""
def __init__(self, base_client, quota_manager: TeamQuotaManager):
self.client = base_client
self.quotas = quota_manager
def text_to_video(self, email: str, prompt: str, **kwargs):
model = kwargs.get("model", "kling-v2-master")
credits = 10 if kwargs.get("mode") != "professional" else 35
self.quotas.authorize(email, credits, model)
result = self.client.text_to_video(prompt, **kwargs)
self.quotas.record_usage(email, credits)
return result
使用方式
前置条件
需要已批准的团队角色矩阵、授权工作区、预算负责人、权利与内容政策流程、合成测试简报,以及经过测试的访问撤销路径。
操作步骤
- 在沙箱团队中配置最小权限角色,拒绝共享凭据或未经批准的发布目标。
- 仅使用合成简报测试配额、审批、审计、政策和撤销路径;所有生成资产保持草稿状态。
- 一次只运行一个角色金丝雀测试,遇到意外的权限、预算、政策或保留期漂移时立即停止。
- 仅在负责人批准后提升角色,撤销临时访问,并在约定窗口后删除测试资产。
输出
生成团队配置回执,包含工作区、角色范围、配额限制、审批与政策检查、仅草稿断言、撤销测试、负责人批准、保留与删除证明以及回滚引用。不包含成员身份和凭据。
错误处理
| 条件 | 响应 |
|---|---|
| 角色授予超出已批准矩阵 | 撤销授予,恢复先前矩阵,仅记录脱敏审计事件。 |
| 预算或政策控制失败 | 停止生成,取消排队草稿,要求负责人审查后再重试。 |
示例
workspace=sandbox-studio; role=editor-draft-only; quota=100-credits; policy=pass; publish=disabled; revocation=tested 是一个有效的配置金丝雀。
适用场景
适用于需要多人协作使用 Kling AI 视频生成 API 的团队,尤其是希望按成员控制额度、按环境隔离密钥、集中管理凭据并实施最小权限访问控制的组织。
限制
资料未提供具体的定价、平台兼容性、性能指标或效果数据。使用前需自行准备已批准的团队角色矩阵、授权工作区、预算负责人、权利与内容政策流程、合成测试简报和访问撤销路径。