LangChain 主要通过环境变量、直接参数传递以及与密钥管理系统集成来管理外部服务的 API 密钥和凭据。 这种方法在安全性和灵活性之间取得平衡,使开发人员可以选择适合其工作流程的方法,同时避免将敏感信息硬编码到源代码中。 通过依赖于已建立的密钥处理模式,LangChain 最大程度地降低了与意外暴露相关的风险。
最常见的方法是使用环境变量。 例如,在与 OpenAI 集成时,开发人员设置 OPENAI_API_KEY
环境变量,当初始化诸如 ChatOpenAI
之类的组件时,LangChain 会自动检测到该变量。 这样可以将凭据排除在代码存储库之外,并简化跨环境(开发、暂存、生产)的配置。 开发人员还可以直接在对象初始化期间将凭据作为参数传递,例如 OpenAI(api_key="sk-...")
,但如果未仔细处理,则安全性较低。 对于诸如 AWS 或 Google Cloud 之类的基于云的服务,LangChain 通过 IAM 角色或服务帐户文件支持临时凭据,从而与这些平台的安全实践保持一致。
对于高级用例,LangChain 与诸如 HashiCorp Vault、AWS Secrets Manager 或 Azure Key Vault 之类的密钥管理器集成。 这在需要集中式凭据管理的分布式系统中很有用。 例如,SecretsManager
类可能会在运行时动态检索凭据。 LangChain 还在其 LangSmith 工具包中提供了 LC_SECRETS
实用程序,用于加密密钥存储。 开发人员有责任确保适当的访问控制,并避免在跟踪中记录或暴露密钥。 尽管 LangChain 提供了这些工具,但它强调确保凭据的安全最终取决于开发人员遵循最佳实践,例如限制权限和定期轮换密钥。