mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-15 11:08:33 +00:00
implements agentops with a langchain handler, agent tracking and tool call recording
This commit is contained in:
@@ -24,8 +24,11 @@ from pydantic_core import PydanticCustomError
|
||||
from crewai.agents import CacheHandler, CrewAgentExecutor, CrewAgentParser, ToolsHandler
|
||||
from crewai.utilities import I18N, Logger, Prompts, RPMController
|
||||
from crewai.utilities.token_counter_callback import TokenCalcHandler, TokenProcess
|
||||
from agentops.agent import track_agent
|
||||
from agentops import LangchainCallbackHandler
|
||||
|
||||
|
||||
@track_agent(name=None)
|
||||
class Agent(BaseModel):
|
||||
"""Represents an agent in a system.
|
||||
|
||||
@@ -55,6 +58,8 @@ class Agent(BaseModel):
|
||||
_rpm_controller: RPMController = PrivateAttr(default=None)
|
||||
_request_within_rpm_limit: Any = PrivateAttr(default=None)
|
||||
_token_process: TokenProcess = TokenProcess()
|
||||
agent_ops_agent_name: str = None
|
||||
agent_ops_agent_id: str = None
|
||||
|
||||
formatting_errors: int = 0
|
||||
model_config = ConfigDict(arbitrary_types_allowed=True)
|
||||
@@ -119,6 +124,7 @@ class Agent(BaseModel):
|
||||
def __init__(__pydantic_self__, **data):
|
||||
config = data.pop("config", {})
|
||||
super().__init__(**config, **data)
|
||||
__pydantic_self__._agent_ops_agent_name = __pydantic_self__.role
|
||||
|
||||
@field_validator("id", mode="before")
|
||||
@classmethod
|
||||
@@ -151,7 +157,8 @@ class Agent(BaseModel):
|
||||
"""set agent executor is set."""
|
||||
if hasattr(self.llm, "model_name"):
|
||||
self.llm.callbacks = [
|
||||
TokenCalcHandler(self.llm.model_name, self._token_process)
|
||||
TokenCalcHandler(self.llm.model_name, self._token_process),
|
||||
LangchainCallbackHandler()
|
||||
]
|
||||
if not self.agent_executor:
|
||||
self.set_cache_handler(self.cache_handler)
|
||||
|
||||
@@ -9,6 +9,7 @@ from crewai.agents.tools_handler import ToolsHandler
|
||||
from crewai.telemetry import Telemetry
|
||||
from crewai.tools.tool_calling import InstructorToolCalling, ToolCalling
|
||||
from crewai.utilities import I18N, Converter, ConverterError, Printer
|
||||
from agentops import record, ToolEvent
|
||||
|
||||
OPENAI_BIGGER_MODELS = ["gpt-4"]
|
||||
|
||||
@@ -80,6 +81,7 @@ class ToolUsage:
|
||||
return error
|
||||
try:
|
||||
tool = self._select_tool(calling.tool_name)
|
||||
record(ToolEvent(name=calling.tool_name))
|
||||
except Exception as e:
|
||||
error = getattr(e, "message", str(e))
|
||||
self.task.increment_tools_errors()
|
||||
|
||||
Reference in New Issue
Block a user