跳到正文
原文
AWS Machine Learning Blog· Virgil Ennes·· 9 天前精选AI 评分70

ChatGPT桌面应用配置Amazon Bedrock

Configure the ChatGPT desktop app with Amazon Bedrock in AWS GovCloud (US)

AI 摘要

ChatGPT桌面应用现已可在AWS GovCloud (US)的Amazon Bedrock上使用,通过两个组件提供对OpenAI前沿模型的访问,适用于需要模型推理使用AWS GovCloud (US)身份、端点和区域控制架构的组织

正文 · AI 翻译

ChatGPT桌面应用现已可在亚马逊云科技Bedrock上AWS GovCloud (US)使用,通过两个组件提供对OpenAI前沿模型的访问。Work可完成复杂的多步骤任务并交付可审阅的结果,而Codex是一个用于开发、测试和审阅软件的编码代理。

本演练面向那些其安全架构要求模型推理使用AWS GovCloud (US)身份、端点和区域控制的组织。它配置Codex以通过us-gov-west-1中的Amazon Bedrock Mantle路由模型请求,其中可以使用AWS Identity and Access Management (IAM)和现有的AWS GovCloud (US)网络控制来管理访问权限。

Codex是用于AI驱动软件开发的OpenAI编码代理。通过GPT模型进行推理,Codex引入了一种针对复杂、长周期的开发者工作流程进行优化的新智能类别。您可以使用ChatGPT桌面应用、Codex CLI以及与Visual Studio Code、JetBrains和Xcode的IDE集成。模型推理通过Amazon Bedrock的Responses API进行路由。

对于有数据驻留要求的患者,处理将保持在您选择的Amazon Bedrock AWS区域内。您按令牌付费,无需许可证和开发者承诺。还支持零数据保留(ZDR)。在这种可配置模式下,提示和响应在由AWS写入持久化存储或与模型提供者共享之前进行处理。这有助于您保护敏感信息并满足严格的数据治理、隐私和安全要求。

本帖将介绍ChatGPT桌面应用的一个受控本地部署,该部署将模型推理发送到AWS GovCloud (US-West)中的Amazon Bedrock。该配置使用API模式登录、管理设备策略、命名的AWS配置文件和网络限制。这些限制仅允许访问批准的Amazon Bedrock端点,同时禁用其他外部连接和网络启用功能。结果是,机构安全团队可以在批准更广泛的使用之前测试和记录该部署。

使用AWS GovCloud (US)并遵循本指南本身不会授权您的工作负载。您的组织仍然需要根据其系统安全计划和授权流程,审阅所选模型、AWS服务、区域、端点、工作站控制、存储库、凭证和数据流。

解决方案概述

您可以使用ChatGPT桌面应用以两种方式使用:

  • 为需要规划、研究、文件和最终结果的大任务工作。
  • Codex用于技术工作,如编辑代码、运行测试和审阅拉取请求。

ChatGPT桌面应用通过桌面应用或CLI在组织管理的计算机上运行。它使用配置的AWS凭证将请求安全地发送到us-gov-west-1中的Amazon Bedrock Mantle端点。由于此设置直接使用AWS,因此ChatGPT工作区规则和用户角色不控制它。主要的安全控制是计算机的策略和正在使用的AWS身份和权限。

演练

配置有三个主要步骤:设置身份验证、设置ChatGPT桌面应用配置文件,然后启动、初始化并验证部署。

先决条件

在将 ChatGPT 桌面应用程序设置到 AWS GovCloud (US) 之前,请确保 您的版本 的 ChatGPT 桌面应用程序支持 AWS GovCloud (US) 中的 Amazon Bedrock。您需要一个经过批准的 AWS GovCloud (US) 账户、一个 IAM 身份和经过批准的凭证、对经过批准的模型的访问权限、AWS 区域和端点,以及使用它们的权限。您还需要设置 requirements.toml 和 config.toml 文件。

步骤 1:设置身份验证

选择 us-gov-west-1 中的经过批准的 AWS GovCloud (US) 账户和 IAM 身份或角色,以便访问经过批准的模型。通过您组织的批准机制获取凭证。此演练使用命名的配置文件 codex-il5。请将凭证、持有者令牌、会话令牌和其他秘密信息从 TOML 文件中排除出来。

保护配置文件配置、凭证源、SSO 令牌缓存以及任何凭证帮助程序免受 ChatGPT 桌面应用程序任务写入的影响,同时允许批准的身份验证工具维护和刷新凭证。

ChatGPT 桌面应用程序支持两种 Amazon Bedrock 身份验证路径:一个 Amazon Bedrock API 密钥 或 AWS SDK 凭证链。通过 AWS IAM Identity Center 的 AWS SSO 在凭证链路径中得到支持。

应用程序首先检查其环境中的 AWS_BEARER_TOKEN_BEDROCK。对于桌面使用,此变量可以通过 %USERPROFILE%\.codex\.env 在 Windows 上或 ~/.codex/.env 在 Linux 和 macOS 上提供。当存在时,持有者令牌优先于基于配置文件的身份验证。

如果可用持有者令牌,应用程序会回退到标准的 AWS SDK 凭证链。该链可以从 ~/.aws/credentials 读取 AWS 凭证,并从 ~/.aws/config 读取相关的配置文件设置。在 Windows 上,相应的默认路径是 %USERPROFILE%\.aws\credentials 和 %USERPROFILE%\.aws\config。该链还支持 SSO 配置文件。对于 SSO,它使用 AWS 配置文件中的配置文件设置和缓存的 SSO 会话来获取临时角色凭证。这些凭证不需要手动存储在 AWS 凭证文件中。有关更多信息,请参阅 OpenAI 的 Bedrock 身份验证文档 和 AWS IAM Identity Center 凭证提供程序文档。

步骤 2:设置 ChatGPT 桌面应用程序配置文件

您必须创建两个 ChatGPT 桌面应用程序配置文件:config.toml 和 requirements.toml。

重要提示:配置文件需要在应用程序启动之前设置。下表显示了文件位置。

操作系统 用户 config.toml 管理员 requirements.toml
Windows %USERPROFILE%\.codex\config.toml %ProgramData%\OpenAI\Codex\requirements.toml
Linux ~/.codex/config.toml /etc/codex/requirements.toml
macOS ~/.codex/config.toml /etc/codex/requirements.toml

从 requirements.toml 文件开始。requirements.toml 是一个由管理员控制的规则文件。它设置了用户无法覆盖的安全限制,例如,限制 ChatGPT 桌面应用程序被允许使用的权限级别、工具或设置。

使用以下基线来支持 AWS GovCloud (US) Amazon Bedrock 部署。[windows] 部分仅适用于 Windows,sandbox_private_desktop 必须由批准的运行时支持。

allowed_login_methods = ["api"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
allowed_approvals_reviewers = ["user"]
allowed_approval_policies = [
{ granular = { sandbox_approval = false, rules = true,
mcp_elicitations = false, request_permissions = false,
skill_approval = true } },
]
allowed_web_search_modes = ["disabled", "cached"]
allow_browser_and_computer_use = false
allow_appshots = false
allow_remote_control = false
allow_login_shell = false
allow_managed_hooks_only = true
check_for_update_on_startup = false
mcp_servers = {}

[feedback]
enabled = false

[features]
network_proxy = true
in_app_chat = false
in_app_dictation = false
in_app_browser = false
browser_use = false
browser_use_external = false
browser_use_full_cdp_access = false
computer_use = false
in_app_updates = false
image_generation = false
memories = false
chronicle = false
external_agent_memory_import = false
guardian_approval = false
guardianv2 = false
guardian_ext = false
apps = false
enable_mcp_apps = false
plugins = false
remote_plugin = false
plugin_sharing = false
recommended_plugins = false
skill_mcp_dependency_install = false
skill_search = false
workspace_dependencies = false
hooks = false
standalone_web_search = false

[experimental_network]
enabled = true
managed_allowed_domains_only = true
domains = {}
unix_sockets = {}
allow_upstream_proxy = false
dangerously_allow_non_loopback_proxy = false
dangerously_allow_all_unix_sockets = false
allow_local_binding = false

[application.network]
enabled = true

[application.network.domains]
"bedrock-mantle.us-gov-west-1.api.aws" = "allow"
"api.openai.com" = "deny"
"chat.openai.com" = "deny"
"chatgpt.com" = "deny"
"ab.chatgpt.com" = "deny"
"platform.openai.com" = "deny"
"auth.openai.com" = "deny"
"gov.api.openai.com" = "deny"
"gov.chatgpt.com" = "deny"
"sdfedpreastus2.oaiusercontent.com" = "deny"
"o33249.ingest.us.sentry.io" = "deny"
"persistent.oaistatic.com" = "deny"
"oaisidekickupdates.blob.core.windows.net" = "deny"

[windows]
allowed_sandbox_implementations = ["elevated"]
sandbox_private_desktop = true

接下来,配置 config.toml 文件。config.toml 告诉 ChatGPT 桌面应用程序如何操作,包括使用哪个模型提供程序(amazon-bedrock)、选择哪个模型以及权限或上下文限制等设置。

用经过批准的值替换模型 ID 和命名配置文件(例如,codex-il5)。

model = "REPLACE_WITH_APPROVED_MODEL_ID"
model_provider = "amazon-bedrock"
forced_login_method = "api"
approval_policy = { granular = { sandbox_approval = false,
rules = true, mcp_elicitations = false,
request_permissions = false, skill_approval = true } }
approvals_reviewer = "user"
sandbox_mode = "workspace-write"
web_search = "cached"
allow_login_shell = false
check_for_update_on_startup = false

[model_providers.amazon-bedrock]
base_url = "https://bedrock-mantle.us-gov-west-1.api.aws/openai/v1"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = false
supports_standalone_web_search = false

[model_providers.amazon-bedrock.aws]
region = "us-gov-west-1"
profile = "codex-il5"

[sandbox_workspace_write]
network_access = false

[features]
network_proxy = true

[analytics]
enabled = false

[feedback]
enabled = false

[otel]
exporter = "none"
trace_exporter = "none"
metrics_exporter = "none"
log_user_prompt = false

[memories]
generate_memories = false
use_memories = false

[skills.bundled]
enabled = false

[apps._default]
enabled = false

[windows]
sandbox = "elevated"

步骤 3:启动、初始化和验证

从 ChatGPT 网站下载应用程序并安装它。安装后关闭应用程序。如果它自动打开或如果应用程序之前已启动,请完全退出 ChatGPT 并结束任何残留的 ChatGPT 或 Codex 进程。

在第一次应用程序启动之前,确保 requirements.toml 和 config.toml 已就绪。

启动应用程序以加载requirements.toml和config.toml设置。确保它显示amazon-bedrock作为模型提供者。

在Codex CLI中,您应该看到一个/status选项卡,看起来像这样:

Codex CLI /status tab showing amazon-bedrock configured as the model provider

图1:Codex CLI /status选项卡确认amazon-bedrock作为模型提供者

在ChatGPT桌面应用程序中,您也可以确认amazon-bedrock作为模型提供者。

ChatGPT desktop app settings confirming amazon-bedrock as the model provider

图2:ChatGPT桌面应用程序设置显示amazon-bedrock作为模型提供者

故障排除

应用程序提示需要OpenAI帐户。验证requirements.toml和config.toml使用前表中所示的确切位置和文件名,终止所有ChatGPT和Codex进程,然后重新启动。文件必须在应用程序启动之前。

AWS GovCloud (US)端点报告为不受支持。与OpenAI确认确切的桌面或app-server版本、端点和模型。仅更改URL本身并不能建立支持。

使用了错误的AWS身份。检查有效凭证源和命名配置文件。检查Amazon Bedrock API密钥是否优先于配置文件。

缺少功能限制。重启后检查完整的有效要求。仅API登录设置不应用功能策略。

回滚和清理

如果验证检查失败,停止推广。将受影响的设备返回到先前批准的策略和提供者设置,然后重新启动ChatGPT桌面应用程序。撤销任何临时AWS凭证或API密钥,并确认这些设备不再可以连接到Amazon Bedrock。记录测试情况,并在再次尝试之前清楚地记录失败的内容。

结论

在AWS GovCloud (US)中的Amazon Bedrock上的ChatGPT桌面应用程序为您提供了一种受控的方式来使用OpenAI前沿模型和编码辅助。推理保持在AWS GovCloud (US)区域中。通过验证配置,确认批准的AWS身份和端点,并验证安全控制,您可以自信地为更广泛的使用准备部署。这种方法支持创新,同时使部署决策与每个组织的安全、授权和数据处理要求保持一致。

准备好在AWS GovCloud (US)中的Amazon Bedrock上使用Codex探索ChatGPT桌面应用程序了吗?从受控部署开始,验证您的安全控制,并与您的安全团队合作,为更广泛的采用做准备。

相关资源


关于作者

Virgil Ennes

Virgil Ennes

Virgil是AWS的高级合作伙伴解决方案架构师,也是GenAI和AI/ML专家。他帮助合作伙伴和客户将OpenAI技术与AWS服务集成,将创新理念转化为可扩展的实际业务解决方案。

Sean Phuphanich

Sean Phuphanich

Sean 是应用人工智能的首席技术专家,也是独立软件供应商(ISV)领域的负责人。Sean 致力于利用前沿人工智能解决行业面临的重大挑战,并优化帕累托曲线。Sean 还是开发和安全领域的专家,担任 AWS 政府零信任加速器(ZTAG)的项目经理。

来源:AWS Machine Learning Blog · aws.amazon.com

00