Compare commits

...

2 Commits

2 changed files with 34 additions and 1 deletions

View File

@ -1401,10 +1401,19 @@ class Agent_Agentflow implements INode {
return { response, usedTools, sourceDocuments, artifacts, totalTokens, isWaitingForHumanInput: true }
}
let toolIds: ICommonObject | undefined
if (options.analyticHandlers) {
toolIds = await options.analyticHandlers.onToolStart(toolCall.name, toolCall.args, options.parentTraceIds)
}
try {
//@ts-ignore
let toolOutput = await selectedTool.call(toolCall.args, { signal: abortController?.signal }, undefined, flowConfig)
if (options.analyticHandlers && toolIds) {
await options.analyticHandlers.onToolEnd(toolIds, toolOutput)
}
// Extract source documents if present
if (typeof toolOutput === 'string' && toolOutput.includes(SOURCE_DOCUMENTS_PREFIX)) {
const [output, docs] = toolOutput.split(SOURCE_DOCUMENTS_PREFIX)
@ -1459,6 +1468,10 @@ class Agent_Agentflow implements INode {
toolOutput
})
} catch (e) {
if (options.analyticHandlers && toolIds) {
await options.analyticHandlers.onToolEnd(toolIds, e)
}
console.error('Error invoking tool:', e)
usedTools.push({
tool: selectedTool.name,
@ -1650,10 +1663,19 @@ class Agent_Agentflow implements INode {
toolsInstance = toolsInstance.filter((tool) => tool.name !== toolCall.name)
}
if (humanInput.type === 'proceed') {
let toolIds: ICommonObject | undefined
if (options.analyticHandlers) {
toolIds = await options.analyticHandlers.onToolStart(toolCall.name, toolCall.args, options.parentTraceIds)
}
try {
//@ts-ignore
let toolOutput = await selectedTool.call(toolCall.args, { signal: abortController?.signal }, undefined, flowConfig)
if (options.analyticHandlers && toolIds) {
await options.analyticHandlers.onToolEnd(toolIds, toolOutput)
}
// Extract source documents if present
if (typeof toolOutput === 'string' && toolOutput.includes(SOURCE_DOCUMENTS_PREFIX)) {
const [output, docs] = toolOutput.split(SOURCE_DOCUMENTS_PREFIX)
@ -1708,6 +1730,10 @@ class Agent_Agentflow implements INode {
toolOutput
})
} catch (e) {
if (options.analyticHandlers && toolIds) {
await options.analyticHandlers.onToolEnd(toolIds, e)
}
console.error('Error invoking tool:', e)
usedTools.push({
tool: selectedTool.name,

View File

@ -1503,7 +1503,14 @@ export const executeAgentFlow = async ({
try {
if (chatflow.analytic) {
analyticHandlers = AnalyticHandler.getInstance({ inputs: {} } as any, {
// Override config analytics
let analyticInputs: ICommonObject = {}
if (overrideConfig?.analytics && Object.keys(overrideConfig.analytics).length > 0) {
analyticInputs = {
...overrideConfig.analytics
}
}
analyticHandlers = AnalyticHandler.getInstance({ inputs: { analytics: analyticInputs } } as any, {
orgId,
workspaceId,
appDataSource,