Examples
This notebook collects example tool catalogs and example workflow tasks used to demonstrate workflow_auto_assembler in action.
The examples are intentionally synthetic. Their purpose is to show how WAA assembles typed linear workflows from available tool schemas, not to claim broad real-world agent capability.
Example functions
A set of 24 simple mock functions was defined alongside explicit input and output models. Together they form the available tool catalog from which WAA assembles workflows.
class TranslateTextInput(BaseModel):
text: str = Field(..., description="Text to translate.")
target_language: str = Field(..., description="Target language code.")
class TranslateTextOutput(BaseModel):
translated_text: str = Field(..., description="Text translated into the target language.")
def translate_text(inputs: TranslateTextInput) -> TranslateTextOutput:
"""Translate text to another language."""
return TranslateTextOutput(
translated_text=f"Translated({inputs.text}) → {inputs.target_language}"
)
class SummarizeTextInput(BaseModel):
content: str = Field(..., description="Text to summarize.")
class SummarizeTextOutput(BaseModel):
summary: str = Field(..., description="Short summarized version of the content.")
def summarize_text(inputs: SummarizeTextInput) -> SummarizeTextOutput:
"""Summarize long content."""
return SummarizeTextOutput(summary="Short summary...")
class DetectSentimentInput(BaseModel):
text: str
class DetectSentimentOutput(BaseModel):
sentiment: str
score: float
def detect_sentiment(inputs: DetectSentimentInput) -> DetectSentimentOutput:
"""Detect sentiment of given text."""
return DetectSentimentOutput(sentiment="positive", score=0.9)
class ExtractKeywordsInput(BaseModel):
text: str
class ExtractKeywordsOutput(BaseModel):
keywords: List[str]
def extract_keywords(inputs: ExtractKeywordsInput) -> ExtractKeywordsOutput:
"""Extract keywords."""
return ExtractKeywordsOutput(keywords=["keyword1", "keyword2"])
class ConvertUnitsInput(BaseModel):
value: float
from_unit: str
to_unit: str
class ConvertUnitsOutput(BaseModel):
converted_value: float
def convert_units(inputs: ConvertUnitsInput) -> ConvertUnitsOutput:
"""Convert measurement units."""
return ConvertUnitsOutput(converted_value=inputs.value * 1.3)
class CalculateDistanceInput(BaseModel):
lat1: float
lon1: float
lat2: float
lon2: float
class CalculateDistanceOutput(BaseModel):
distance_km: float
def calculate_distance(inputs: CalculateDistanceInput) -> CalculateDistanceOutput:
"""Calculate distance."""
return CalculateDistanceOutput(distance_km=42.0)
class GeneratePlotInput(BaseModel):
data: List[float]
title: str
class GeneratePlotOutput(BaseModel):
image_path: str
def generate_plot(inputs: GeneratePlotInput) -> GeneratePlotOutput:
"""Generate plot."""
return GeneratePlotOutput(image_path="/tmp/plot.png")
class CurrencyExchangeInput(BaseModel):
amount: float
from_currency: str
to_currency: str
class CurrencyExchangeOutput(BaseModel):
converted_amount: float
def currency_exchange(inputs: CurrencyExchangeInput) -> CurrencyExchangeOutput:
"""Convert currencies."""
return CurrencyExchangeOutput(converted_amount=inputs.amount * 1.1)
class StoreFileInput(BaseModel):
filename: str
content: str
class StoreFileOutput(BaseModel):
storage_path: str
def store_file(inputs: StoreFileInput) -> StoreFileOutput:
"""Store file."""
return StoreFileOutput(storage_path=f"/tmp/{inputs.filename}")
class LoadFileInput(BaseModel):
path: str
class LoadFileOutput(BaseModel):
content: str
def load_file(inputs: LoadFileInput) -> LoadFileOutput:
"""Load file from storage."""
return LoadFileOutput(content="Loaded file contents...")
class SendSMSInput(BaseModel):
phone: str
message: str
class SendSMSOutput(BaseModel):
success: bool
def send_sms(inputs: SendSMSInput) -> SendSMSOutput:
"""Send SMS."""
return SendSMSOutput(success=True)
class DetectObjectsInput(BaseModel):
image_path: str
class DetectObjectsOutput(BaseModel):
objects: List[str]
def detect_objects(inputs: DetectObjectsInput) -> DetectObjectsOutput:
"""Detect objects in image."""
return DetectObjectsOutput(objects=["cat", "chair"])
class TranscribeAudioInput(BaseModel):
audio_path: str
class TranscribeAudioOutput(BaseModel):
text: str
def transcribe_audio(inputs: TranscribeAudioInput) -> TranscribeAudioOutput:
"""Transcribe audio file."""
return TranscribeAudioOutput(text="Transcribed text")
class GenerateReportInput(BaseModel):
title: str
body: str
class GenerateReportOutput(BaseModel):
pdf_path: str
def generate_report(inputs: GenerateReportInput) -> GenerateReportOutput:
"""Generate report."""
return GenerateReportOutput(pdf_path="/tmp/report.pdf")
class LookupCoordinatesInput(BaseModel):
city: str
class LookupCoordinatesOutput(BaseModel):
lat: float
lon: float
def lookup_coordinates(inputs: LookupCoordinatesInput) -> LookupCoordinatesOutput:
"""Lookup coordinates."""
return LookupCoordinatesOutput(lat=10.0, lon=20.0)
class CheckAvailabilityInput(BaseModel):
item_id: str
location: str
class CheckAvailabilityOutput(BaseModel):
available: bool
stock: int
def check_availability(inputs: CheckAvailabilityInput) -> CheckAvailabilityOutput:
"""Check stock."""
return CheckAvailabilityOutput(available=True, stock=5)
class CreateOrderInput(BaseModel):
item_id: str
quantity: int
class CreateOrderOutput(BaseModel):
order_id: str
status: str
def create_order(inputs: CreateOrderInput) -> CreateOrderOutput:
"""Create order."""
return CreateOrderOutput(order_id="ORD-001", status="created")
class CheckOrderStatusInput(BaseModel):
order_id: str
class CheckOrderStatusOutput(BaseModel):
status: str
def check_order_status(inputs: CheckOrderStatusInput) -> CheckOrderStatusOutput:
"""Check order status."""
return CheckOrderStatusOutput(status="in progress")
class UploadImageInput(BaseModel):
image_path: str
label: str
class UploadImageOutput(BaseModel):
success: bool
url: str
def upload_image(inputs: UploadImageInput) -> UploadImageOutput:
"""Upload image."""
return UploadImageOutput(success=True, url="http://img.local")
class RewriteTextInput(BaseModel):
text: str
tone: str
class RewriteTextOutput(BaseModel):
rewritten: str
def rewrite_text(inputs: RewriteTextInput) -> RewriteTextOutput:
"""Rewrite text in specified tone."""
return RewriteTextOutput(rewritten=f"{inputs.tone} version of {inputs.text}")
class GetWeatherInput(BaseModel):
city: str = Field(..., description="Name of the city for which weather to be extracted.")
class GetWeatherOutput(BaseModel):
condition: str = Field(..., description="Weather condition in the requested city.")
temperature: float = Field(..., description="Termperature in C in the requested city.")
humidity: float = Field(None, description="Name of the city for which weather to be extracted.")
def get_weather(inputs: GetWeatherInput) -> GetWeatherOutput:
"""Get the current weather for a city from weather forcast api."""
return GetWeatherOutput(
condition = "Sunny",
temperature = 20,
humidity = 0.6
)
class EmailInformationPoint(BaseModel):
title: str = Field(None, description="Few word description of the information.")
content: str = Field(..., description="Content of the information.")
class SendReportEmailInput(BaseModel):
city: str = Field(..., description="Name of the city where report will be send.")
information: list[EmailInformationPoint]
class SendReportEmailOutput(BaseModel):
email_sent: bool = Field(..., description="Conformation that email was send successfully.")
message: str = Field(None, description="Optional comments from the process.")
def send_report_email(inputs: SendReportEmailInput) -> SendReportEmailOutput:
"""Sends a report email with given information points to a city."""
return SendReportEmailOutput(
email_sent = True,
message = "Email sent to city of your choosing!"
)
class QueryDatabaseInput(BaseModel):
topic: str = Field(..., description="Topic of a requested piece of information.")
location: str = Field(None, description="Filter for location name.")
uid: str = Field(None, description="Filter for unique indentifier of the database item.")
class QueryDatabaseOutput(BaseModel):
info: str = Field(..., description="Content of the information.")
uid: str = Field(None, description="Unique indentifier of the database item.")
def query_database(inputs : QueryDatabaseInput) -> QueryDatabaseOutput:
"""Get information from the database with provided filters."""
return QueryDatabaseOutput(
info = "Content extracted from the database for your query is ...",
uid = "0000"
)
class QueryWebInput(BaseModel):
search_input: str = Field(..., description="Topic to be searched on the web.")
class QueryWebOutput(BaseModel):
search_results: List[str] = Field(..., description="List relevant info from search results.")
def query_web(inputs : QueryWebInput) -> QueryWebOutput:
"""Get information from the internet for provided query."""
return QueryWebOutput(
search_results = ["Relevant content found in first search result is ..."],
)
Example tasks
To test schema-first planning, 25 workflow tasks were defined through a description plus target input and output models. These tasks were used during development and can serve as templates for creating new benchmark or demo tasks.
1. Translate to French
class Task1Input(BaseModel):
text: str = Field(..., description="Text to translate.")
target_language: str = Field(..., description="Target language code (e.g., 'fr').")
class Task1Output(BaseModel):
translated_text: str = Field(..., description="Translated text.")
task_specs['task_1'] = {
"description": "Translate a sentence into French.",
"input_model": Task1Input,
"output_model": Task1Output,
}
t1_inputs = [
Task1Input(text=t, target_language=lang)
for t, lang in [
("Hello", "fr"), ("Good morning", "es"), ("How are you?", "de"),
("See you soon", "it"), ("Thank you", "pl"), ("Where is the station?", "ja"),
("Nice to meet you", "ko"), ("I need help", "pt"), ("What time is it?", "ar"),
("Good night", "nl"),
]
]
t1_outputs = [
Task1Output(translated_text=f"Translated({i.text}) → {i.target_language}") for i in t1_inputs
]
2. Summarize Document
class Task2Input(BaseModel):
content: str = Field(..., description="Text to summarize.")
class Task2Output(BaseModel):
summary: str = Field(..., description="Short summary of content.")
task_specs['task_2'] = {
"description": "Summarize a document and return the summary.",
"input_model": Task2Input,
"output_model": Task2Output,
}
t2_inputs = [Task2Input(content=f"Long text example #{i} ...") for i in range(1, 11)]
t2_outputs = [Task2Output(summary="Short summary...") for _ in t2_inputs]
3. Sentiment + Keywords
class Task3Input(BaseModel):
text: str = Field(..., description="Text to analyze.")
class Task3Output(BaseModel):
sentiment: str = Field(..., description="Detected sentiment label.")
score: float = Field(..., description="Confidence score 0-1.")
keywords: List[str] = Field(..., description="Extracted keywords.")
task_specs['task_3'] = {
"description": "Detect sentiment of text and extract keywords.",
"input_model": Task3Input,
"output_model": Task3Output,
}
t3_inputs = [
Task3Input(text=txt) for txt in [
"I love this product!", "This is terrible.", "It's okay, I guess.",
"Absolutely fantastic!", "Very disappointing.", "Mixed feelings overall.",
"Exceeded expectations!", "Not worth the price.", "Pretty decent", "Amazing value!"
]
]
t3_outputs = [
Task3Output(sentiment="positive", score=0.9, keywords=["keyword1", "keyword2"]) for _ in t3_inputs
]
4. Convert Units + SMS
class Task4Input(BaseModel):
value: float = Field(..., description="Numeric value to convert.")
from_unit: str = Field(..., description="Source unit (e.g., 'C').")
to_unit: str = Field(..., description="Target unit (e.g., 'F').")
phone: str = Field(..., description="Phone number to receive SMS.")
class Task4Output(BaseModel):
converted_value: float = Field(..., description="Converted numeric value.")
sms_sent: bool = Field(..., description="Whether SMS was sent.")
task_specs['task_4'] = {
"description": "Convert temperature units and send SMS with results.",
"input_model": Task4Input,
"output_model": Task4Output,
}
t4_inputs = [
Task4Input(value=v, from_unit="C", to_unit="F", phone=f"+15550000{i:02d}")
for i, v in enumerate([0, 5, 10, 12.5, 15, 18, 20, 25, 30, 37], start=1)
]
# convert_units mock = value * 1.3 ; send_sms mock = True
t4_outputs = [
Task4Output(converted_value=round(i.value * 1.3, 6), sms_sent=True) for i in t4_inputs
]
5. Weather Report
class Task5Input(BaseModel):
city: str = Field(..., description="City name.")
report_title: Optional[str] = Field("City Weather Report", description="Title for the report.")
class Task5Output(BaseModel):
report_pdf_path: str = Field(..., description="Path to generated report PDF.")
weather_condition: str = Field(..., description="Weather condition.")
temperature_c: float = Field(..., description="Temperature in Celsius.")
lat: float = Field(..., description="Latitude of city.")
lon: float = Field(..., description="Longitude of city.")
task_specs['task_5'] = {
"description": "Lookup city coordinates, get weather, summarize into a report.",
"input_model": Task5Input,
"output_model": Task5Output,
}
t5_inputs = [
Task5Input(city=c, report_title=f"{c} Weather Report")
for c in ["Paris", "Berlin", "Warsaw", "Tokyo", "Sydney", "New York", "London", "Toronto", "Lisbon", "Rome"]
]
# get_weather mock => Sunny, 20.0 ; lookup_coordinates mock => 10.0, 20.0 ; report path fixed
t5_outputs = [
Task5Output(
report_pdf_path="/tmp/report.pdf",
weather_condition="Sunny",
temperature_c=20.0,
lat=10.0,
lon=20.0,
) for _ in t5_inputs
]
6. DB Query + Translate + Upload
class Task6Input(BaseModel):
topic: str = Field(..., description="Database topic to query.")
target_language: str = Field(..., description="Language code for translation.")
image_path: str = Field(..., description="Path of related image to upload.")
label: str = Field(..., description="Label for the image upload.")
class Task6Output(BaseModel):
translated_info: str = Field(..., description="Translated DB info.")
uid: str = Field(..., description="Database item UID.")
image_url: str = Field(..., description="URL of uploaded image.")
task_specs['task_6'] = {
"description": "Query database, translate results, upload image of related doc.",
"input_model": Task6Input,
"output_model": Task6Output,
}
t6_inputs = [
Task6Input(topic=topic, target_language=lang, image_path=f"/images/{i}.png", label=f"doc-{i}")
for i, (topic, lang) in enumerate([
("birds", "fr"), ("finance", "es"), ("weather", "de"), ("transport", "it"),
("education", "pl"), ("sports", "ja"), ("technology", "ko"), ("health", "pt"),
("energy", "ar"), ("tourism", "nl")
], start=1)
]
# query_database => uid="0000" ; translate_text => "Translated(...)" (but we expose final as paraphrase)
# upload_image => url fixed
t6_outputs = [
Task6Output(
translated_info=f"Translated(Content extracted from the database for your query is ...) → {lang}",
uid="0000",
image_url="http://img.local",
) for _, (_, lang) in enumerate([
("birds", "fr"), ("finance", "es"), ("weather", "de"), ("transport", "it"),
("education", "pl"), ("sports", "ja"), ("technology", "ko"), ("health", "pt"),
("energy", "ar"), ("tourism", "nl")
], start=1)
]
7. Transcribe + Summarize
class Task7Input(BaseModel):
audio_path: str = Field(..., description="Path to meeting audio file.")
class Task7Output(BaseModel):
transcript: str = Field(..., description="Transcribed text.")
summary: str = Field(..., description="Summary of transcript.")
sentiment: str = Field(..., description="Overall sentiment label.")
score: float = Field(..., description="Confidence score 0-1.")
task_specs['task_7'] = {
"description": "Transcribe meeting audio, summarize notes, detect sentiment.",
"input_model": Task7Input,
"output_model": Task7Output,
}
t7_inputs = [Task7Input(audio_path=f"/audio/meeting_{i}.wav") for i in range(1, 11)]
t7_outputs = [
Task7Output(transcript="Transcribed text", summary="Short summary...", sentiment="positive", score=0.9)
for _ in t7_inputs
]
8. Weather + Convert + PDF
class Task8Input(BaseModel):
city: str = Field(..., description="City for weather.")
to_unit: str = Field("F", description="Target unit for temperature (e.g., 'F').")
report_title: Optional[str] = Field("Weather Report", description="Report title.")
class Task8Output(BaseModel):
report_pdf_path: str = Field(..., description="PDF path for report.")
temperature_converted: float = Field(..., description="Converted temperature.")
condition: str = Field(..., description="Weather condition.")
task_specs['task_8'] = {
"description": "Get weather, convert units to Fahrenheit, generate report PDF.",
"input_model": Task8Input,
"output_model": Task8Output,
}
t8_inputs = [
Task8Input(city=c, to_unit="F", report_title=f"{c} Weather Report")
for c in ["Paris", "Berlin", "Warsaw", "Tokyo", "Sydney", "NYC", "London", "Toronto", "Lisbon", "Rome"]
]
# get_weather temp=20 ; convert_units => 20*1.3=26.0 ; report path fixed
t8_outputs = [
Task8Output(report_pdf_path="/tmp/report.pdf", temperature_converted=26.0, condition="Sunny")
for _ in t8_inputs
]
9. Web Search + Rewrite
class Task9Input(BaseModel):
search_input: str = Field(..., description="Web search query.")
tone: str = Field("formal", description="Target tone for rewriting.")
class Task9Output(BaseModel):
keywords: List[str] = Field(..., description="Extracted keywords.")
rewritten: str = Field(..., description="Rewritten text in requested tone.")
sources: List[str] = Field(..., description="List of source snippets/links.")
task_specs['task_9'] = {
"description": "Query web, extract keywords, rewrite text to formal tone.",
"input_model": Task9Input,
"output_model": Task9Output,
}
t9_inputs = [
Task9Input(search_input=q, tone=tone)
for q, tone in [
("latest AI news", "formal"), ("travel tips Japan", "neutral"), ("healthy recipes", "friendly"),
("best running shoes 2025", "concise"), ("python decorators", "technical"),
("sql vs nosql", "balanced"), ("renewable energy facts", "informative"),
("quantum computing basics", "simple"), ("cloud cost optimization", "professional"),
("mlops pipelines", "succinct"),
]
]
# extract_keywords const ; summarize const ; rewrite_text => f"{tone} version of Short summary..."
t9_outputs = [
Task9Output(
keywords=["keyword1", "keyword2"],
rewritten=f"{i.tone} version of {i.search_input}",
sources=["Relevant content found in first search result is ..."],
) for i in t9_inputs
]
10. Image Objects + Email
class Task10Input(BaseModel):
image_path: str = Field(..., description="Path to image file.")
city: str = Field(..., description="City where email should be sent.")
title: Optional[str] = Field("Photo Analysis", description="Email title.")
class Task10Output(BaseModel):
objects: List[str] = Field(..., description="Detected objects in image.")
email_sent: bool = Field(..., description="Whether the email was sent.")
message: Optional[str] = Field(None, description="Email send message.")
task_specs['task_10'] = {
"description": "Detect objects in photo, generate short summary text, send email, leave message.",
"input_model": Task10Input,
"output_model": Task10Output,
}
t10_inputs = [
Task10Input(image_path=f"/img/photo_{i}.jpg", city=c, title="Photo Analysis")
for i, c in enumerate(["Paris","Berlin","Warsaw","Tokyo","Sydney","NYC","London","Toronto","Lisbon","Rome"], 1)
]
t10_outputs = [
Task10Output(objects=["cat", "chair"], email_sent=True, message="Email sent to city of your choosing!")
for _ in t10_inputs
]
11. Distance + Currency + SMS
class Task11Input(BaseModel):
lat1: float
lon1: float
lat2: float
lon2: float
amount: float = Field(..., description="Amount to convert for ticket.")
from_currency: str
to_currency: str
phone: str
class Task11Output(BaseModel):
distance_km: float
converted_amount: float
sms_sent: bool
task_specs['task_11'] = {
"description": "Calculate distance between cities, convert currency for ticket, send SMS.",
"input_model": Task11Input,
"output_model": Task11Output,
}
t11_inputs = [
Task11Input(
lat1=52.2297, lon1=21.0122, lat2=48.8566, lon2=2.3522,
amount=amt, from_currency="USD", to_currency="EUR", phone=f"+1555011{i:02d}"
)
for i, amt in enumerate([10, 20, 35, 50, 75, 100, 125.5, 200, 350, 500], 1)
]
# calculate_distance => 42 ; currency_exchange => amount*1.1 ; sms True
t11_outputs = [
Task11Output(distance_km=42.0, converted_amount=round(i.amount * 1.1, 6), sms_sent=True)
for i in t11_inputs
]
12. Summarize File + Email
class Task12Input(BaseModel):
path: str = Field(..., description="Path of text file to load.")
out_filename: str = Field(..., description="Filename for stored summary.")
city: str = Field(..., description="City where notification email is sent.")
class Task12Output(BaseModel):
stored_path: str = Field(..., description="Path to stored summary file.")
summary: str = Field(..., description="Summary content.")
email_sent: bool = Field(..., description="Whether email was sent.")
task_specs['task_12'] = {
"description": "Load text file, summarize, store summary as new file, email notification.",
"input_model": Task12Input,
"output_model": Task12Output,
}
t12_inputs = [
Task12Input(path=f"/docs/file_{i}.txt", out_filename=f"summary_{i}.txt", city=c)
for i, c in enumerate(["Paris","Berlin","Warsaw","Tokyo","Sydney","NYC","London","Toronto","Lisbon","Rome"], 1)
]
# load_file => content ignored; summarize const; store_file => /tmp/{out_filename}; email True
t12_outputs = [
Task12Output(stored_path=f"/tmp/{i.out_filename}", summary="Short summary...", email_sent=True)
for i in t12_inputs
]
13. DB Stock + Order + Email
class Task13Input(BaseModel):
topic: str = Field(..., description="Topic to query from DB.")
item_id: str = Field(..., description="Item identifier for stock/order.")
quantity: int = Field(..., description="Order quantity.")
location: str = Field(..., description="Stock location.")
city: str = Field(..., description="City for confirmation email.")
class Task13Output(BaseModel):
available: bool
stock: int
order_id: str
status: str
email_sent: bool
task_specs['task_13'] = {
"description": "Query database, check stock availability, create order, confirm email.",
"input_model": Task13Input,
"output_model": Task13Output,
}
t13_inputs = [
Task13Input(
topic=tpc, item_id=f"SKU-{1000+i}", quantity=q, location=loc, city=city
)
for i, (tpc, q, loc, city) in enumerate([
("laptops",1,"WH-A","Paris"), ("monitors",2,"WH-B","Berlin"), ("keyboards",5,"WH-A","Warsaw"),
("mice",3,"WH-C","Tokyo"), ("chairs",1,"WH-D","Sydney"), ("desks",2,"WH-A","NYC"),
("hubs",4,"WH-B","London"), ("cables",10,"WH-C","Toronto"), ("routers",2,"WH-A","Lisbon"),
("ssd",3,"WH-D","Rome")
], 1)
]
# check_availability => available=True, stock=5; create_order => ORD-001, created; email True
t13_outputs = [
Task13Output(available=True, stock=5, order_id="ORD-001", status="created", email_sent=True)
for _ in t13_inputs
]
14. Distance Plot
class Task14Input(BaseModel):
city_a: str = Field(..., description="First city.")
city_b: str = Field(..., description="Second city.")
title: str = Field("Distance Plot", description="Plot title.")
class Task14Output(BaseModel):
distance_km: float
plot_path: str
lat_a: float
lon_a: float
lat_b: float
lon_b: float
task_specs['task_14'] = {
"description": "Lookup coordinates, calculate distance, generate map plot, send to web.",
"input_model": Task14Input,
"output_model": Task14Output,
}
t14_inputs = [
Task14Input(city_a=a, city_b=b, title="Distance Plot")
for a, b in [
("Warsaw","Paris"), ("Berlin","London"), ("Tokyo","Seoul"), ("NYC","Boston"), ("LA","SF"),
("Sydney","Melbourne"), ("Toronto","Montreal"), ("Lisbon","Madrid"), ("Rome","Milan"), ("Prague","Vienna")
]
]
t14_outputs = [
Task14Output(distance_km=42.0, plot_path="/tmp/plot.png",
lat_a=10.0, lon_a=20.0, lat_b=10.0, lon_b=20.0)
for _ in t14_inputs
]
15. Web Sentiment Summary
class Task15Input(BaseModel):
search_input: str = Field(..., description="Query for web search.")
rewrite_tone: str = Field("concise", description="Tone for rewritten text.")
class Task15Output(BaseModel):
summary: str
sentiment: str
score: float
keywords: List[str]
rewritten: str
sources: List[str]
task_specs['task_15'] = {
"description": "Query web, detect sentiment, extract keywords, summarize, rewrite.",
"input_model": Task15Input,
"output_model": Task15Output,
}
t15_inputs = [
Task15Input(search_input=q, rewrite_tone=tone)
for q, tone in [
("compare llms", "concise"), ("fastapi vs flask", "neutral"), ("docker best practices", "professional"),
("kubernetes basics", "simple"), ("vector databases", "technical"), ("retrieval augmented generation", "formal"),
("prompt engineering tips", "friendly"), ("gpu optimization", "succinct"), ("pydantic v2 changes", "informative"),
("langchain vs llamaindex", "balanced"),
]
]
t15_outputs = [
Task15Output(
summary="Short summary...", sentiment="positive", score=0.9,
keywords=["keyword1", "keyword2"],
rewritten=f"{i.rewrite_tone} version of Short summary...",
sources=["Result 1","Result 2"],
)
for i in t15_inputs
]
16. Weather + Audio + Report
class Task16Input(BaseModel):
city: str = Field(..., description="City name.")
audio_path: str = Field(..., description="Path to instructions audio.")
report_title: str = Field("City Ops Report", description="Report title.")
class Task16Output(BaseModel):
pdf_path: str
email_sent: bool
transcript: str
condition: str
temperature_c: float
lat: float
lon: float
task_specs['task_16'] = {
"description": "Get weather, lookup coordinates, transcribe audio instructions, generate report, send email.",
"input_model": Task16Input,
"output_model": Task16Output,
}
t16_inputs = [
Task16Input(city=c, audio_path=f"/audio/instructions_{i}.wav", report_title="City Ops Report")
for i, c in enumerate(["Paris","Berlin","Warsaw","Tokyo","Sydney","NYC","London","Toronto","Lisbon","Rome"], 1)
]
t16_outputs = [
Task16Output(pdf_path="/tmp/report.pdf", email_sent=True, transcript="Transcribed text",
condition="Sunny", temperature_c=20.0, lat=10.0, lon=20.0)
for _ in t16_inputs
]
17. DB + Distance + Report
class Task17Input(BaseModel):
topic: str = Field(..., description="DB topic to query.")
lat1: float
lon1: float
lat2: float
lon2: float
image_path: str
label: str
phone: str
report_title: str = Field("DB+Distance Report", description="Report title.")
class Task17Output(BaseModel):
report_pdf_path: str
image_url: str
distance_km: float
sms_sent: bool
uid: str
task_specs['task_17'] = {
"description": "Query database, calculate distance, generate PDF report, upload image, send SMS results.",
"input_model": Task17Input,
"output_model": Task17Output,
}
t17_inputs = [
Task17Input(
topic="infrastructure",
lat1=52.2297, lon1=21.0122, lat2=48.8566, lon2=2.3522,
image_path=f"/img/{i}.png", label=f"case-{i}", phone=f"+1555017{i:02d}",
report_title="DB+Distance Report"
)
for i in range(1, 11)
]
t17_outputs = [
Task17Output(report_pdf_path="/tmp/report.pdf", image_url="http://img.local",
distance_km=42.0, sms_sent=True, uid="0000")
for _ in t17_inputs
]
18. Call Summary + Order
class Task18Input(BaseModel):
audio_path: str
item_id: str
quantity: int
city: str = Field(..., description="City for email notification.")
out_filename: str = Field("call_summary.txt", description="Filename to store summary.")
class Task18Output(BaseModel):
transcript: str
sentiment: str
score: float
stored_path: str
order_id: str
order_status: str
email_sent: bool
task_specs['task_18'] = {
"description": "Transcribe call audio, detect sentiment, store summary, create order, check status, send email.",
"input_model": Task18Input,
"output_model": Task18Output,
}
t18_inputs = [
Task18Input(
audio_path=f"/audio/call_{i}.wav", item_id=f"SKU-{2000+i}", quantity=(i % 5) + 1,
city=c, out_filename=f"call_summary_{i}.txt"
)
for i, c in enumerate(["Paris","Berlin","Warsaw","Tokyo","Sydney","NYC","London","Toronto","Lisbon","Rome"], 1)
]
t18_outputs = [
Task18Output(transcript="Transcribed text", sentiment="positive", score=0.9,
stored_path=f"/tmp/{i.out_filename}", order_id="ORD-001",
order_status="in progress", email_sent=True)
for i in t18_inputs
]
19. Web Summary + Report
class Task19Input(BaseModel):
search_input: str
rewrite_tone: str = Field("formal", description="Tone for rewritten copy.")
amount: float
from_currency: str
to_currency: str
report_title: str = Field("Web Findings Report", description="Report title.")
phone: str
class Task19Output(BaseModel):
report_pdf_path: str
rewritten: str
converted_amount: float
summary: str
sms_sent: bool
sources: List[str]
task_specs['task_19'] = {
"description": "Query web, summarize results, rewrite text, convert currency estimate, generate report, send SMS.",
"input_model": Task19Input,
"output_model": Task19Output,
}
t19_inputs = [
Task19Input(
search_input=q, rewrite_tone="formal", amount=amt,
from_currency="USD", to_currency="EUR", report_title="Web Findings Report", phone=f"+1555019{i:02d}"
)
for i, (q, amt) in enumerate([
("ai news",10), ("best laptops",25), ("learn python",50), ("k8s tutorial",75), ("docker tips",100),
("mlops guide",125), ("git workflows",150), ("fastapi examples",200), ("sql tuning",300), ("cloud costs",500)
], 1)
]
t19_outputs = [
Task19Output(
report_pdf_path="/tmp/report.pdf", rewritten="formal version of Short summary...",
converted_amount=round(i.amount * 1.1, 6), summary="Short summary...", sms_sent=True,
sources=["Result 1","Result 2"]
)
for i in t19_inputs
]
20. Full Pipeline Showcase
class Task20Input(BaseModel):
db_topic: str = Field(..., description="Topic for DB query.")
web_query: str = Field(..., description="Query for web search.")
city: str = Field(..., description="City for weather and email.")
units_to: str = Field("F", description="Target unit for temperature.")
lat1: float
lon1: float
lat2: float
lon2: float
plot_title: str = Field("Route Distance", description="Plot title.")
file_name: str = Field("summary.txt", description="Filename for stored summary.")
image_path: str
image_label: str
item_id: str
quantity: int
phone: str
report_title: str = Field("Comprehensive Report", description="Report title.")
rewrite_tone: str = Field("professional", description="Tone for rewritten text.")
class Task20Output(BaseModel):
keywords: List[str]
summary: str
sentiment: str
score: float
rewritten: str
lat: float
lon: float
condition: str
temperature_converted: float
distance_km: float
plot_path: str
report_pdf_path: str
stored_path: str
loaded_content: str
image_url: str
order_id: str
order_status: str
sms_sent: bool
email_sent: bool
db_uid: str
task_specs['task_20'] = {
"description": (
"Query database → query web → extract keywords → summarize → detect sentiment → rewrite → "
"lookup coordinates → get weather → convert units → calculate distance → create plot → generate "
"report → store file → load file → upload image → create order → check status → send SMS → "
"send email → save summary to DB."
),
"input_model": Task20Input,
"output_model": Task20Output,
}
t20_inputs = [
Task20Input(
db_topic="urban planning",
web_query=f"transport trends {2020+i}",
city=c,
units_to="F",
lat1=52.2297, lon1=21.0122, lat2=48.8566, lon2=2.3522,
plot_title="Route Distance",
file_name=f"summary_{i}.txt",
image_path=f"/img/mega_{i}.png",
image_label=f"mega-{i}",
item_id=f"SKU-MEGA-{i}",
quantity=(i % 5) + 1,
phone=f"+1555020{i:02d}",
report_title="Comprehensive Report",
rewrite_tone="professional",
)
for i, c in enumerate(["Paris","Berlin","Warsaw","Tokyo","Sydney","NYC","London","Toronto","Lisbon","Rome"], 1)
]
t20_outputs = [
Task20Output(
keywords=["keyword1","keyword2"], summary="Short summary...", sentiment="positive", score=0.9,
rewritten="professional version of Short summary...", lat=10.0, lon=20.0, condition="Sunny",
temperature_converted=26.0, distance_km=42.0, plot_path="/tmp/plot.png",
report_pdf_path="/tmp/report.pdf", stored_path=f"/tmp/{i.file_name}",
loaded_content="Loaded file contents...", image_url="http://img.local",
order_id="ORD-001", order_status="in progress", sms_sent=True, email_sent=True, db_uid="0000"
)
for i in t20_inputs
]
Note: Tasks 21–25 are examples that should not work with the provided example tools list.
21. DB Summary + Notify
class Task21Input(BaseModel):
db_topic: str = Field(..., description="Topic for DB query.")
phone: str = Field(..., description="Phone number to notify.")
report_title: str = Field("Summary Report", description="Report title.")
city: str = Field("Berlin", description="City for report email.")
class Task21Output(BaseModel):
summary: str
sms_sent: bool
email_sent: bool
db_uid: str
db_write_uid: str
task_specs['task_21'] = {
"description": (
"Query database -> summarize -> send SMS -> send email -> save summary to DB."
),
"input_model": Task21Input,
"output_model": Task21Output,
}
t21_inputs = [
Task21Input(db_topic=f"topic-{i}", phone=f"+1555000{i:02d}")
for i in range(1, 6)
]
t21_outputs = [
Task21Output(
summary="Short summary...",
sms_sent=True,
email_sent=True,
db_uid="0000",
db_write_uid="WRITE-0000",
) for _ in t21_inputs
]
22. OCR Image
class Task22Input(BaseModel):
image_path: str
label: str
class Task22Output(BaseModel):
ocr_text: str
image_url: str
task_specs['task_22'] = {
"description": (
"Upload image -> extract text from image (OCR)."
),
"input_model": Task22Input,
"output_model": Task22Output,
}
t22_inputs = [
Task22Input(image_path=f"/img/doc_{i}.png", label=f"doc-{i}")
for i in range(1, 6)
]
t22_outputs = [
Task22Output(
ocr_text="Detected text...",
image_url="http://img.local",
) for _ in t22_inputs
]
23. Embedding + Index
class Task23Input(BaseModel):
text: str
top_k: int = Field(5, description="Number of nearest neighbors.")
class Task23Output(BaseModel):
embedding: List[float]
index_id: str
task_specs['task_23'] = {
"description": (
"Generate embedding -> store in vector index -> return index id."
),
"input_model": Task23Input,
"output_model": Task23Output,
}
t23_inputs = [
Task23Input(text=f"sample text {i}")
for i in range(1, 6)
]
t23_outputs = [
Task23Output(
embedding=[0.1, 0.2, 0.3],
index_id="vec-0000",
) for _ in t23_inputs
]
24. Contract Compliance
class Task24Input(BaseModel):
contract_text: str
region: str = Field("EU", description="Compliance region.")
class Task24Output(BaseModel):
compliance_report: str
risk_score: float
task_specs['task_24'] = {
"description": (
"Analyze contract -> run compliance check -> return report and risk score."
),
"input_model": Task24Input,
"output_model": Task24Output,
}
t24_inputs = [
Task24Input(contract_text=f"contract text {i}")
for i in range(1, 6)
]
t24_outputs = [
Task24Output(
compliance_report="No issues found.",
risk_score=0.1,
) for _ in t24_inputs
]
25. Crypto Transfer
class Task25Input(BaseModel):
wallet_from: str
wallet_to: str
amount: float
class Task25Output(BaseModel):
tx_hash: str
receipt_url: str
task_specs['task_25'] = {
"description": (
"Transfer crypto -> return transaction hash and receipt URL."
),
"input_model": Task25Input,
"output_model": Task25Output,
}
t25_inputs = [
Task25Input(wallet_from=f"0xFROM{i}", wallet_to=f"0xTO{i}", amount=1.5 + i)
for i in range(1, 6)
]
t25_outputs = [
Task25Output(
tx_hash="0xHASH",
receipt_url="http://chain.local/tx/0xHASH",
) for _ in t25_inputs
]