3.1 KiB
集成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'