Spaces:
Sleeping
Sleeping
| 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() | |