mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-02 15:52:34 +00:00
feat: Add event handling for LLM call lifecycle events
- Implement event listeners for LLM call events in EventListener - Add logging for LLM call start, completion, and failure events - Import and register new LLM-specific event types
This commit is contained in:
@@ -4,6 +4,11 @@ from crewai.telemetry.telemetry import Telemetry
|
|||||||
from crewai.utilities import Logger
|
from crewai.utilities import Logger
|
||||||
from crewai.utilities.constants import EMITTER_COLOR
|
from crewai.utilities.constants import EMITTER_COLOR
|
||||||
from crewai.utilities.events.base_event_listener import BaseEventListener
|
from crewai.utilities.events.base_event_listener import BaseEventListener
|
||||||
|
from crewai.utilities.events.llm_events import (
|
||||||
|
LLMCallCompletedEvent,
|
||||||
|
LLMCallFailedEvent,
|
||||||
|
LLMCallStartedEvent,
|
||||||
|
)
|
||||||
|
|
||||||
from .agent_events import AgentExecutionCompletedEvent, AgentExecutionStartedEvent
|
from .agent_events import AgentExecutionCompletedEvent, AgentExecutionStartedEvent
|
||||||
from .crew_events import (
|
from .crew_events import (
|
||||||
@@ -253,5 +258,28 @@ class EventListener(BaseEventListener):
|
|||||||
#
|
#
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# ----------- LLM EVENTS -----------
|
||||||
|
|
||||||
|
@crewai_event_bus.on(LLMCallStartedEvent)
|
||||||
|
def on_llm_call_started(source, event: LLMCallStartedEvent):
|
||||||
|
self.logger.log(
|
||||||
|
f"🤖 LLM Call Started: '{event.messages}'",
|
||||||
|
event.timestamp,
|
||||||
|
)
|
||||||
|
|
||||||
|
@crewai_event_bus.on(LLMCallCompletedEvent)
|
||||||
|
def on_llm_call_completed(source, event: LLMCallCompletedEvent):
|
||||||
|
self.logger.log(
|
||||||
|
f"✅ LLM Call Completed: '{event.response}'",
|
||||||
|
event.timestamp,
|
||||||
|
)
|
||||||
|
|
||||||
|
@crewai_event_bus.on(LLMCallFailedEvent)
|
||||||
|
def on_llm_call_failed(source, event: LLMCallFailedEvent):
|
||||||
|
self.logger.log(
|
||||||
|
f"❌ LLM Call Failed: '{event.error}'",
|
||||||
|
event.timestamp,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
event_listener = EventListener()
|
event_listener = EventListener()
|
||||||
|
|||||||
36
src/crewai/utilities/events/llm_events.py
Normal file
36
src/crewai/utilities/events/llm_events.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
from enum import Enum
|
||||||
|
from typing import Any, Dict, List, Optional, Union
|
||||||
|
|
||||||
|
from crewai.utilities.events.base_events import CrewEvent
|
||||||
|
|
||||||
|
|
||||||
|
class LLMCallType(Enum):
|
||||||
|
"""Type of LLM call being made"""
|
||||||
|
|
||||||
|
TOOL_CALL = "tool_call"
|
||||||
|
LLM_CALL = "llm_call"
|
||||||
|
|
||||||
|
|
||||||
|
class LLMCallStartedEvent(CrewEvent):
|
||||||
|
"""Event emitted when a task starts"""
|
||||||
|
|
||||||
|
type: str = "llm_call_started"
|
||||||
|
messages: Union[str, List[Dict[str, str]]]
|
||||||
|
tools: Optional[List[dict]] = None
|
||||||
|
callbacks: Optional[List[Any]] = None
|
||||||
|
available_functions: Optional[Dict[str, Any]] = None
|
||||||
|
|
||||||
|
|
||||||
|
class LLMCallCompletedEvent(CrewEvent):
|
||||||
|
"""Event emitted when a task completes"""
|
||||||
|
|
||||||
|
type: str = "llm_call_completed"
|
||||||
|
response: str
|
||||||
|
call_type: LLMCallType
|
||||||
|
|
||||||
|
|
||||||
|
class LLMCallFailedEvent(CrewEvent):
|
||||||
|
"""Event emitted when a task fails"""
|
||||||
|
|
||||||
|
error: str
|
||||||
|
type: str = "llm_call_failed"
|
||||||
Reference in New Issue
Block a user