Spaces:
Running
Running
File size: 4,949 Bytes
488b328 469017a 9b1a88e 488b328 1c19586 |
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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
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
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()],
allow_delegation=False,
)
@agent
def itinerary_compiler(self) -> Agent:
return Agent(
config=self.agents_config['itinerary_compiler'],
llm=llm,
max_iter=1,
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,
# process=Process.hierarchical, # In case you want to use that instead https://docs.crewai.com/how-to/Hierarchical/
)
@CrewBase
class AddressSummaryCrew():
"""Address Summary crew"""
agents_config = 'config/address_agents.yaml'
tasks_config = 'config/address_tasks.yaml'
@agent
def address_summarizer(self) -> Agent:
return Agent(
config=self.agents_config['address_summarizer'],
llm=llm,
max_iter=1,
allow_delegation=False,
)
@task
def address_compilation_task(self) -> Task:
return Task(
config=self.tasks_config['address_compilation_task'],
llm=llm,
max_iter=1,
agent=self.address_summarizer(),
)
@crew
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
|