Tools
Tools是什么呢?它本身确实非常重要,是agent、chain、chat model/LLM与世界(我理解就是我们的环境,或者业务的context)交互的一个接口,也就是说:这些大模型不知道我们的数据在哪里,不知道我们重新定义了什么函数,不知道我们用什么搜索引擎,不知道我们希望打开什么APP对吧。这些需要Tools来实现。
Tool本身具有的内容有:
- name:tool的名称
- 描述:tool是干嘛的
- JSON schema:tool的输入格式是什么
- funciton to call:能调用的函数
- tool的结果是否直接返回给用户
这里,名字、描述、JSON schema用于提供给LLM,让LLM知道如何使用tool。
- 给定一系列的tools、prompt,LLM可以调用one or more tools,会自动填充参数。
使用tool,有一些很重要,要注意的地方:
- tool 一般来说需要做微调,不然效果不好
- tool 的名称、描述、JSON schemas 很重要
- 简单的tool,对于model来说会更好用(轻易不要上复杂的tool)
Toolkits
Toolkits 是一系列的 tools 集合,这些 tools 一般来说是需要一起使用,完成具体的 tasks。
所有的 Toolkits 都暴露了一个 get_tools method,用来返回 tools:
# Initialize a toolkit
toolkit = ExampleTookit(...)
# Get list of tools
tools = toolkit.get_tools()