feat: fixes issue on instantiating the ChatOpenAI on the crew

This commit is contained in:
Eduardo Chiarotti
2024-07-25 11:43:55 -03:00
parent 562b0d7d1e
commit ddcefe1364
3 changed files with 11 additions and 7 deletions

View File

@@ -6,7 +6,6 @@ from hashlib import md5
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from langchain_core.callbacks import BaseCallbackHandler from langchain_core.callbacks import BaseCallbackHandler
from langchain_openai import ChatOpenAI
from pydantic import ( from pydantic import (
UUID4, UUID4,
BaseModel, BaseModel,
@@ -156,7 +155,7 @@ class Crew(BaseModel):
description="Plan the crew execution and add the plan to the crew.", description="Plan the crew execution and add the plan to the crew.",
) )
planning_llm: Optional[Any] = Field( planning_llm: Optional[Any] = Field(
default=ChatOpenAI(model="gpt-4o-mini"), default=None,
description="Language model that will run the AgentPlanner if planning is True.", description="Language model that will run the AgentPlanner if planning is True.",
) )
task_execution_output_json_files: Optional[List[str]] = Field( task_execution_output_json_files: Optional[List[str]] = Field(

View File

@@ -1,5 +1,6 @@
from typing import Any, List from typing import Any, List, Optional
from langchain_openai import ChatOpenAI
from pydantic import BaseModel from pydantic import BaseModel
from crewai.agent import Agent from crewai.agent import Agent
@@ -11,9 +12,13 @@ class PlannerTaskPydanticOutput(BaseModel):
class CrewPlanner: class CrewPlanner:
def __init__(self, tasks: List[Task], planning_agent_llm: Any): def __init__(self, tasks: List[Task], planning_agent_llm: Optional[Any] = None):
self.tasks = tasks self.tasks = tasks
self.planning_agent_llm = planning_agent_llm
if planning_agent_llm is None:
self.planning_agent_llm = ChatOpenAI(model="gpt-4o-mini")
else:
self.planning_agent_llm = planning_agent_llm
def _handle_crew_planning(self) -> PlannerTaskPydanticOutput: def _handle_crew_planning(self) -> PlannerTaskPydanticOutput:
"""Handles the Crew planning by creating detailed step-by-step plans for each task.""" """Handles the Crew planning by creating detailed step-by-step plans for each task."""

View File

@@ -1,10 +1,10 @@
from unittest.mock import patch from unittest.mock import patch
from crewai.tasks.task_output import TaskOutput
import pytest import pytest
from crewai.agent import Agent from crewai.agent import Agent
from crewai.task import Task from crewai.task import Task
from crewai.tasks.task_output import TaskOutput
from crewai.utilities.planning_handler import CrewPlanner, PlannerTaskPydanticOutput from crewai.utilities.planning_handler import CrewPlanner, PlannerTaskPydanticOutput
@@ -28,7 +28,7 @@ class TestCrewPlanner:
agent=Agent(role="Agent 3", goal="Goal 3", backstory="Backstory 3"), agent=Agent(role="Agent 3", goal="Goal 3", backstory="Backstory 3"),
), ),
] ]
return CrewPlanner(tasks) return CrewPlanner(tasks, None)
def test_handle_crew_planning(self, crew_planner): def test_handle_crew_planning(self, crew_planner):
with patch.object(Task, "execute_sync") as execute: with patch.object(Task, "execute_sync") as execute: