truthtaicom's picture
Upload folder using huggingface_hub
4b0794d verified
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.",
)