- 版本控制: 将您的提示词与应用程序代码一起在熟悉的系统中进行版本管理。
- CI/CD 集成: 当关键提示词发生变化时,触发自动的暂存或生产环境部署。

先决条件
在开始之前,请确保您已设置好以下内容:- GitHub 账户: 一个标准的 GitHub 账户。
- GitHub 仓库: 创建一个新的(或选择一个现有的)仓库,用于存储您的 LangSmith 提示词清单。这可以是与您的应用程序代码相同的仓库,也可以是一个专门用于提示词的仓库。
-
GitHub 个人访问令牌(PAT):
- LangSmith 的 Webhook 不直接与 GitHub 交互——它们会调用一个由您创建的中间服务器。
- 此服务器需要一个 GitHub PAT 来进行身份验证并向您的仓库提交更改。
- 必须包含
repo作用域(对于公共仓库,public_repo就足够了)。 - 前往 GitHub > 设置 > 开发者设置 > 个人访问令牌 > 令牌(经典)。
- 点击 生成新令牌(经典)。
- 为其命名(例如,“LangSmith Prompt Sync”),设置过期时间,并选择所需的作用域。
- 点击 生成令牌 并立即复制它——之后将不再显示。
- 安全地存储该令牌,并将其作为环境变量提供给您的服务器。
理解 LangSmith 的“提示词提交”和 Webhook
在 LangSmith 中,当您保存对提示词的更改时,本质上是在创建一个新版本或一个“提示词提交”。这些提交可以触发 Webhook。 Webhook 将发送一个包含新提示词清单的 JSON 负载。示例 Webhook 负载
示例 Webhook 负载
理解 LangSmith 的提示词提交 Webhook 通常在工作区级别触发非常重要。这意味着,如果您的 LangSmith 工作区中任何提示词被修改并保存了一个“提示词提交”,Webhook 就会触发并发送该提示词的更新清单。负载可以通过提示词 ID 来识别。您的接收服务器设计时应考虑到这一点。
实现用于接收 Webhook 的 FastAPI 服务器
为了有效处理 LangSmith 在提示词更新时发送的 Webhook 通知,需要一个中间服务器应用程序。该服务器将作为 LangSmith 发送的 HTTP POST 请求的接收器。在本指南中,为演示目的,我们将概述如何创建一个简单的 FastAPI 应用程序来承担此角色。 这个公开可访问的服务器将负责:- 接收 Webhook 请求: 监听传入的 HTTP POST 请求。
- 解析负载: 从请求体中提取并解释 JSON 格式的提示词清单。
- 提交到 GitHub: 以编程方式在您指定的 GitHub 仓库中创建一个新的提交,包含更新后的提示词清单。这确保您的提示词保持版本控制,并与 LangSmith 中的更改同步。
最小化 FastAPI 服务器代码 ()
最小化 FastAPI 服务器代码 ()
main.py此服务器将监听来自 LangSmith 的传入 Webhook,并将接收到的提示词清单提交到您的 GitHub 仓库。- 配置(
.env): 它期望一个包含GITHUB_TOKEN、GITHUB_REPO_OWNER和GITHUB_REPO_NAME的.env文件。您还可以自定义GITHUB_FILE_PATH(默认:LangSmith_prompt_manifest.json)和GITHUB_BRANCH(默认:main)。 - GitHub 交互:
commit_manifest_to_github函数处理获取当前文件 SHA(用于更新)然后提交新清单内容的逻辑。 - Webhook 端点(
/webhook/commit): 这是您的 LangSmith Webhook 将指向的 URL 路径。 - 错误处理: 包含了基本的 GitHub API 交互错误处理。
https://prompt-commit-webhook.onrender.com)。在 LangSmith 中配置 Webhook
一旦您的 FastAPI 服务器部署完成并获得了其公共 URL,您就可以在 LangSmith 中配置 Webhook:- 导航到您的 LangSmith 工作区。
-
进入 Prompts 部分。在这里您将看到您的提示词列表。

- 在 Prompts 页面的右上角,点击 + Webhook 按钮。
-
您将看到一个用于配置 Webhook 的表单:

- Webhook URL: 输入您部署的 FastAPI 服务器端点的完整公共 URL。对于我们的示例服务器,这将是
https://prompt-commit-webhook.onrender.com/webhook/commit。 - Headers(可选):
- 您可以添加自定义头部,LangSmith 将在每个 Webhook 请求中发送这些头部。
- Webhook URL: 输入您部署的 FastAPI 服务器端点的完整公共 URL。对于我们的示例服务器,这将是
- 测试 Webhook: LangSmith 提供了一个“发送测试通知”按钮。使用此按钮向您的服务器发送一个示例负载。检查您的服务器日志(例如,在 Render 上),以确保它接收到请求并成功处理(或调试任何问题)。
- 保存 Webhook 配置。
工作流程实践

- 提示词修改: 用户(开发人员或非技术团队成员)在 LangSmith UI 中修改提示词并保存,创建一个新的“提示词提交”。
- Webhook 触发: LangSmith 检测到这个新的提示词提交并触发配置的 Webhook。
-
HTTP 请求: LangSmith 向您的 FastAPI 服务器的公共 URL(例如,
https://prompt-commit-webhook.onrender.com/webhook/commit)发送一个 HTTP POST 请求。此请求的正文包含整个工作区的 JSON 提示词清单。 - 服务器接收负载: 您的 FastAPI 服务器的端点接收到请求。
-
GitHub 提交: 服务器解析请求体中的 JSON 清单。然后,它使用配置的 GitHub 个人访问令牌、仓库所有者、仓库名称、文件路径和分支来:
- 检查清单文件是否已存在于指定分支的仓库中,以获取其 SHA(这对于更新现有文件是必需的)。
- 使用最新的提示词清单创建一个新的提交,如果文件已存在则更新它。提交消息将指示这是来自 LangSmith 的更新。
-
确认: 您应该会在 GitHub 仓库中看到新的提交。

超越简单的提交
我们的示例 FastAPI 服务器执行的是整个提示词清单的直接提交。然而,这只是一个起点。您可以扩展服务器的功能以执行更复杂的操作:- 细粒度提交: 解析清单,如果您更倾向于在仓库中使用更细粒度的结构,则将更改提交到单独的提示词文件。
- 触发 CI/CD: 让服务器触发 CI/CD 流水线(例如,Jenkins、GitHub Actions、GitLab CI)来部署暂存环境、运行测试或构建新的应用程序版本,而不是(或除了)提交。
- 更新数据库/缓存: 如果您的应用程序从数据库或缓存加载提示词,直接更新这些存储。
- 通知: 向 Slack、电子邮件或其他通信渠道发送关于提示词更改的通知。
- 选择性处理: 根据 LangSmith 负载中的元数据(如果可用,例如哪个特定提示词更改或由谁更改),您可以应用不同的逻辑。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

