jianuo's picture
first
09321b6
raw
history blame
No virus
1.01 kB
from copy import deepcopy
from .tool import Tool
class LangchainTool(Tool):
def __init__(self, langchain_tool):
from langchain.tools import BaseTool
if not isinstance(langchain_tool, BaseTool):
raise ValueError('langchain_tool should be type of langchain tool')
self.langchain_tool = langchain_tool
self.parse_langchain_schema()
super().__init__()
def parse_langchain_schema(self):
# convert langchain tool schema to modelscope_agent tool schema
self.description = self.langchain_tool.description
self.name = self.langchain_tool.name
self.parameters = []
for name, arg in self.langchain_tool.args.items():
tool_arg = deepcopy(arg)
tool_arg['name'] = name
tool_arg['required'] = True
tool_arg.pop('title')
self.parameters.append(tool_arg)
def _local_call(self, *args, **kwargs):
return {'result': self.langchain_tool.run(kwargs)}