prompt-engineer / app.py
justmalhar's picture
Added Initial Version of Prompt Engineer
ec41d2b verified
import gradio as gr
import os
import time
import asyncio
from agent import PromptEngineer
async def engineer_prompt(input_prompt, api_key, temperature=0.0):
if not api_key:
return "Please provide an API key"
try:
enhancer = PromptEngineer(temperature=temperature, api_key=api_key)
start_time = time.time()
result = await enhancer.enhance_prompt(input_prompt, perform_eval=False)
elapsed_time = time.time() - start_time
return result["advanced_prompt"]
except Exception as e:
return f"Error: {str(e)}"
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# Prompt Engineer
Transform your prompts into powerful, precise instructions using AI-driven optimization
""")
with gr.Row():
with gr.Column(scale=1):
api_key = gr.Textbox(
label="API Key",
placeholder="sk-...",
type="password",
info="Required: Enter your API key"
)
temperature = gr.Slider(
minimum=0.0,
maximum=1.0,
value=0.0,
step=0.1,
label="Temperature",
info="Recommended: Temperature=0.0"
)
with gr.Row():
with gr.Column(scale=1):
input_prompt = gr.Textbox(
lines=10,
placeholder="Enter your prompt here...",
label="Input Prompt",
info="Enter the prompt you want to engineer"
)
with gr.Column(scale=1):
output_prompt = gr.Textbox(
lines=20,
label="Engineered Prompt",
show_copy_button=True,
autoscroll=False,
info="Your engineered prompt will appear here"
)
submit_btn = gr.Button("Engineer Prompt", variant="primary")
submit_btn.click(
fn=engineer_prompt,
inputs=[input_prompt, api_key, temperature],
outputs=output_prompt
)
gr.Markdown("""
### Best Practices
- Be specific and clear in your input prompt
- Use temperature 0.0 for consistent, focused results
- Increase temperature up to 1.0 for more creative variations
- Review and iterate on engineered prompts for optimal results
""")
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=True,
show_error=True
)