import gradio as gr import openai import os import random import json # Set OpenAI API key openai.api_key = os.getenv("OPENAI_API_KEY") def generate_random_turn_data(): """Generates random flight turn data.""" data_points = [] for point in range(10): data_points.append({ "Point": point * 36, "ASI": random.randint(85, 100), # Airspeed Indicator in knots "AI": "level", "Heading": random.randint(0, 359), # Heading in degrees "Turn and Slip": random.choice(["turn needle left", "turn needle right", "centered"]), "Bank Angle": random.choice([-45, -40, -35, 35, 40, 45]), "VSI": random.choice([-100, -50, 0, 50, 100]) # Vertical Speed Indicator in feet per minute }) # Format data for display input_blocks = ["\n".join([f"{key}: {value}" for key, value in point.items()]) for point in data_points] return "\n\n".join(input_blocks) def respond(message, history: list[tuple[str, str]]): """Handles chat responses using OpenAI.""" messages = [{"role": "system", "content": "Evaluate the flight turn data"}] for user_msg, assistant_msg in history: if user_msg: messages.append({"role": "user", "content": user_msg}) if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg}) messages.append({"role": "user", "content": message}) response = openai.chat.completions.create( model="ft:gpt-4o-2024-08-06:personal::BAk7EUnu", messages=messages ) return response.choices[0].message.content def get_random_turn_data(): """Returns randomly generated flight turn data.""" return generate_random_turn_data() demo = gr.ChatInterface(respond) demo = gr.Blocks() with demo: gr.Markdown("# Flight Turn Data Evaluator") with gr.Row(): user_input = gr.Textbox(label="Enter Flight Turn Data or Generate Random Data") with gr.Row(): submit_button = gr.Button("Submit") random_button = gr.Button("Random Generate") with gr.Row(): output_display = gr.Textbox(label="Response", interactive=False) submit_button.click(respond, inputs=[user_input, gr.State([])], outputs=output_display) random_button.click(get_random_turn_data, inputs=[], outputs=user_input) if __name__ == "__main__": demo.launch()