首页 / 文章

通过 Bedrock Mantle 上的 LiteLLM Gateway 使用 Codex CLI

通过LiteLLM网关将Codex CLI路由至Amazon Bedrock Mantle,从而在具备网关控制、模型别名及合理默认设置的前提下访问OpenAI模型。

发布者:REACTAPP.TOP阅读约 8 分钟1907 词

来源: Using OpenAI Codex CLI with LiteLLM AI Gateway and Amazon Bedrock Mantle

本指南将详细介绍如何从原材料构建出可运行的系统,具体包括:结合LiteLLM AI Gateway与Amazon Bedrock Mantle使用OpenAI Codex CLI。重点在于可操作的步骤、明确的检查点,以及可直接放入代码库的代码,无需猜测其用途。 在修改代码之前,应先明确输入参数、各步骤的负责人以及完成标准。操作人员应能够从已知的检查点重新运行相应步骤,而无需推测隐藏的状态。 需同时记录正常流程与异常恢复流程。重试机制、人工审核环节以及错误处理都是产品不可或缺的部分,而非后续需要补充的功能。

AWS对OpenAI的支持

对于 AWS 支持的 OpenAI 功能,在修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。相比冗长的脚本,更应采用小型且可测试的单元。当某一步骤失败时,故障原因应能指向具体的责任主体,而非混乱的整个流程。需锁定依赖版本的编号,并记录用于演示的镜像摘要。可重复性远比团队内部的经验更重要。

访问其他 OpenAI 模型

若要使用其他 OpenAI 模型,需在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 应将此阶段视为输入与经过验证的输出之间的契约。为生成物命名,定义成功判定标准,并拒绝默许的半完成状态。 锁定依赖项版本,并记录用于运行演示的图像摘要。可重复性远胜于经验主义。

安装 Codex CLI

在修改代码之前,为 Install Codex CLI 明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。锁定依赖版本,并记录用于运行演示的镜像摘要。可重复性比个人经验更为重要。在修改代码之前,为 Install Codex CLI 明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。同时记录正常流程和故障恢复流程。重试机制、人工审核环节以及错误处理都是产品不可或缺的部分,而非后续需要补充的内容。

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version # currently codex-cli 0.142.5

确认LiteLLM正在运行

在修改代码之前,需先明确“确认LiteLLM正在运行”这一步骤的输入参数、负责执行该步骤的人员以及终止条件。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。相比庞大的脚本,更应采用小型且易于测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个具体的责任模块,而非整个复杂的流程。在预算允许的情况下,应在持续集成过程中使用测试用例来检测关键路径,而非依赖实时的付费API。

export LITELLM_DEMO_CLIENT_KEY="sk-your-litellm-virtual-key"
curl -fsS "http://localhost:4000/models" \
  -H "Authorization: Bearer $LITELLM_DEMO_CLIENT_KEY" \
| jq '[.data[]
  | select(.id | contains("openai"))
  | {id, max_input_tokens, max_output_tokens}]'

更小的上下文窗口

对于较小的上下文窗口,在修改代码之前应先明确输入参数、该步骤的负责人以及退出标准。操作人员应当能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 应将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功判定标准,并拒绝默许的半完成状态。 只要预算允许,就应在持续集成过程中使用测试用例而非真实的付费 API 来执行对关键路径的冒烟测试。

使用 Bedrock Mantle 与 LiteLLM 的对比

在决定使用 Bedrock Mantle 还是 LiteLLM 时,应在修改代码之前明确输入参数、各步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行相应步骤,而无需猜测隐藏状态。除了功能结果外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。只要预算允许,就应在持续集成过程中通过测试用例而非真实的付费 API 来添加用于检测关键路径的冒烟测试。在决定使用 Bedrock Mantle 还是 LiteLLM 时,应在修改代码之前明确输入参数、各步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行相应步骤,而无需猜测隐藏状态。需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理措施都是产品不可或缺的部分,而非后续需要补充的功能。

model_provider = "amazon-bedrock"
model = "openai.gpt-5.5"
export AWS_BEARER_TOKEN_BEDROCK="<your-bedrock-api-key>"
export AWS_REGION="us-east-2"

创建 Codex LiteLLM 配置文件

在创建 Codex LiteLLM 配置文件时,需先确定输入参数、各步骤的负责人以及代码修改后的退出标准。操作人员应能够从已知的检查点重新运行相应步骤,而无需猜测隐藏状态。 建议使用小型、可测试的单元而非庞大的脚本。当某个步骤失败时,故障应能指向具体的责任主体,而非复杂的流程链。 还需编写简短的操作手册:说明如何轮换密钥、如何清空队列、以及如何回滚最近的导入操作。

CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME"

cat > "$CODEX_HOME/litellm.config.toml" <<EOF
model = "bedrock-mantle-openai-gpt-5-4"
model_provider = "litellm"
model_catalog_json = "$CODEX_HOME/model-catalogs/litellm.json"

[model_providers.litellm]
name = "LiteLLM"
base_url = "http://localhost:4000"
env_key = "LITELLM_DEMO_CLIENT_KEY"
wire_api = "responses"
EOF
wire_api = "responses"

为 LiteLLM 别名添加模型元数据

若要为 LiteLLM 别名添加模型元数据,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 编写简短的操作手册:说明如何轮换密钥、如何清空队列以及如何回滚上一次的导入操作。

CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME/model-catalogs"
jq '{
  models: [
    (.models[]
      | select(.slug == "gpt-5.4")
      | .slug = "bedrock-mantle-openai-gpt-5-4"
      | .display_name = "LiteLLM Bedrock GPT-5.4"
      | .description = "LiteLLM alias for GPT-5.4 through Bedrock Mantle."
      | .upgrade = null
      | .availability_nux = null
      | .max_context_window = .context_window),
    (.models[]
      | select(.slug == "gpt-5.5")
      | .slug = "bedrock-mantle-openai-gpt-5-5"
      | .display_name = "LiteLLM Bedrock GPT-5.5"
      | .description = "LiteLLM alias for GPT-5.5 through Bedrock Mantle."
      | .upgrade = null
      | .availability_nux = null)
  ]
}' "$CODEX_HOME/models_cache.json" > "$CODEX_HOME/model-catalogs/litellm.json"

可选:但您想要 GPT-5.4 mini 版本

可选内容:如果您想使用 GPT-5.4 mini,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 在功能结果旁记录执行时间以及令牌或查询成本。提前显示成本可避免在系统从演示环境切换到共享环境时出现意外账单。 编写简短的操作手册:说明如何轮换密钥、如何清空队列以及如何回滚上一次的导入操作。 可选内容:如果您想使用 GPT-5.4 mini,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 同时记录正常流程和故障恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的组成部分,而非后续需要补充的功能。

CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME/model-catalogs"
jq '{
  models: [
    (.models[]
      | select(.slug == "gpt-5.4")
      | .slug = "bedrock-mantle-openai-gpt-5-4"
      | .display_name = "LiteLLM Bedrock GPT-5.4"
      | .description = "LiteLLM alias for GPT-5.4 through Bedrock Mantle."
      | .upgrade = null
      | .availability_nux = null
      | .max_context_window = .context_window),
    (.models[]
      | select(.slug == "gpt-5.5")
      | .slug = "bedrock-mantle-openai-gpt-5-5"
      | .display_name = "LiteLLM Bedrock GPT-5.5"
      | .description = "LiteLLM alias for GPT-5.5 through Bedrock Mantle."
      | .upgrade = null
      | .availability_nux = null
      | .max_context_window = .context_window),
    (.models[]
      | select(.slug == "gpt-5.4-mini")
      | .slug = "openai-gpt-5-4-mini"
      | .display_name = "LiteLLM OpenAI GPT-5.4 Mini"
      | .description = "LiteLLM alias for GPT-5.4 mini through OpenAI."
      | .upgrade = null
      | .availability_nux = null
      | .max_context_window = .context_window)
  ]
}' "$CODEX_HOME/models_cache.json" > "$CODEX_HOME/model-catalogs/litellm.json"

通过LiteLLM启动Codex

在使用LiteLLM启动Codex时,应在修改代码之前明确输入参数、该步骤的负责人以及退出标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 优先选择小型、可测试的单元,而非庞大的脚本。当某个步骤失败时,故障应指向单一的责任主体,而非复杂的流程链。 锁定依赖版本,并记录用于演示的图像摘要。可重复性远比团队内部的知识更重要。

codex --profile litellm
codex --profile litellm -m bedrock-mantle-openai-gpt-5-5

为何这种方法有效

为了解释其有效性,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功判定标准,并拒绝默许的半完成状态。 锁定依赖项的版本,并记录用于运行演示的镜像摘要。可重复性远胜于经验主义。

codex --profile litellm

参考资料

作为参考,在修改代码之前应明确输入参数、该步骤的负责人以及终止标准。操作人员应当能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在流程从演示环境转向共享环境时出现意外费用。需锁定依赖版本,并记录用于运行演示的镜像摘要。可重复性远比个人经验更重要。作为参考,在修改代码之前应明确输入参数、该步骤的负责人以及终止标准。操作人员应当能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理方式都是产品不可或缺的部分,而非后续才需要补充的内容。

操作检查清单

对于操作检查清单,应在修改代码之前明确输入参数、各步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新执行相应步骤,而无需猜测隐藏状态。

将配置信息与应用程序代码分开。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作人员无需查看整个系统结构即可进行审计。

在预算允许的情况下,利用测试数据而非真实的付费 API,在持续集成过程中添加用于检测关键路径的冒烟测试。

在功能测试结果之外,还需记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在系统从演示环境过渡到共享环境时出现意外账单。

锁定依赖项的版本,并记录用于运行演示的镜像摘要。可重复性远胜于个人经验传承。

将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,并拒绝默许的半完成状态。

在升级整个系统之前,先冻结版本,为关键路径记录标准操作流程,同时确认回滚步骤。共享环境需要设置速率限制、租户验证机制,以及明确的密钥轮换负责人。与其追求花哨的一次性演示,不如注重扎实的可靠性。