Files
2025-02-28 20:30:47 +08:00

3.1 KiB
Raw Permalink Blame History

集成LangChain工具

根据langchain中工具对象的初始化的难易程度可以将其分为两类 第一类,简单初始化,只需要简单的参数配置即可完成初始化。 第二类,复杂初始化,内部包含一些复杂的对象需要进行初始化。 对于一类工具你可以在aU中直接使用配置文件进行初始化如DuDuckGo搜索工具的初始化。 对于第二类工具我们实现了一个LangChainTool基础类你只需要实现该类的init_langchain_tool方法初始化对应的langchain工具对象即可参考维基百科的初始化方法。

注意如果你想直接使用LangChain中的description在配置文件中description必须要配置为空

一个工具初始化示例: 工具地址

name: 'human_input_run'
description: ''
tool_type: 'api'
input_keys: ['input']
langchain:
  module: langchain_community.tools
  class_name: HumanInputRun
metadata:
  type: 'TOOL'
  module: 'sample_standard_app.intelligence.agentic.tool.samples.langchain_tool'
  class: 'LangChainTool'

参数说明: langchain: 你打算使用的langchain工具需要配置module和class_name langchain.module: langchain的模块名例如langchain_community.tools langchain.class_name: langchain的类名例如HumanInputRun langchain.init_params langchain的初始化参数例如 yaml langchain: module: langchain_community.tools class_name: HumanInputRun init_params: prompt: '请输入你的问题' 如果需要使用你完全重写了init_langchain_tool方法那么你不需要配置该部分 该工具可以直接使用无需任何keys

1. 集成LangChain中的DuckDuckGo工具

工具地址

name: 'duckduckgo_search'
description: 'DuckDuckGo Search tool'
tool_type: 'api'
input_keys: ['input']
langchain:
  module: langchain.tools
  class_name: DuckDuckGoSearchResults
  init_params:
    backend: news
metadata:
  type: 'TOOL'
  module: 'sample_standard_app.intelligence.agentic.tool.samples.langchain_tool'
  class: 'LangChainTool'

该工具可以直接使用无需任何keys

2.集成维基百科搜索

因为LangChain的定义当中包含一个api_wrapper对象因此定义对象文件并重写初始化方法

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from sample_standard_app.intelligence.agentic.tool.samples.langchain_tool import LangChainTool


class WikipediaTool(LangChainTool):
    def init_langchain_tool(self, component_configer):
        wrapper = WikipediaAPIWrapper()
        return WikipediaQueryRun(api_wrapper=wrapper)

定义配置

name: 'wikipedia_query'
description: ''
tool_type: 'api'
input_keys: ['input']
metadata:
  type: 'TOOL'
  module: 'sample_standard_app.intelligence.agentic.tool.samples.wikipedia_query'
  class: 'WikipediaTool'