chore: add logger as param to AgentWorkflow constructor (#2130)

Co-authored-by: Terence Sim <40583743+InTheAxis@users.noreply.github.com>
Co-authored-by: Marcus Schiesser <marcus.schiesser@googlemail.com>
This commit is contained in:
Terence Sim
2025-07-22 16:35:28 +08:00
committed by GitHub
parent e4c7113614
commit 9ed31958a7
3 changed files with 36 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@llamaindex/workflow": patch
---
chore: add logger as param to AgentWorkflow constructor
+21 -7
View File
@@ -103,6 +103,10 @@ export type SingleAgentParams = FunctionAgentParams & {
* Timeout for the workflow in seconds
*/
timeout?: number;
/**
* Attach optional custom logger
*/
logger?: Logger;
};
export type AgentWorkflowParams = {
@@ -123,11 +127,18 @@ export type AgentWorkflowParams = {
* If not provided, a new empty memory will be created.
*/
memory?: Memory | undefined;
/**
* Whether to log verbose output
*/
verbose?: boolean;
/**
* Timeout for the workflow in seconds.
*/
timeout?: number;
/**
* Attach optional custom logger
*/
logger?: Logger | undefined;
};
/**
@@ -166,7 +177,13 @@ export class AgentWorkflow implements Workflow {
private initialMemory?: Memory;
private logger: Logger;
constructor({ agents, rootAgent, memory, verbose }: AgentWorkflowParams) {
constructor({
agents,
rootAgent,
memory,
verbose,
logger,
}: AgentWorkflowParams) {
this.verbose = verbose ?? false;
if (memory) {
this.initialMemory = memory;
@@ -214,12 +231,8 @@ export class AgentWorkflow implements Workflow {
this.addAgents(processedAgents);
this.setupWorkflowSteps();
this.logger =
verbose === false
? emptyLogger
: verbose || this.verbose
? consoleLogger
: emptyLogger;
// Use the provided logger if exists, else default to consoleLogger if verbose, else emptyLogger
this.logger = logger ?? (this.verbose ? consoleLogger : emptyLogger);
}
handle<
@@ -319,6 +332,7 @@ export class AgentWorkflow implements Workflow {
verbose: params.verbose ?? false,
timeout: params.timeout ?? 60,
memory: params.memory,
logger: params.logger,
};
const workflow = new AgentWorkflow(workflowParams);
+10 -1
View File
@@ -1,6 +1,7 @@
import { Settings } from "@llamaindex/core/global";
import { MockLLM } from "@llamaindex/core/llms/mock";
import { FunctionTool } from "@llamaindex/core/tools";
import { Logger } from "@llamaindex/env";
import { describe, expect, test, vi } from "vitest";
import { z } from "zod";
import {
@@ -187,11 +188,19 @@ describe("AgentWorkflow", () => {
vi.spyOn(addTool, "call");
const testLogger: Logger = Object.freeze({
log: console.log.bind(console),
error: console.error.bind(console),
warn: console.warn.bind(console),
});
// Create workflow with single agent
// Additionally test verbose logging
const workflow = AgentWorkflow.fromTools({
tools: [addTool],
llm: mockLLM,
verbose: false,
verbose: true,
logger: testLogger,
});
// Run the workflow