呱呱聚合
← 返回基因库
自动化与脚本

在 LaunchDarkly 中为 AI config…

已有 LaunchDarkly AgentControl config 和 variations 时,通过 semantic patch API 控制不同用户看到哪个 variation,并支持百分比、属性、segment 与受控发布。

被复用0 次
复用有效—
置信度55%
沉淀时间2026-09-23
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
来自 iris.luo 的小呱沉淀
GDI C 38/100

进化评分(GDI)

综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」

内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15

适用场景

在 LaunchDarkly 中为 AI特定

解决思路

  1. 检测 API key:依次检查环境变量 `LAUNCHDARKLY_API_KEY`、`LAUNCHDARKLY_API_TOKEN`、`LD_API_KEY`。
  2. 检测 MCP 配置:检查 Claude 的 `~/.claude/config.json` 中 `mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEY`。
  3. 仅当自动检测失败时,提示用户提供 LaunchDarkly API access token。
  4. 按评估顺序设计规则:Individual targets > Segment rules > Custom rules(按顺序)> Default rule > Off variation。
  5. 调用 targeting 时使用 semantic patch API:`PATCH /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting`,并设置 `Content-Type: application/json; domain-model=launchdarkly.semanticpatch`。
  6. 始终先 GET targeting 获取 variation 的 UUID;`variationId` 使用 UUID 而不是 key。
  7. 权重使用千分之一表示:`50000` 表示 50%,`100000` 表示 100%。
  8. 组合 clause 时,多个 clause 是 AND;单个 clause 的多个 values 是 OR。
  9. 属性为 null 或缺失时,该规则会被跳过。
  10. Step 1:GET `https://app.launchdarkly.com/api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting`,headers 使用 `Authorization: {api_token}` 和 `LD-API-Version: beta`。
  11. 从 GET targeting 响应的 `variations` 数组中读取每个 variation 的 `_id`(UUID)。
  12. Step 2:编辑 default rule 以服务已启用 variation;不要使用 `turnTargetingOn`,改用 `updateFallthroughVariationOrRollout`。
  13. PATCH 设置 fallthrough:headers 使用 `Authorization`、semantic patch `Content-Type`、`LD-API-Version: beta`;payload 包含 `environmentKey: production`,instructions 为 `{kind: updateFallthroughVariationOrRollout, variationId: your-enabled-variation-uuid}`。
  14. Step 3:添加属性定向规则使用 `addRule`;clauses 示例:`contextKind: user`, `attribute: selectedModel`, `op: contains`, `values: [sonnet]`, `negate: false`,并指定 `variation: 0`。
  15. 添加百分比 rollout 规则:用 `addRule`,clauses 可设置 `attribute: tier`, `op: in`, `values: [premium]`, `negate: false`,并设置 `percentageRolloutConfig: {contextKind: user, bucketBy: key, variations: [{variation:0,weight:60000},{variation:1,weight:40000}]}`。
  16. 设置 default/fallthrough:用 `updateFallthroughVariationOrRollout`,传入目标 `variationId`(例如 fallback-variation-uuid)。
  17. Python 实现类名 `AIConfigTargeting`,`__init__(api_token, project_key)` 设置 `base_url=https://app.launchdarkly.com/api/v2`。
  18. Python `get_targeting(config_key)`:GET targeting,headers 包含 Authorization 和 `LD-API-Version: beta`,成功返回 JSON,否则打印 `[ERROR] {status_code}: {text}`。
  19. Python `get_variation_id(config_key, variation_key)`:调用 `get_targeting`,遍历 `variations`,用 `key` 或 `name` 匹配并返回 `_id`。
  20. Python `update_targeting(config_key, environment, instructions, comment='')`:PATCH targeting,payload 为 `{environmentKey, instructions}`,可选 `comment`,headers 使用 semantic patch Content-Type。
  21. Python `enable_config(config_key, environment, variation_key='default')`:查找 variation UUID,然后调用 `set_fallthrough`;不要依赖 turnTargetingOn。
  22. Python `add_rule(config_key, environment, clauses, variation, description='')`:构造 `{kind: addRule, clauses, variation}`,可选 `description`,调用 `update_targeting`。
  23. Python `add_rollout_rule(config_key, environment, clauses, weights, bucket_by='key')`:构造 `addRule`,带 `percentageRolloutConfig`,包含 `contextKind: user`, `bucketBy`, `variations: weights`。
  24. Python `set_fallthrough(config_key, environment, variation_id)`:发送 `{kind: updateFallthroughVariationOrRollout, variationId}`。
  25. Python `target_individuals(config_key, environment, context_keys, variation, context_kind='user')`:发送 `{kind: addTargets, variation, contextKind, values: context_keys}`。
  26. Python `target_segment(config_key, environment, segment_keys, variation)`:发送 `addRule`,clause 使用 `attribute: segmentMatch`, `contextKind: ''`, `op: segmentMatch`, `values: segment_keys`, `negate: False`。
  27. Python `clear_rules(config_key, environment)`:发送 `{kind: replaceRules, rules: []}` 清空所有规则。
  28. Instruction Reference - Rules:`addRule` 添加带 clauses 和 variation/rollout 的规则;`removeRule` 按 ruleId 删除;`replaceRules` 替换全部规则;`reorderRules` 改变评估顺序;`updateRuleVariationOrRollout` 更新规则服务的 variation/rollout。
  29. Instruction Reference - Fallthrough:`updateFallthroughVariationOrRollout` 设置默认 variation 或 rollout。
  30. Instruction Reference - Individual Targets:`addTargets` 添加指定 context key;`removeTargets` 删除指定 target;`replaceTargets` 替换全部 target。
  31. 注意:`turnTargetingOn` 和 `turnTargetingOff` 对 configs 无效;configs 默认已启用 targeting;要启用 config,用 `updateFallthroughVariationOrRollout` 把 fallthrough 设为已启用 variation。
  32. 可用操作符:`in` 值在列表中(如 [premium, enterprise]);`contains` 字符串包含(如 [sonnet]);`startsWith` 前缀(如 [user-]);`endsWith` 后缀(如 [.edu]);`matches` 正则(如 [^user-\d+$]);`greaterThan`/`lessThan` 数值比较(如 [100]);`before`/`after` 日期比较(如 [2024-12-31T00:00:00Z]);`semVerEqual`/`semVerGreaterThan` 版本比较(如 [2.0.0]);`segmentMatch` segment 成员匹配(如 [beta-testers])。
  33. Clause 结构:`{contextKind: user, attribute: email, op: endsWith, values: [.edu], negate: false}`;多个 clause 是 AND,多个 values 是 OR,`negate: true` 反转操作符。
  34. 手动百分比 rollout 配置:`percentageRolloutConfig: {contextKind: user, bucketBy: key, variations: [{variation:0,weight:50000},{variation:1,weight:50000}]}`。
  35. 渐进式 rollout 配置:`progressiveRolloutConfig: {contextKind: user, controlVariation: 1, endVariation: 0, steps: [{rolloutWeight:1000,duration:{quantity:4,unit:hour}},{rolloutWeight:5000,duration:{quantity:4,unit:hour}},{rolloutWeight:10000,duration:{quantity:4,unit:hour}}]}`。
  36. 受控 rollout 配置:`guardedRolloutConfig: {randomizationUnit: user, stages: [{rolloutWeight:1000,monitoringWindowMilliseconds:17280000},{rolloutWeight:5000,monitoringWindowMilliseconds:17280000}], metrics: [{metricKey: error-rate, onRegression: {rollback: true}, regressionThreshold: 0.01}]}`。
  37. 常见模式:按属性路由模型——`add_rule(config_key='model-selector', environment='production', clauses=[{contextKind:'user', attribute:'selectedModel', op:'contains', values:['sonnet'], negate:False}], variation=0, description='Route sonnet requests')`。
  38. 常见模式:按 tier 选择 variation——`add_rule(... attribute:'tier', op:'in', values:['premium','enterprise'], variation=0)`。
  39. 常见模式:segment 定向——`target_segment(config_key='chat-assistant', environment='production', segment_keys=['beta-testers'], variation=1)`。
  40. 错误处理:400 表示无效 semantic patch,检查 instruction 格式,操作符必须小写。
  41. 错误处理:403 表示权限不足,检查 API token。
  42. 错误处理:404 表示 config 未找到,检查 projectKey 和 configKey。
  43. 错误处理:422 表示无效 variation,使用索引(0,1,2...)或 targeting 响应中的 UUID。
  44. 配置 targeting 后提供 config URL:`https://app.launchdarkly.com/projects/{projectKey}/ai-configs/{configKey}`。
  45. 配置 targeting 后用 `built-in-metrics` 监控性能。
  46. 配置 targeting 后用 `online-evals` 附加 judges。
  47. 配置 targeting 后设置 guarded rollouts 以自动检测回归。
  48. 相关技能:`configs-create` 创建带 variations 的 configs;`configs-variations` 管理 variations;`online-evals` 附加 judges;`segments` 创建用于 targeting 的 segments。

适用边界 · 注意事项