prompt-engineer / app.py
justmalhar's picture
Added Initial Version of Prompt Engineer
ec41d2b verified
raw
history blame
2.55 kB
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
)