在聊天中不粘贴密钥,也能管理机密和环境变量
大多数真实的应用至少需要一个机密:支付服务商的密钥、邮件服务的密钥,或者 AI API 的密钥。在 Mythex 中,你不需要把这些密钥粘贴到提示词里。当智能体需要某个密钥时,聊天中会出现一张机密请求卡片,你把值输入到卡片里,它会被保存为项目机密,供你的应用读取,而密钥本身不会出现在对话内容中。
它的作用
每个 Mythex 项目都可以保存环境变量:有名称的值,例如 STRIPE_SECRET_KEY,你的应用在运行时读取它们,而不是把它们直接写进代码。机密就是那些必须保持私密的环境变量。
同样的值可以在两个地方使用:
- 沙盒:智能体在你工作时构建和运行应用的地方。
- 已发布的部署:访客使用应用的地方。
添加它们的方式有三种:
- 机密请求卡片:智能体在聊天中显示的卡片,在它需要某个密钥才能完成任务时出现。
- 项目设置 → Secrets:随时添加或编辑值。
- 聊天中的
/secrets:按需添加或更新机密。
为什么这样更好
给 AI 智能体一个密钥,最直接的做法是把它粘贴到消息里。这样做确实能用,但密钥会变成聊天记录的一部分,以明文形式和你说过的其他内容躺在一起。
机密卡片会让这个值不进入对话记录。你在卡片的输入框中填写,而不是在消息框里,它会被保存为项目机密。智能体在沙盒中就能使用这个密钥,然后继续工作。
把密钥保存在项目设置中,而不是放在代码里,还有其他好处:
- 密钥不会进入源代码管理。 你的代码只通过名称引用密钥,值保存在项目设置中。
- 智能体和正在运行的应用看到的是同一份配置。 不会出现过期的副本。
- 轮换密钥无需改代码。 在设置中修改值即可,代码仍然按名称读取。
如果你对环境变量还不熟悉,我们的指南 什么是环境变量和机密 会从头解释这个概念。
如何使用机密卡片
- 提出需求,例如「用户注册时发送欢迎邮件」。
- 当智能体需要密钥时,聊天中会出现一张机密请求卡片,列出它需要的值。
- 在卡片的输入框中填写值,而不是在消息框里。
- 确认。 该值会被保存为项目机密。
- 智能体继续工作,密钥已在沙盒中可用。
如何自己添加机密
- 打开项目设置,然后进入 Secrets。
- 添加密钥,例如
STRIPE_SECRET_KEY、OPENAI_API_KEY,或你自己服务的凭据。 - 让智能体按你所用框架的标准方式读取它们,例如在 Node 应用中从
process.env读取。 - 如果已发布的应用需要新值,重新发布。
你也可以在聊天中输入 /secrets 来添加或更新它们。
更改已发布应用的机密
已发布的应用会在发布时读取机密。添加或更改机密后,请再次发布,让线上部署获得新值。在此之前,访客仍在使用旧配置的应用。
安全建议
- 绝不要把机密提交到代码仓库。 把它们保存在项目设置中。
- 特权操作优先使用仅服务端的密钥。 能够扣款或发送邮件的密钥,应该只存在于服务器端运行的代码中,而不应出现在访客浏览器下载的任何内容里。
- 如果密钥曾出现在聊天记录中,请轮换它。 在服务商处创建新密钥,撤销旧密钥,然后在项目设置中更新该值。凡是粘贴进聊天的密钥,都应视为已经泄露。
限制
- 只有使用卡片,它才有作用。 如果你仍然把密钥粘贴到消息框里,它就会留在聊天记录中。请在服务商处轮换它,并更新保存的值。
- 已发布的应用需要重新发布,才能获取新增或更改的机密。
- 安全地存储密钥,并不代表每一种用法都是安全的。 密钥在哪里被使用仍然很重要,请把特权密钥保留在应用的服务端。
如需在分享应用之前进一步保证安全,请参阅我们的 AI 构建应用安全检查清单。