""" LAB 1: What is RAG? โ€” Side-by-Side Comparison ================================================ Plain LLM vs RAG-powered LLM using Abacus.AI RouteLLM. Deploy on HuggingFace Spaces with Gradio. """ import os import gradio as gr from openai import OpenAI # Abacus.AI RouteLLM client (drop-in replacement for OpenAI) client = OpenAI( base_url="https://routellm.abacus.ai/v1", api_key=os.getenv("ABACUS_API_KEY"), ) MODEL = "gpt-4o-mini" # Simulated private knowledge base KNOWLEDGE_BASE = """ PavanCoaching AI Bootcamp starts on June 1, 2025. The fee is โ‚น15,000 for the full course. The course covers Python, ML, LLMs, RAG, and Agents. Instructor: Pavan Kumar. Contact: pavan@pavancoaching.org Batch size is limited to 30 students. """ def plain_llm(question: str) -> str: """Ask the LLM WITHOUT any context.""" try: response = client.chat.completions.create( model=MODEL, messages=[{"role": "user", "content": question}], ) return response.choices[0].message.content except Exception as e: return f"โŒ Error: {e}" def rag_llm(question: str) -> str: """Ask the LLM WITH retrieved context.""" try: response = client.chat.completions.create( model=MODEL, messages=[ { "role": "system", "content": ( "Answer ONLY using the context below.\n" "If the answer is not in the context, say 'I don't know.'\n\n" f"Context:\n{KNOWLEDGE_BASE}" ), }, {"role": "user", "content": question}, ], temperature=0.1, ) return response.choices[0].message.content except Exception as e: return f"โŒ Error: {e}" with gr.Blocks(title="Lab 1: RAG vs Plain LLM", theme=gr.themes.Soft()) as demo: gr.Markdown("## ๐Ÿงช Lab 1: Plain LLM vs RAG-Powered LLM") question = gr.Textbox(label="Your Question", value="When does the AI Bootcamp start?") btn = gr.Button("๐Ÿ” Compare", variant="primary") with gr.Row(): out_plain = gr.Textbox(label="โŒ Plain LLM (no context)", lines=8) out_rag = gr.Textbox(label="โœ… RAG LLM (with context)", lines=8) btn.click(fn=lambda q: (plain_llm(q), rag_llm(q)), inputs=question, outputs=[out_plain, out_rag]) demo.launch()