mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-01 07:13:00 +00:00
Fixing issues brought about by merge
This commit is contained in:
@@ -6,15 +6,15 @@ from typing import Any, Dict, List, Optional, Tuple, Union
|
|||||||
|
|
||||||
from langchain_core.callbacks import BaseCallbackHandler
|
from langchain_core.callbacks import BaseCallbackHandler
|
||||||
from pydantic import (
|
from pydantic import (
|
||||||
UUID4,
|
UUID4,
|
||||||
BaseModel,
|
BaseModel,
|
||||||
ConfigDict,
|
ConfigDict,
|
||||||
Field,
|
Field,
|
||||||
InstanceOf,
|
InstanceOf,
|
||||||
Json,
|
Json,
|
||||||
PrivateAttr,
|
PrivateAttr,
|
||||||
field_validator,
|
field_validator,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
from pydantic_core import PydanticCustomError
|
from pydantic_core import PydanticCustomError
|
||||||
|
|
||||||
@@ -656,5 +656,27 @@ class Crew(BaseModel):
|
|||||||
)
|
)
|
||||||
self._telemetry.end_crew(self, final_string_output)
|
self._telemetry.end_crew(self, final_string_output)
|
||||||
|
|
||||||
|
def calculate_usage_metrics(self) -> Dict[str, int]:
|
||||||
|
"""Calculates and returns the usage metrics."""
|
||||||
|
total_usage_metrics = {
|
||||||
|
"total_tokens": 0,
|
||||||
|
"prompt_tokens": 0,
|
||||||
|
"completion_tokens": 0,
|
||||||
|
"successful_requests": 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
for agent in self.agents:
|
||||||
|
if hasattr(agent, "_token_process"):
|
||||||
|
token_sum = agent._token_process.get_summary()
|
||||||
|
for key in total_usage_metrics:
|
||||||
|
total_usage_metrics[key] += token_sum.get(key, 0)
|
||||||
|
|
||||||
|
if self.manager_agent and hasattr(self.manager_agent, "_token_process"):
|
||||||
|
token_sum = self.manager_agent._token_process.get_summary()
|
||||||
|
for key in total_usage_metrics:
|
||||||
|
total_usage_metrics[key] += token_sum.get(key, 0)
|
||||||
|
|
||||||
|
return total_usage_metrics
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"Crew(id={self.id}, process={self.process}, number_of_agents={len(self.agents)}, number_of_tasks={len(self.tasks)})"
|
return f"Crew(id={self.id}, process={self.process}, number_of_agents={len(self.agents)}, number_of_tasks={len(self.tasks)})"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Dict, List, Union
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ class CrewOutput(BaseModel):
|
|||||||
# TODO: Ask @joao what is the desired behavior here
|
# TODO: Ask @joao what is the desired behavior here
|
||||||
def result(
|
def result(
|
||||||
self,
|
self,
|
||||||
) -> List[str | BaseModel | Dict[str, Any]]]:
|
) -> List[str | BaseModel | Dict[str, Any]]:
|
||||||
"""Return the result of the task based on the available output."""
|
"""Return the result of the task based on the available output."""
|
||||||
results = [output.result() for output in self.output]
|
results = [output.result() for output in self.output]
|
||||||
return results
|
return results
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ class Task(BaseModel):
|
|||||||
f"The task '{self.description}' has no agent assigned, therefore it can't be executed directly and should be executed in a Crew using a specific process that support that, like hierarchical."
|
f"The task '{self.description}' has no agent assigned, therefore it can't be executed directly and should be executed in a Crew using a specific process that support that, like hierarchical."
|
||||||
)
|
)
|
||||||
|
|
||||||
self._execution_span = self._telemetry.task_started(self)
|
self._execution_span = self._telemetry.task_started(crew=agent.crew, task=self)
|
||||||
|
|
||||||
if self.context:
|
if self.context:
|
||||||
task_outputs: List[TaskOutput] = []
|
task_outputs: List[TaskOutput] = []
|
||||||
|
|||||||
@@ -4,10 +4,6 @@ from unittest import mock
|
|||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from langchain.tools import tool
|
|
||||||
from langchain_core.exceptions import OutputParserException
|
|
||||||
from langchain_openai import ChatOpenAI
|
|
||||||
|
|
||||||
from crewai import Agent, Crew, Task
|
from crewai import Agent, Crew, Task
|
||||||
from crewai.agents.cache import CacheHandler
|
from crewai.agents.cache import CacheHandler
|
||||||
from crewai.agents.executor import CrewAgentExecutor
|
from crewai.agents.executor import CrewAgentExecutor
|
||||||
@@ -15,6 +11,9 @@ from crewai.agents.parser import CrewAgentParser
|
|||||||
from crewai.tools.tool_calling import InstructorToolCalling
|
from crewai.tools.tool_calling import InstructorToolCalling
|
||||||
from crewai.tools.tool_usage import ToolUsage
|
from crewai.tools.tool_usage import ToolUsage
|
||||||
from crewai.utilities import RPMController
|
from crewai.utilities import RPMController
|
||||||
|
from langchain.tools import tool
|
||||||
|
from langchain_core.exceptions import OutputParserException
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
|
|
||||||
|
|
||||||
def test_agent_creation():
|
def test_agent_creation():
|
||||||
@@ -631,8 +630,8 @@ def test_agent_use_specific_tasks_output_as_context(capsys):
|
|||||||
|
|
||||||
crew = Crew(agents=[agent1, agent2], tasks=tasks)
|
crew = Crew(agents=[agent1, agent2], tasks=tasks)
|
||||||
result = crew.kickoff()
|
result = crew.kickoff()
|
||||||
assert "bye" not in result.lower()
|
assert "bye" not in result.raw_output().lower()
|
||||||
assert "hi" in result.lower() or "hello" in result.lower()
|
assert "hi" in result.raw_output().lower() or "hello" in result.raw_output().lower()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||||
@@ -750,7 +749,8 @@ def test_tool_result_as_answer_is_the_final_answer_for_the_agent():
|
|||||||
crew = Crew(agents=[agent1], tasks=tasks)
|
crew = Crew(agents=[agent1], tasks=tasks)
|
||||||
|
|
||||||
result = crew.kickoff()
|
result = crew.kickoff()
|
||||||
assert result == "Howdy!"
|
print("RESULT: ", result.raw_output())
|
||||||
|
assert result.raw_output() == "Howdy!"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.vcr(filter_headers=["authorization"])
|
@pytest.mark.vcr(filter_headers=["authorization"])
|
||||||
|
|||||||
Reference in New Issue
Block a user