# AOAI-Prompt-Optimization-Tool The Azure OpenAI Prompt Optimization Tool is an interactive Python application powered by OpenAI's GPT-3 technology and tkinter GUI framework. This tool evaluates user-provided prompts, optimizes them, and provides enhanced responses. It features dynamic input, response presentation, and user-friendly functionalities, all while leveraging the power of AI-driven language optimization. ## Prerequisites An existing Azure OpenAI resource and model deployment of a chat model (e.g. gpt-35-turbo, gpt-4) ## Deploy the tool ### Deploy from your local machine 1. Create an environment variables file `.env` with your API Key, Endpoint, and Deployed Model name. - `AZURE_OPENAI_API_KEY`: your Azure OpenAI resource API key. - `AZURE_OPENAI_API_ENDPOINT`: your Azure OpenAI resource endpoint. - `AZURE_OPENAI_DEPLOYED_MODEL`: your Azure OpenAI deployment name. 2. Run the following command to install all dependencies. ``` pip install -r requirements.txt ``` 3. Run `app.py` file. ## How it works The interface consists of four main elements: - The prompt input text field to write your prompt. - The response output window to see the omptimization recommendation. - The Submit button to send the prompt for AI analysis. - The Clear button to erase the prompt and start over. ![image](https://github.com/ahmedalm1/AOAI-Prompt-Optimization-Tool/assets/88718044/4423f0fc-1c7b-4568-a825-25b212af9718) Once you enter and submit a prompt, the following response will be generated: - Grade: a grade describing how good the prompt is on a scale from 1 to 10. - Reason for Grade: the analysis of the prompts highlighting missing key elements and how to improve it. - Optimized Prompt: an example of an optimized prompt that will achieve the same goal in a more efficient way. ![image](https://github.com/ahmedalm1/AOAI-Prompt-Optimization-Tool/assets/88718044/c7aabc3c-2e40-4af7-8eb7-e420d332290a) ## Optimization criteria The tool analyzes the prompt to determine its optimization level based on several criteria that aim to make the prompt clear, effective, and well-structured for the intended purpose. Below are the criteria used to evaluate whether a prompt is optimized or not: - Clarity: The prompt should be easy to understand without ambiguity. It should convey the desired task or question clearly, so that both human readers and AI models can comprehend it accurately. - Conciseness: An optimized prompt is concise and to the point. Unnecessary or redundant words should be eliminated to ensure efficient communication of the task to the AI model. - Relevance: The prompt should directly relate to the desired output. Irrelevant information can confuse the AI model and result in inaccurate or off-topic responses. - Contextual Information: Including sufficient context in the prompt can help guide the AI model towards the desired response. Relevant details or examples can improve the quality of generated content. - Specificity: A well-optimized prompt is specific about the expected format, details, or structure of the response. Clear instructions can guide the AI model in producing accurate and relevant output. - Language Quality: The language used in the prompt should be grammatically correct, coherent, and free of jargon that might confuse the AI model. Overall, prompt optimization involves balancing these criteria to create a prompt that maximizes the AI model's ability to produce accurate, relevant, and contextually appropriate responses while minimizing the potential for misunderstandings or errors.