Spaces:
Running
Running
from crewai import Agent, Crew, Process, Task, LLM | |
from crewai.project import CrewBase, agent, crew, task | |
# Uncomment the following line to use an example of a custom tool | |
# from surprise_travel.tools.custom_tool import MyCustomTool | |
# Check our tools documentation for more information on how to use them | |
from crewai_tools import SerperDevTool, ScrapeWebsiteTool | |
#from pydantic import BaseModel, Field | |
from typing import List, Optional | |
import os | |
llm = LLM(model="sambanova/Meta-Llama-3.1-70B-Instruct") | |
""" | |
class Activity(BaseModel): | |
name: str = Field(..., description="Name of the activity") | |
location: str = Field(..., description="Location of the activity") | |
description: str = Field(..., description="Description of the activity") | |
date: str = Field(..., description="Date of the activity") | |
cousine: str = Field(..., description="Cousine of the restaurant") | |
why_its_suitable: str = Field(..., description="Why it's suitable for the traveler") | |
reviews: Optional[List[str]] = Field(..., description="List of reviews") | |
rating: Optional[float] = Field(..., description="Rating of the activity") | |
class DayPlan(BaseModel): | |
date: str = Field(..., description="Date of the day") | |
activities: List[Activity] = Field(..., description="List of activities") | |
restaurants: List[str] = Field(..., description="List of restaurants") | |
flight: Optional[str] = Field(None, description="Flight information") | |
class Itinerary(BaseModel): | |
name: str = Field(..., description="Name of the itinerary, something funny") | |
day_plans: List[DayPlan] = Field(..., description="List of day plans") | |
hotel: str = Field(..., description="Hotel information") | |
""" | |
class SurpriseTravelCrew(): | |
"""SurpriseTravel crew""" | |
agents_config = 'config/agents.yaml' | |
tasks_config = 'config/tasks.yaml' | |
def personalized_activity_planner(self) -> Agent: | |
return Agent( | |
config=self.agents_config['personalized_activity_planner'], | |
llm=llm, | |
max_iter=1, | |
tools=[SerperDevTool(), ScrapeWebsiteTool()], # Example of custom tool, loaded at the beginning of file | |
allow_delegation=False, | |
) | |
def restaurant_scout(self) -> Agent: | |
return Agent( | |
config=self.agents_config['restaurant_scout'], | |
llm=llm, | |
max_iter=1, | |
tools=[SerperDevTool(), ScrapeWebsiteTool()], | |
allow_delegation=False, | |
) | |
def itinerary_compiler(self) -> Agent: | |
return Agent( | |
config=self.agents_config['itinerary_compiler'], | |
llm=llm, | |
max_iter=1, | |
allow_delegation=False, | |
) | |
def personalized_activity_planning_task(self) -> Task: | |
return Task( | |
config=self.tasks_config['personalized_activity_planning_task'], | |
llm=llm, | |
max_iter=1, | |
agent=self.personalized_activity_planner() | |
) | |
def restaurant_scenic_location_scout_task(self) -> Task: | |
return Task( | |
config=self.tasks_config['restaurant_scenic_location_scout_task'], | |
llm=llm, | |
max_iter=1, | |
agent=self.restaurant_scout() | |
) | |
def itinerary_compilation_task(self) -> Task: | |
return Task( | |
config=self.tasks_config['itinerary_compilation_task'], | |
llm=llm, | |
max_iter=1, | |
agent=self.itinerary_compiler(), | |
# output_json=Itinerary | |
) | |
def crew(self) -> Crew: | |
"""Creates the SurpriseTravel crew""" | |
return Crew( | |
agents=self.agents, # Automatically created by the @agent decorator | |
tasks=self.tasks, # Automatically created by the @task decorator | |
process=Process.sequential, | |
# process=Process.hierarchical, # In case you want to use that instead https://docs.crewai.com/how-to/Hierarchical/ | |
) | |
class AddressSummaryCrew(): | |
"""Address Summary crew""" | |
agents_config = 'config/address_agents.yaml' | |
tasks_config = 'config/address_tasks.yaml' | |
def address_summarizer(self) -> Agent: | |
return Agent( | |
config=self.agents_config['address_summarizer'], | |
llm=llm, | |
max_iter=1, | |
allow_delegation=False, | |
) | |
def address_compilation_task(self) -> Task: | |
return Task( | |
config=self.tasks_config['address_compilation_task'], | |
llm=llm, | |
max_iter=1, | |
agent=self.address_summarizer(), | |
) | |
def crew(self) -> Crew: | |
"""Creates the AddressSummary crew""" | |
crew = Crew( | |
agents=self.agents, # Automatically created by the @agent decorator | |
tasks=self.tasks, # Automatically created by the @task decorator | |
process=Process.sequential, | |
) | |
return crew | |