| # LLM Router & Evaluator-Optimizer Workflow | |
| This project demonstrates a simple, modular workflow for orchestrating multiple LLM tasks using OpenAI's API, with a focus on clarity and extensibility for beginners. | |
| ## Workflow Overview | |
|  | |
| 1. **User Input**: The user provides a request (e.g., a math problem, translation, or text to summarize). | |
| 2. **Router LLM**: A general-purpose LLM analyzes the input and decides which specialized LLM (math, translation, or summarization) should handle it. | |
| 3. **Specialized LLMs**: Each task (math, translation, summarization) is handled by a dedicated prompt to the LLM. | |
| 4. **Evaluator-Optimizer Loop**: | |
| - The solution from the specialized LLM is evaluated by an evaluator LLM. | |
| - If the evaluator deems the solution incorrect or unhelpful, it provides feedback. | |
| - The generator LLM retries with the feedback, up to 3 attempts. | |
| - If accepted, the result is returned to the user. | |
| ## Key Components | |
| - **Router**: Determines the type of task (Math, Translate, Summarize) using a single-word response from the LLM. | |
| - **Specialized LLMs**: Prompts tailored for each task, leveraging OpenAI's chat models. | |
| - **Evaluator-Optimizer**: Uses a Pydantic schema and OpenAI's structured output to validate and refine the solution, ensuring quality and correctness. | |
| ## Technologies Used | |
| - Python 3.8+ | |
| - [OpenAI Python SDK (v1.91.0+)](https://github.com/openai/openai-python) | |
| - [Pydantic](https://docs.pydantic.dev/) | |
| ## Setup | |
| 1. **Install dependencies**: | |
| ```bash | |
| pip install openai pydantic | |
| ``` | |
| 2. **Set your OpenAI API key**: | |
| ```bash | |
| export OPENAI_API_KEY=sk-... | |
| ``` | |
| 3. **Run the script**: | |
| ```bash | |
| python main.py | |
| ``` | |
| ## Example Usage | |
| - **Math**: `calculate 9+2` | |
| - **Translate**: `Translate 'Hello, how are you?' to French.` | |
| - **Summarize**: `Summarize: The cat sat on the mat. It was sunny.` | |
| The router will direct your request to the appropriate LLM, and the evaluator will ensure the answer is correct or provide feedback for improvement. | |
| ## Notes | |
| - The workflow is designed for learning and can be extended with more tasks or more advanced routing/evaluation logic. | |
| - The evaluator uses OpenAI's structured output (with Pydantic) for robust, type-safe validation. | |
| --- | |
| Feel free to experiment and expand this workflow for your own LLM projects! | |