NEURON 工具包
简介
所谓工具包,就是多个工具的集合。
工具继承NeuronAI\Tools\Toolkits\AbstractToolkit。
NeuronAI\Agent\HandleTools中调用tools。
exclude相当于数组中排除某个值,only相当于使用数组中某些值,with相当于给数组加长度。
定义
需要定义工具包的名字和作用,以及工具包中的工具。
classTestToolkitextendsAbstractToolkit{publicfunctionguidelines(): ?string{returnparent::guidelines(); }publicfunctionprovide(): array{ $list = [ CalculateAgeTool::make(), AddTimeTool::make(), IsWeekendTool::make(), LocationTool::make(), ];return $list; }}
classLocationToolextendsTool{publicfunction__construct(){parent::__construct( name: 'get_current_weather', description: '当你想查询指定城市的天气时非常有用。', ); }protectedfunctionproperties(): array{return [new ToolProperty( name: 'location', type: PropertyType::STRING, description: '城市或县区,比如北京市、杭州市、余杭区等。', required: true ), ]; }publicfunction__invoke(string $location): string{ var_dump("tool setCallable", $location); $weatherData = ['天津市' => '天津市:晴天,20-28°C,北风2级','上海市' => '上海市:多云,22-30°C,东南风3级','深圳市' => '深圳市:阵雨,25-32°C,南风4级', ];return $weatherData[$location] ?? "{$location}:天气信息暂时不可用"; }}
class OpenAIAgent extends Agent { protected function tools(): array {return [ TestToolkit::make()->only([ LocationTool::class, CalculateAgeTool::class, ]), ]; }}
classIsWeekendTool{ ……publicfunction__invoke(string $date, ?string $timezone = null): string{ var_dump(__CLASS__); …… }}
classCalculateAgeTool{ ……publicfunction__invoke(string $date, ?string $timezone = null): string{ var_dump(__CLASS__); …… }}
使用
$agent = OpenAIAgent::make();$msg3 = new UserMessage("今天天津的天气怎么样?今天是周末吗?出生于1990年1月1日的人今年多大了?");$message = $agent->chat($msg3);echo$message->getContent();
结果
string(16) "tool setCallable"string(9) "天津市"string(49) "NeuronAI\Tools\Toolkits\Calendar\CalculateAgeTool"天津市今天天气晴朗,气温在20到28摄氏度之间,北风2级哦~ 今天是2024年7月15日星期一,所以不是周末呢。出生于1990年1月1日的人今年36岁啦~
例子中证明调用工具LocationTool和CalculateAgeTool,IsWeekendTool未被调用。