feat(hook): add tool.definition hook for plugins to modify tool description and parameters (#4956)
This commit is contained in:
@@ -149,9 +149,17 @@ export namespace ToolRegistry {
|
|||||||
})
|
})
|
||||||
.map(async (t) => {
|
.map(async (t) => {
|
||||||
using _ = log.time(t.id)
|
using _ = log.time(t.id)
|
||||||
|
const tool = await t.init({ agent })
|
||||||
|
const output = {
|
||||||
|
description: tool.description,
|
||||||
|
parameters: tool.parameters,
|
||||||
|
}
|
||||||
|
await Plugin.trigger("tool.definition", { toolID: t.id }, output)
|
||||||
return {
|
return {
|
||||||
id: t.id,
|
id: t.id,
|
||||||
...(await t.init({ agent })),
|
...tool,
|
||||||
|
description: output.description,
|
||||||
|
parameters: output.parameters,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -224,4 +224,8 @@ export interface Hooks {
|
|||||||
input: { sessionID: string; messageID: string; partID: string },
|
input: { sessionID: string; messageID: string; partID: string },
|
||||||
output: { text: string },
|
output: { text: string },
|
||||||
) => Promise<void>
|
) => Promise<void>
|
||||||
|
/**
|
||||||
|
* Modify tool definitions (description and parameters) sent to LLM
|
||||||
|
*/
|
||||||
|
"tool.definition"?: (input: { toolID: string }, output: { description: string; parameters: any }) => Promise<void>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user