From d11edf9ca09bced5bad6fd47d48954f440a8c64c Mon Sep 17 00:00:00 2001 From: wishhyt <24300810017@m.fudan.edu.cn> Date: Wed, 18 Mar 2026 10:18:53 +0800 Subject: [PATCH] fix(llm): set success_callback independently of failure_callback `set_env_callbacks` nested the `litellm.success_callback` assignment inside the `if failure_callbacks_str:` block, so success callbacks parsed from LITELLM_SUCCESS_CALLBACKS were silently discarded when LITELLM_FAILURE_CALLBACKS was unset. Move both assignments to independent top-level guards so each callback list is applied whenever its environment variable is present, regardless of the other. Made-with: Cursor --- lib/crewai/src/crewai/llm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/crewai/src/crewai/llm.py b/lib/crewai/src/crewai/llm.py index 8a4ac2edde..9afa2b84c7 100644 --- a/lib/crewai/src/crewai/llm.py +++ b/lib/crewai/src/crewai/llm.py @@ -2243,12 +2243,15 @@ def set_env_callbacks() -> None: ] failure_callbacks_str = os.environ.get("LITELLM_FAILURE_CALLBACKS", "") + failure_callbacks: list[str | Callable[..., Any] | CustomLogger] = [] if failure_callbacks_str: - failure_callbacks: list[str | Callable[..., Any] | CustomLogger] = [ + failure_callbacks = [ cb.strip() for cb in failure_callbacks_str.split(",") if cb.strip() ] + if success_callbacks: litellm.success_callback = success_callbacks + if failure_callbacks: litellm.failure_callback = failure_callbacks def __copy__(self) -> LLM: