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
for proper table formatting return content.replace("\n", "
") 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()