Spaces:
Running
Running
| from crewai import Agent | |
| from langflow.base.agents.crewai.crew import convert_llm, convert_tools | |
| from langflow.custom import Component | |
| from langflow.io import BoolInput, DictInput, HandleInput, MultilineInput, Output | |
| class CrewAIAgentComponent(Component): | |
| """Component for creating a CrewAI agent. | |
| This component allows you to create a CrewAI agent with the specified role, goal, backstory, tools, | |
| and language model. | |
| Args: | |
| Component (Component): Base class for all components. | |
| Returns: | |
| Agent: CrewAI agent. | |
| """ | |
| display_name = "CrewAI Agent" | |
| description = "Represents an agent of CrewAI." | |
| documentation: str = "https://docs.crewai.com/how-to/LLM-Connections/" | |
| icon = "CrewAI" | |
| inputs = [ | |
| MultilineInput(name="role", display_name="Role", info="The role of the agent."), | |
| MultilineInput(name="goal", display_name="Goal", info="The objective of the agent."), | |
| MultilineInput(name="backstory", display_name="Backstory", info="The backstory of the agent."), | |
| HandleInput( | |
| name="tools", | |
| display_name="Tools", | |
| input_types=["Tool"], | |
| is_list=True, | |
| info="Tools at agents disposal", | |
| value=[], | |
| ), | |
| HandleInput( | |
| name="llm", | |
| display_name="Language Model", | |
| info="Language model that will run the agent.", | |
| input_types=["LanguageModel"], | |
| ), | |
| BoolInput( | |
| name="memory", | |
| display_name="Memory", | |
| info="Whether the agent should have memory or not", | |
| advanced=True, | |
| value=True, | |
| ), | |
| BoolInput( | |
| name="verbose", | |
| display_name="Verbose", | |
| advanced=True, | |
| value=False, | |
| ), | |
| BoolInput( | |
| name="allow_delegation", | |
| display_name="Allow Delegation", | |
| info="Whether the agent is allowed to delegate tasks to other agents.", | |
| value=True, | |
| ), | |
| BoolInput( | |
| name="allow_code_execution", | |
| display_name="Allow Code Execution", | |
| info="Whether the agent is allowed to execute code.", | |
| value=False, | |
| advanced=True, | |
| ), | |
| DictInput( | |
| name="kwargs", | |
| display_name="kwargs", | |
| info="kwargs of agent.", | |
| is_list=True, | |
| advanced=True, | |
| ), | |
| ] | |
| outputs = [ | |
| Output(display_name="Agent", name="output", method="build_output"), | |
| ] | |
| def build_output(self) -> Agent: | |
| kwargs = self.kwargs or {} | |
| # Define the Agent | |
| agent = Agent( | |
| role=self.role, | |
| goal=self.goal, | |
| backstory=self.backstory, | |
| llm=convert_llm(self.llm), | |
| verbose=self.verbose, | |
| memory=self.memory, | |
| tools=convert_tools(self.tools), | |
| allow_delegation=self.allow_delegation, | |
| allow_code_execution=self.allow_code_execution, | |
| **kwargs, | |
| ) | |
| self.status = repr(agent) | |
| return agent | |