Spaces:
Running
Running
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
| <title>AI Descriptor Agent</title> | |
| <script type="module" crossorigin src="https://gradio-lite-previews.s3.amazonaws.com/PINNED_HF_HUB/dist/lite.js"></script> | |
| <link rel="stylesheet" href="https://gradio-lite-previews.s3.amazonaws.com/PINNED_HF_HUB/dist/lite.css" /> | |
| <style> | |
| body { | |
| background-color: #0f172a; | |
| color: #f8fafc; | |
| font-family: 'Inter', system-ui, -apple-system, sans-serif; | |
| margin: 0; | |
| padding: 20px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <gradio-lite theme="dark"> | |
| <gradio-requirements> | |
| openai==1.39.0 | |
| </gradio-requirements> | |
| <gradio-file name="app.py" entrypoint> | |
| import gradio as gr | |
| from openai import OpenAI | |
| def run_descriptor_agent(openai_key, user_prompt): | |
| if not openai_key: | |
| return "Please enter your OpenAI API Key first!" | |
| try: | |
| # Initialize the OpenAI client inside the browser environment | |
| client = OpenAI(api_key=openai_key) | |
| # Simple agent descriptor call | |
| response = client.chat.completions.create( | |
| model="gpt-4o-mini", | |
| messages=[ | |
| {"role": "system", "content": "You are a professional AI Descriptor agent. Provide structured, clear summaries and descriptions based on user requests."}, | |
| {"role": "user", "content": user_prompt} | |
| ] | |
| ) | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| # Define the Gradio UI | |
| with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="indigo")) as demo: | |
| gr.Markdown("# 🤖 AI Descriptor Agent") | |
| gr.Markdown("This runs entirely in your browser. Your OpenAI key is safe and is not stored anywhere on Hugging Face.") | |
| with gr.Row(): | |
| key_input = gr.Textbox( | |
| label="1. Enter your OpenAI API Key", | |
| placeholder="sk-proj-...", | |
| type="password" | |
| ) | |
| with gr.Row(): | |
| prompt_input = gr.Textbox( | |
| label="2. Ask the Agent anything", | |
| placeholder="Describe what you want me to analyze..." | |
| ) | |
| submit_btn = gr.Button("Run Agent", variant="primary") | |
| output_text = gr.Textbox(label="Agent Response", interactive=False) | |
| submit_btn.click( | |
| fn=run_descriptor_agent, | |
| inputs=[key_input, prompt_input], | |
| outputs=output_text | |
| ) | |
| demo.launch() | |
| </gradio-file> | |
| </gradio-lite> | |
| </body> | |
| </html> |