Spaces:
Running
Running
File size: 4,116 Bytes
488b328 469017a 488b328 9b1a88e 488b328 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
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")
"""
@CrewBase
class SurpriseTravelCrew():
"""SurpriseTravel crew"""
agents_config = 'config/agents.yaml'
tasks_config = 'config/tasks.yaml'
@agent
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
verbose=True,
allow_delegation=False,
)
@agent
def restaurant_scout(self) -> Agent:
return Agent(
config=self.agents_config['restaurant_scout'],
llm=llm,
max_iter=1,
tools=[SerperDevTool(), ScrapeWebsiteTool()],
verbose=True,
allow_delegation=False,
)
@agent
def itinerary_compiler(self) -> Agent:
return Agent(
config=self.agents_config['itinerary_compiler'],
llm=llm,
max_iter=1,
tools=[SerperDevTool()],
verbose=True,
allow_delegation=False,
)
@task
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()
)
@task
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()
)
@task
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
)
@crew
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,
verbose=True,
# process=Process.hierarchical, # In case you want to use that instead https://docs.crewai.com/how-to/Hierarchical/
)
|