AItnerary / app.py
sivan26's picture
Update app.py
3bb3cf2 verified
import gradio as gr
import openai
import os
import pandas as pd
openai.api_key = os.getenv("OPENAI_API_KEY")
def generate_itinerary(prompt):
system_prompt = (
"You are a helpful travel assistant. Given a short travel request, "
"generate a detailed day-by-day itinerary in a clear format.\n\n"
"Requirements:\n"
"- Break down the trip by days (Day 1, Day 2, etc.)\n"
"- Include morning, afternoon, and evening suggestions\n"
"- Be specific but concise\n"
"- Focus on the traveler's stated interests\n"
)
user_prompt = f"Prompt: {prompt}\nItinerary:\n"
try:
response = openai.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
temperature=0.7,
max_tokens=700,
)
content = response.choices[0].message.content.strip()
# Convert newlines to <br> for proper table formatting
return content.replace("\n", "<br>")
except Exception as e:
return f"Error: {e}"
def batch_generate_itineraries(multi_prompt):
lines = [line.strip() for line in multi_prompt.splitlines() if line.strip()]
results = []
for req in lines:
itinerary = generate_itinerary(req)
results.append((req, itinerary))
return results # Returns list of (request, itinerary) tuples
iface = gr.Interface(
fn=batch_generate_itineraries,
inputs=gr.Textbox(
lines=10,
placeholder="Enter one travel request per line\nExample:\n3-day trip to Rome focused on history and food",
label="Multiple Travel Requests"
),
outputs=gr.Dataframe(
headers=["Request", "Generated Itinerary"],
datatype=["str", "html"],
label="Itineraries Table"
),
title="🧳 Batch Travel Itinerary Generator",
description="Paste multiple travel requests (one per line). Get structured GPT-4 itineraries in a table."
)
if __name__ == "__main__":
iface.launch()