mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
optional dependency usage
This commit is contained in:
@@ -24,7 +24,13 @@ from crewai.agents import CacheHandler, CrewAgentExecutor, CrewAgentParser, Tool
|
|||||||
from crewai.memory.contextual.contextual_memory import ContextualMemory
|
from crewai.memory.contextual.contextual_memory import ContextualMemory
|
||||||
from crewai.utilities import I18N, Logger, Prompts, RPMController
|
from crewai.utilities import I18N, Logger, Prompts, RPMController
|
||||||
from crewai.utilities.token_counter_callback import TokenCalcHandler, TokenProcess
|
from crewai.utilities.token_counter_callback import TokenCalcHandler, TokenProcess
|
||||||
from agentops.agent import track_agent
|
try:
|
||||||
|
from agentops.agent import track_agent
|
||||||
|
except ImportError:
|
||||||
|
def track_agent():
|
||||||
|
def do_nothing_decorator(f):
|
||||||
|
return f
|
||||||
|
return do_nothing_decorator
|
||||||
|
|
||||||
|
|
||||||
@track_agent()
|
@track_agent()
|
||||||
@@ -58,6 +64,7 @@ class Agent(BaseModel):
|
|||||||
_request_within_rpm_limit: Any = PrivateAttr(default=None)
|
_request_within_rpm_limit: Any = PrivateAttr(default=None)
|
||||||
_token_process: TokenProcess = TokenProcess()
|
_token_process: TokenProcess = TokenProcess()
|
||||||
agent_ops_agent_name: str = None
|
agent_ops_agent_name: str = None
|
||||||
|
agent_ops_agent_id: str = None
|
||||||
|
|
||||||
formatting_errors: int = 0
|
formatting_errors: int = 0
|
||||||
model_config = ConfigDict(arbitrary_types_allowed=True)
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
||||||
|
|||||||
@@ -29,8 +29,10 @@ from crewai.task import Task
|
|||||||
from crewai.telemetry import Telemetry
|
from crewai.telemetry import Telemetry
|
||||||
from crewai.tools.agent_tools import AgentTools
|
from crewai.tools.agent_tools import AgentTools
|
||||||
from crewai.utilities import I18N, Logger, RPMController
|
from crewai.utilities import I18N, Logger, RPMController
|
||||||
import agentops
|
try:
|
||||||
|
import agentops
|
||||||
|
except ImportError:
|
||||||
|
agentops = None
|
||||||
|
|
||||||
class Crew(BaseModel):
|
class Crew(BaseModel):
|
||||||
"""
|
"""
|
||||||
@@ -346,8 +348,8 @@ class Crew(BaseModel):
|
|||||||
def _finish_execution(self, output) -> None:
|
def _finish_execution(self, output) -> None:
|
||||||
if self.max_rpm:
|
if self.max_rpm:
|
||||||
self._rpm_controller.stop_rpm_counter()
|
self._rpm_controller.stop_rpm_counter()
|
||||||
|
if agentops:
|
||||||
agentops.end_session(end_state="Success", end_state_reason="Finished Execution")
|
agentops.end_session(end_state="Success", end_state_reason="Finished Execution")
|
||||||
self._telemetry.end_crew(self, output)
|
self._telemetry.end_crew(self, output)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import json
|
|||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
try:
|
||||||
|
import agentops
|
||||||
|
except ImportError:
|
||||||
|
agentops = None
|
||||||
|
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
from opentelemetry import trace
|
from opentelemetry import trace
|
||||||
@@ -196,6 +200,21 @@ class Telemetry:
|
|||||||
"""
|
"""
|
||||||
if (self.ready) and (crew.share_crew):
|
if (self.ready) and (crew.share_crew):
|
||||||
try:
|
try:
|
||||||
|
if not agentops:
|
||||||
|
print("To enable full telemetry, install agentops: pip install agentops")
|
||||||
|
else:
|
||||||
|
print("")
|
||||||
|
if not agentops.get_api_key():
|
||||||
|
# not using agentops
|
||||||
|
agentops.start_session(
|
||||||
|
tags=['anonymous_telemetry'],
|
||||||
|
config=agentops.Config(
|
||||||
|
api_key="daebe730-f54d-4af5-98df-e6946fb76d13",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# using agent ops, add parent key
|
||||||
|
agentops.set_parent_key("daebe730-f54d-4af5-98df-e6946fb76d13")
|
||||||
tracer = trace.get_tracer("crewai.telemetry")
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
span = tracer.start_span("Crew Execution")
|
span = tracer.start_span("Crew Execution")
|
||||||
self._add_attribute(span, "crew_id", str(crew.id))
|
self._add_attribute(span, "crew_id", str(crew.id))
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ from crewai.agents.tools_handler import ToolsHandler
|
|||||||
from crewai.telemetry import Telemetry
|
from crewai.telemetry import Telemetry
|
||||||
from crewai.tools.tool_calling import InstructorToolCalling, ToolCalling
|
from crewai.tools.tool_calling import InstructorToolCalling, ToolCalling
|
||||||
from crewai.utilities import I18N, Converter, ConverterError, Printer
|
from crewai.utilities import I18N, Converter, ConverterError, Printer
|
||||||
import agentops
|
try:
|
||||||
|
import agentops
|
||||||
|
except ImportError:
|
||||||
|
agentops = None
|
||||||
|
|
||||||
OPENAI_BIGGER_MODELS = ["gpt-4"]
|
OPENAI_BIGGER_MODELS = ["gpt-4"]
|
||||||
|
|
||||||
@@ -98,7 +101,7 @@ class ToolUsage:
|
|||||||
tool: BaseTool,
|
tool: BaseTool,
|
||||||
calling: Union[ToolCalling, InstructorToolCalling],
|
calling: Union[ToolCalling, InstructorToolCalling],
|
||||||
) -> None:
|
) -> None:
|
||||||
tool_event = agentops.ToolEvent(name=calling.tool_name)
|
tool_event = agentops.ToolEvent(name=calling.tool_name) if agentops else None
|
||||||
if self._check_tool_repeated_usage(calling=calling):
|
if self._check_tool_repeated_usage(calling=calling):
|
||||||
try:
|
try:
|
||||||
result = self._i18n.errors("task_repeated_usage").format(
|
result = self._i18n.errors("task_repeated_usage").format(
|
||||||
@@ -162,7 +165,8 @@ class ToolUsage:
|
|||||||
self._printer.print(content=f"\n\n{error_message}\n", color="red")
|
self._printer.print(content=f"\n\n{error_message}\n", color="red")
|
||||||
return error
|
return error
|
||||||
self.task.increment_tools_errors()
|
self.task.increment_tools_errors()
|
||||||
agentops.record(agentops.ErrorEvent(details=e, trigger_event=tool_event))
|
if agentops:
|
||||||
|
agentops.record(agentops.ErrorEvent(details=e, trigger_event=tool_event))
|
||||||
return self.use(calling=calling, tool_string=tool_string)
|
return self.use(calling=calling, tool_string=tool_string)
|
||||||
|
|
||||||
if self.tools_handler:
|
if self.tools_handler:
|
||||||
@@ -183,7 +187,8 @@ class ToolUsage:
|
|||||||
)
|
)
|
||||||
|
|
||||||
self._printer.print(content=f"\n\n{result}\n", color="yellow")
|
self._printer.print(content=f"\n\n{result}\n", color="yellow")
|
||||||
agentops.record(tool_event)
|
if agentops:
|
||||||
|
agentops.record(tool_event)
|
||||||
self._telemetry.tool_usage(
|
self._telemetry.tool_usage(
|
||||||
llm=self.function_calling_llm,
|
llm=self.function_calling_llm,
|
||||||
tool_name=tool.name,
|
tool_name=tool.name,
|
||||||
|
|||||||
Reference in New Issue
Block a user