SuperAPI AI 工具集

dm-limits-and-best-practices

智能体与模型

查看项目

更新于 10-15 20:13

技能介绍

用途:这是面向 CDF Data Modeling API 的参考技能,在编写或审查调用 CDF 数据建模接口的代码时应用其中的模式,主要处理运行时可靠性问题:限制、并发、重试、吞吐与批处理行为。图遍历载荷正确性与图相关故障特征由 dm-graph-traversal 负责。

主要能力与要点:实例的 apply、delete、query 各有独立并发请求上限,超限返回 429 Too Many Requests;Transformations 会占用大量并发预算,留给其他客户端的更少;instances.list 有最大页大小,需分页才能取全;instances.query 的每个表表达式各有条目上限;instances.upsert 每次最多 1000 条;in 过滤器每个表达式最多 1000 个值,超出需分批。最新并发、资源与属性值限制以官方文档为准:https://docs.cognite.com/cdf/dm/dm_reference/dm_limits_and_restrictions

search 与 filter 的选用:instances.search 用于文本属性的模糊/文本匹配,operator 支持 AND(默认,收窄,全部词匹配)与 OR(宽泛,任一词匹配,适合探索/自动补全);可与 filter 组合以精确条件进一步约束。instances.list / instances.query 配合 filter 用于精确、确定性匹配(equals、range、in、hasData 等),不做模糊匹配。

使用方式:始终用全局 cdfTaskRunner 包裹 CDF API 调用以限制并发、避免 429 与死锁;若项目没有信号量工具,按资料在 src/shared/utils/semaphore.ts 创建 QueuedTaskRunner 实现(默认最大并发 15)。schedule 支持 key 选项,用于取消同 key 的过期请求(去重)。分页时 instances.list 使用 nextCursor 循环;instances.query 返回按表表达式名索引的 nextCursor,通过 cursors 参数传入。批量写入用 chunk 工具按 1000 分块后经信号量执行;删除并发限制更严,使用单独更严格的 runner(示例为 2)。

硬性限制:不要对 instances.list / query / search 的结果逐条映射 chat completions;优先使用一次 Atlas / EOS 侧边栏回合(integrate-fusion-agent)。若必须逐条补全:每次用户操作 5 次、上限 50、按 space:externalId:lastUpdatedTime 缓存、仅用户触发。

常见陷阱:嵌套信号量调用可能死锁,应让信号量停留在最外层或由内层函数自行持有;忘记分页会静默丢数据,必须检查 nextCursor。

适用场景:编写或审查调用 CDF 数据建模 API 的代码,尤其是并发、分页、批处理与限流相关逻辑。限制:具体并发数值与最新限制需查阅官方文档,资料未给出全部数值。