ToolArgs

interface ToolArgs(source)

表示 Tool 的调用参数,可以为数据类或密封类,数据类表示此工具只有一个 function,密封类 ToolArgs 的所有子类(下文称为子类)的类名将作为 function 名。对于数据类,AutoTweaker 会生成一个名为 run 的 function。

ToolArgs 内的字段可以包含几乎任何类型,IntMap、数据类、密封类、嵌套的数据类。为一个字段提供默认值可以让这个字段可选,但也仅仅是可选,LLM 只知道这个参数可选,看不到默认值,除非在描述中声明。

ToolArgs 的子类类名、参数名将转换为 LLM 看到的工具声明,PascalCase 将被转换为 snake_case,所以尽管写符合 kotlin 风格的类名、字段名,LLM 会看到符合 Json 习惯的 snake_case 命名。由于这些命名本身直接呈现给 LLM,形参直接作为字段名,子类类名拼接到工具名称(来自 Tool.name)后,例如 read-summarize

可以参考 io.github.autotweaker.api.types.tool.args 下 AutoTweaker 内置工具的声明,如 io.github.autotweaker.api.types.tool.args.ReadArgs

子类类名、字段名都绝对不能打 @SerialName 标签,这会导致 LLM 看到的参数声明与实际字段不匹配,从而导致 LLM 的调用请求在反序列化时失败。ToolArgs 实现本身打了没事,但是没任何用。

See also

Inheritors