概述
如果你是 ChatGPT 工作空间管理员,正在为你的组织设置 GitHub Enterprise 应用模板,请使用本指南。模板不是成员最终使用的应用。它是一个设置流程:在你提供所需的 GitHub Enterprise 配置后,会创建一个特定于工作空间的草稿应用。
对于 GitHub Enterprise,设置会将 ChatGPT 连接到你组织的 GitHub Enterprise 主机。你需要创建 GitHub App,注册 ChatGPT 回调 URL,生成凭据,然后将这些值粘贴到 ChatGPT 模板设置流程中。ChatGPT 创建草稿应用后,你可以像管理其他工作空间应用一样发布和管理它。
你正在设置的内容
你正在 ChatGPT 中创建一个特定于工作空间的 GitHub Enterprise 应用。该应用使用:
在你的 GitHub Enterprise 主机上注册的 GitHub App。
用于用户 OAuth 授权的 GitHub App 客户端 ID 和客户端密钥。
GitHub App 私钥,以便 ChatGPT 为代码仓库操作签发安装 Token。
webhook 密钥和 webhook URL,以便 GitHub Enterprise 将安装和代码仓库事件发送回 ChatGPT。
你的 GitHub Enterprise 主机名,例如
github.example.com。
创建 GitHub App,而不是独立的 GitHub OAuth App。ChatGPT 模板设置需要 GitHub App 凭据、私钥和 webhook 设置。
开始之前
你需要:
ChatGPT 工作空间管理员或所有者访问权限。
可创建和安装 GitHub Apps 的 GitHub Enterprise 管理员或组织所有者访问权限。
仅 GitHub Enterprise 主机名,不包含
https://或路径。决定 ChatGPT 应支持哪些代码仓库操作,例如只读代码仓库搜索、拉取请求工作流、议题工作流、文件编辑、GitHub Actions 或更广泛的 Codex 工作流。
一个用于处理 GitHub App 私钥和客户端密钥的安全位置。
在单独的标签页中保持 ChatGPT 和 GitHub Enterprise 打开。不要自行编造回调 URL。复制 ChatGPT 中显示的确切回调 URL。
要准备的值
GitHub Enterprise 主机名:例如
github.example.com。回调 URL:从 ChatGPT 模板设置流程中复制。
GitHub App 客户端 ID。
GitHub App 客户端密钥。
GitHub App 私钥 PEM。
由 ChatGPT 生成的 webhook 密钥。
在 ChatGPT 中创建草稿应用后生成的 webhook URL。
在 ChatGPT 中开始模板设置
在 ChatGPT 中,切换到应提供该应用的工作空间。
打开工作空间设置 > 应用。
选择目录。
搜索 GitHub Enterprise。
选择 GitHub Enterprise 应用模板并开始设置。
输入清晰的应用名称和描述,例如 GitHub Enterprise 或 GitHub Enterprise - Engineering。
输入 GitHub Enterprise 主机名,例如
github.example.com。复制 ChatGPT 中显示的回调 URL。保持此标签页打开。
如果设置期间显示了生成的 webhook 密钥,请复制它。
回调 URL 示例:https://chatgpt.com/connector/oauth/<callback_id>
不要移除回调 ID、添加尾部斜杠,或将其替换为通用 ChatGPT URL。
在 GitHub Enterprise 中创建 GitHub App
打开你的 GitHub Enterprise 主机,例如
https://github.example.com。转到应拥有该应用的组织或账户。
打开“设置 > 开发者设置 > GitHub Apps”。
选择新建 GitHub App。
输入清晰的应用名称,例如 ChatGPT GitHub Enterprise Connector。
输入主页 URL。如果没有专用的内部页面,请使用 GitHub Enterprise 组织 URL。
在“回调 URL”中,粘贴从 ChatGPT 复制的确切回调 URL。
保持启用“使用户授权 Token 过期”,除非你的安全团队有特定理由进行更改。
启用“安装期间请求用户授权”,以便用户在安装或连接流程中授权该应用。
在“此 GitHub App 可安装在何处?”下,选择适合你的发布范围的最小选项。
创建 GitHub App。
配置权限和事件
选择计划启用的 ChatGPT 操作所需的最低权限。
对于只读代码仓库发现和问答,请从以下只读权限开始:
元数据:只读。GitHub Apps 需要元数据。
内容:只读,用于访问文件和代码仓库内容。
议题:只读,如果需要搜索或读取议题。
拉取请求:只读,如果需要拉取请求搜索或审查上下文。
Actions:只读,如果需要工作流运行状态、作业、日志或构件。
对于写入工作流,仅在需要的地方添加写入权限,例如 Contents、Pull requests、Issues、Actions 或 Workflows。使用可支持预期 ChatGPT 操作的最小权限。
Webhook 事件应与你支持的工作流匹配。常见事件包括 Installation、Installation repositories、Push、Pull request、Issues、Issue comment、Workflow run 和 Workflow job。
生成并复制 GitHub App 凭据
在 GitHub App 设置中,复制客户端 ID。
生成客户端密钥并立即复制。
在私钥下,生成私钥。
下载 .pem 文件并安全存储。
在本地打开 .pem 文件,并复制完整 PEM 文本,包括开头和结尾行。
私钥属于敏感信息。请像对待凭据一样对待它。如果它已泄露,请生成新的私钥,更新 ChatGPT 应用设置,并在 GitHub Enterprise 中删除已泄露的密钥。
在 ChatGPT 中完成设置
返回 ChatGPT 模板设置标签页。
将 GitHub App 客户端 ID 粘贴到 OAuth 客户端 ID。
将 GitHub App 客户端密钥粘贴到 OAuth 客户端密钥。
保持范围不变,除非你的组织有意需要覆盖模板默认值。
确认 GitHub Enterprise 主机名仅为主机名,例如
github.example.com。将 GitHub App 私钥 PEM 粘贴或上传到 GitHub App 私钥。
确认已存在生成的 webhook 密钥。
创建草稿应用。
在 ChatGPT 中打开已创建的草稿应用详情,并复制生成的 webhook URL。
webhook URL 应类似于:https://connectors.api.openai.org/connectors/<connector_id>/webhook
在 GitHub Enterprise 中完成 webhook 设置
返回 GitHub Enterprise 中的 GitHub App 设置。
打开 GitHub App 常规设置。
如果尚未启用,请启用 Active webhooks。
将 ChatGPT webhook URL 粘贴到 Webhook URL。
将 ChatGPT webhook 密钥粘贴到 Webhook secret。
保持启用 SSL 验证。
确认订阅的 webhook 事件与已启用的权限和操作匹配。
保存更改。
在 ChatGPT 中发布和管理应用
创建草稿应用不会自动使其对成员可用。审核草稿后:
发布草稿应用。
确认该应用显示在工作空间设置 > 应用 > 已启用中。
为应使用该应用的角色配置用户访问权限。
查看操作控制中的读取和写入操作。
查看应用权限,以选择 ChatGPT 在使用应用前何时询问成员。
请允许的测试用户打开 ChatGPT 中的应用,并确认该应用出现。
这些应用权限适用于 ChatGPT 对话。工作空间智能体使用由智能体构建者设置的单智能体控制,来决定哪些应用操作可用,以及何时要求最终用户批准。有关智能体行为,请参阅:面向 Enterprise 和 Business 的 ChatGPT 工作空间智能体。
安装并测试 GitHub App
在 GitHub Enterprise 中,在组织或账户上安装 GitHub App。
根据工作空间政策选择所有代码仓库或选定代码仓库。
以允许的用户身份从 ChatGPT 启动连接流程。
在出现提示时授权 GitHub App。
先运行一个小型读取操作,例如列出可访问的代码仓库或获取已知拉取请求。
如果启用了写入操作,请先使用低风险代码仓库进行测试,再扩大发布范围。
主机名和 OAuth 行为
ChatGPT 使用主机名来派生 GitHub Enterprise 端点。仅输入主机,例如 github.example.com 或 octocorp.ghe.com。
不要输入 API 路径、代码仓库路径或 github.com,除非它正是此应用的 GitHub Enterprise 主机。
故障排除
重定向 URI 不匹配:确认 GitHub App 回调 URL 与 ChatGPT 中显示的回调 URL 完全一致。
ChatGPT 无法创建或保存草稿应用:确认所有必填字段均已填写,包括主机名、OAuth 客户端 ID、OAuth 客户端密钥、私钥和 webhook 密钥。
身份验证成功但代码仓库调用失败:确认 GitHub App 已安装并有权访问该代码仓库。
API 返回 403 或权限不足:添加缺失的 GitHub App 权限,并在出现提示时让安装所有者批准更新后的权限。
未显示任何代码仓库:确认应用安装包含预期代码仓库,并且在 ChatGPT 中授权的用户有权访问它们。
Webhook 投递失败:确认 webhook URL 和 webhook 密钥与 ChatGPT 中的值匹配,保持启用 SSL 验证,并确保 GitHub Enterprise 主机可以访问
connectors.api.openai.org。私钥错误:确认已复制完整 PEM 内容,包括开头和结尾行。
