Cortex Code 的成本控制

账户管理员可以按用户设置 Cortex Code 的每日估计 Credit 使用限制。当用户在滚动 24 小时窗口内的估计 Credit 使用量超过配置的阈值时,这些限制会通过阻止访问来帮助组织控制 Cortex Code 消耗。

每个 Cortex Code 界面都有单独的参数:

参数

控制

CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER

Cortex Code CLI 使用情况

CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER

Snowsight 中的 Cortex Code 使用情况

Credit 限制的工作原理

每个参数都会跟踪对应用户在滚动 24 小时窗口内的估计 Credit 使用情况。当用户的估计使用量达到给定界面的配置限制时,该界面的访问将被阻止,直到使用量降至阈值以下。

这两个参数具有相同的行为:

行为

``-1``(默认)

无限制。用户拥有无限访问权限。

0

完全阻止用户的访问。

正数

当用户在过去 24 小时内的估计 Credit 使用量超过此值时,访问将被阻止。

每个参数都可以在账户级别(适用于所有用户)或用户级别(适用于特定用户)进行设置。用户级别的设置会覆盖该用户的账户级别设置。

备注

只有具有 ACCOUNTADMIN 角色(或具有足够权限修改账户或用户对象的角色)的用户才能设置这些参数。

Cortex Code CLI 限制

CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER 参数控制 Cortex Code CLI 使用情况的每日 Credit 限制。

账户级别

要为账户中的所有用户设置每日 Credit 限额,请执行以下操作:

-- Set the daily credit usage limit to 20 credits for all users in the account
ALTER ACCOUNT SET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER = 20;

要删除账户级别限制并恢复默认值(无限制),请执行以下操作:

-- Remove the account-level limit (restores default unlimited usage)
ALTER ACCOUNT UNSET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER;

用户级别

要为特定用户设置每日 Credit 限额,并覆盖账户级别设置,请执行以下操作:

-- Set a per-user CLI limit that overrides the account-level setting
ALTER USER jsmith SET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER = 10;

要移除用户级别限制,改为应用账户级别设置,请执行以下操作:

-- Remove the user-level override (account-level setting applies instead)
ALTER USER jsmith UNSET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER;

Snowsight 中的 Cortex Code 限制

CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER 参数控制 Snowsight Web 界面中 Cortex Code 使用情况的每日 Credit 限制。

账户级别

要为账户中的所有用户设置每日 Credit 限额,请执行以下操作:

-- Set the daily Snowsight credit usage limit to 20 credits for all users in the account
ALTER ACCOUNT SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 20;

要删除账户级别限制并恢复默认值(无限制),请执行以下操作:

-- Remove the account-level Snowsight limit (restores default unlimited usage)
ALTER ACCOUNT UNSET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER;

用户级别

要为特定用户设置每日 Credit 限额,并覆盖账户级别设置,请执行以下操作:

-- Set a per-user Snowsight limit that overrides the account-level setting
ALTER USER jsmith SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 10;

要移除用户级别限制,改为应用账户级别设置,请执行以下操作:

-- Remove the user-level Snowsight override (account-level setting applies instead)
ALTER USER jsmith UNSET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER;

当达到限制时

当用户的估计 Credit 使用量超过界面的配置限制时,该界面会返回一条错误消息,指示已达到每日 Credit 限制。在用户的滚动 24 小时使用量降至限制以下之前,该用户无法使用该界面。具有单独限制的其他界面不受影响。

管理员可以随时调整或删除限制以恢复访问。

列出具有自定义限制的用户

以下 SQL 脚本列出了所有对 CLI 参数设有每用户 Credit 限制覆盖的用户。这对于想要审核哪些用户在用户级别设置了自定义限制的管理员非常有用。

-- List all users who have a per-user CLI credit limit override
EXECUTE IMMEDIATE $$
DECLARE
  current_user STRING;
  rs_users RESULTSET;
  res      RESULTSET;
BEGIN
  CREATE OR REPLACE TEMPORARY TABLE _param_overrides (user_name STRING, param_value STRING);

  SHOW USERS;
  rs_users := (SELECT "name" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())));

  FOR record IN rs_users DO
    current_user := record."name";

    EXECUTE IMMEDIATE
      'SHOW PARAMETERS LIKE ''CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER'' IN USER "' || :current_user || '"';

    INSERT INTO _param_overrides (user_name, param_value)
      SELECT :current_user, "value"
      FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
      WHERE "level" = 'USER';
  END FOR;

  res := (SELECT * FROM _param_overrides);
  RETURN TABLE(res);
END;
$$;

此脚本遍历账户中的所有用户,检查是否为 CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER 设置了用户级别覆盖,并返回包含用户及其覆盖值的表格。您可以修改 SHOW PARAMETERS LIKE 子句中的参数名称来检查 Snowsight 参数。

示例:为您的组织配置限制

以下示例为账户中的所有用户针对两个界面设置了默认限制,然后为高级用户的 CLI 使用情况分配了更高的限制:

-- Set default daily limits for all users
ALTER ACCOUNT SET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER = 20;
ALTER ACCOUNT SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 20;

-- Allow a specific user a higher CLI limit
ALTER USER power_user SET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER = 50;

-- Block a specific user from Snowsight entirely
ALTER USER restricted_user SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 0;

备注

当为同一个参数同时设置了账户级别和用户级别的值时,用户级别的值对该用户具有最高优先级。账户中的所有其他用户继续使用账户级别的值。