from langflow.components.crewai.crewai import CrewAIAgentComponent from langflow.components.crewai.hierarchical_crew import HierarchicalCrewComponent from langflow.components.crewai.hierarchical_task import HierarchicalTaskComponent from langflow.components.inputs import ChatInput from langflow.components.models import OpenAIModelComponent from langflow.components.outputs import ChatOutput from langflow.components.prompts import PromptComponent from langflow.components.tools import SearchAPIComponent, YfinanceToolComponent from langflow.graph import Graph def complex_agent_graph(): llm = OpenAIModelComponent(model_name="gpt-4o-mini") manager_llm = OpenAIModelComponent(model_name="gpt-4o") search_api_tool = SearchAPIComponent() yahoo_search_tool = YfinanceToolComponent() dynamic_agent = CrewAIAgentComponent() chat_input = ChatInput() role_prompt = PromptComponent(_display_name="Role Prompt") role_prompt.set( template="""Define a Role that could execute or answer well the user's query. User's query: {query} Role should be two words max. Something like "Researcher" or "Software Developer". """ ) goal_prompt = PromptComponent(_display_name="Goal Prompt") goal_prompt.set( template="""Define the Goal of this Role, given the User's Query. User's query: {query} Role: {role} The goal should be concise and specific. Goal: """, query=chat_input.message_response, role=role_prompt.build_prompt, ) backstory_prompt = PromptComponent(_display_name="Backstory Prompt") backstory_prompt.set( template="""Define a Backstory of this Role and Goal, given the User's Query. User's query: {query} Role: {role} Goal: {goal} The backstory should be specific and well aligned with the rest of the information. Backstory:""", query=chat_input.message_response, role=role_prompt.build_prompt, goal=goal_prompt.build_prompt, ) dynamic_agent.set( tools=[search_api_tool.build_tool, yahoo_search_tool.build_tool], llm=llm.build_model, role=role_prompt.build_prompt, goal=goal_prompt.build_prompt, backstory=backstory_prompt.build_prompt, ) response_prompt = PromptComponent() response_prompt.set( template="""User's query: {query} Respond to the user with as much as information as you can about the topic. Delete if needed. If it is just a general query (e.g a greeting) you can respond them directly.""", query=chat_input.message_response, ) manager_agent = CrewAIAgentComponent() manager_agent.set( llm=manager_llm.build_model, role="Manager", goal="You can answer general questions from the User and may call others for help if needed.", backstory="You are polite and helpful. You've always been a beacon of politeness.", ) task = HierarchicalTaskComponent() task.set( task_description=response_prompt.build_prompt, expected_output="Succinct response that answers the User's query.", ) crew_component = HierarchicalCrewComponent() crew_component.set( tasks=task.build_task, agents=[dynamic_agent.build_output], manager_agent=manager_agent.build_output ) chat_output = ChatOutput() chat_output.set(input_value=crew_component.build_output) return Graph( start=chat_input, end=chat_output, flow_name="Sequential Tasks Agent", description="This Agent runs tasks in a predefined sequence.", )