awesome-llm-apps
Awesome ListShubhamsaboo/awesome-llm-apps
Curated collection of 100+ AI agent and RAG application templates.
Overview
A cookbook of ready-to-run templates for AI agents, RAG, multi-agent systems, and voice AI. Each template is self-contained with full source code, tested end-to-end, and runs with three commands. Works with multiple LLM providers and is licensed under Apache-2.0.
README Preview
\n \n \n \n\n\n\n \n \n \n \n \n \n\n\n\n \n Deutsch | \n Español | \n français | \n 日本語 | \n 한국어 | \n Português | \n Русский | \n 中文\n\n\n\n\n\n\n# 🌟 Awesome LLM Apps\n\n100+ AI Agent & RAG apps you can actually run — clone, customize, ship.\nAI Agents · Always-on Agents · Multi-agent Teams · MCP Agents · RAG · Voice Agents · Agent Skills · Fine-tuning\n\n\nFree step-by-step tutorials on Unwind AI\nWorks with Claude · Gemini · OpenAI · xAI · Qwen · Llama\n\n\n\n\n\n\n\n\n\n\n\n 🚀 Quick Start \n 📂 Browse Templates \n 📚 Step-by-Step Tutorials \n\n\n\n \n\n\n\n\n---\n\n## 💡 Why this exists\n\nYou shouldn't have to rebuild the same RAG pipeline, agent loop, or MCP integration from scratch every time you start a new LLM project.\n\n**Awesome LLM Apps is a cookbook of ready-to-run templates** - starter code you can fork, customize, and ship as a production LLM app. Every template here is self-contained with full source code, not collected from elsewhere.\n\n- 🛠️ **Hand-built, not curated** - every template is original work, tested end-to-end before it ships.\n- 🧪 **Runs in 3 commands** - no broken `requirements.txt`, no "figure it out yourself" scaffolding.\n- 🧠 **Covers the modern AI stack** - AI Agents, Always-on Agents, Multi-agent Teams, MCP Agents, Voice AI Agents, RAG, Agent Skills, Fine-tuning.\n- 🌐 **Provider-agnostic** - switch between Claude, Gemini, GPT, Llama, Qwen, xAI and others with a config change.\n- 📚 **Step-by-step tutorials** - every featured template has a free walkthrough on [Unwind AI](https://www.theunwindai.com).\n- 💸 **Apache-2.0** - fork it, ship it, sell it. No paywall, no signup, no telemetry.\n\n> ⭐ **If this saves you time, [star the repo](https://github.com/Shubhamsaboo/awesome-llm-apps/stargazers) - that's how the next developer discovers it.**\n\n## 🚀 Quick Start\n\nRun your first agent in **30 seconds**:\n\n```bash\ngit clone https://github.com/Shubhamsaboo/a
FAQ (4)
TroubleshootingWhy does my Unsloth fine-tuned model break at inference and how to fix SFTTrainer tokenizer setup?
Two fixes are required: (1) Pass the tokenizer explicitly to the trainer: SFTTrainer(model=model, tokenizer=tokenizer, ...) so padding and special tokens from your chat template are handled correctly. Also add data_collator=DataCollatorForSeq2Seq(tokenizer=tokenizer) so the loss is only computed on generated answers, not the prompt. (2) After training, save both the model AND the tokenizer: model.save_pretrained("finetuned_model") and tokenizer.save_pretrained("finetuned_model"). Skipping the tokenizer save loses the applied chat template (e.g., llama-3.1), breaking inference. Also note newer TRL versions use SFTConfig instead of TrainingArguments for the args parameter.
TroubleshootingWhy does FAISS L2 semantic search return no results when using exp(-distance) as similarity score?
exp(-distance) is mathematically invalid for FAISS L2 distances (IndexFlatL2/HNSW-L2/IVF-L2), so real matches fail an 85% threshold and exact matches (distance=0) score 0. Replace it with a proper L2-to-cosine conversion: for normalized embeddings, cosine_similarity = 1 - (distance**2) / 2. This was fixed in PR #1156 (merged 2026-09-14) via a l2_distance_to_cosine_similarity function in beifong/tools/embedding_search.py — update to a version including that PR, or apply the same conversion in your own code before comparing against the similarity threshold.
TroubleshootingWhy does the AI News and Podcast Agents app report success even when the podcast script is empty or missing sections?
This is caused by a boolean logic bug in advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/agents/script_agent.py (lines 129–134). The failure check uses and instead of or, making it dead code:
# Buggy
if not session_state["generated_script"] and not session_state["generated_script"].get("sections"):
With and, when generated_script is valid but has no sections, the first condition is False so the whole check is skipped — incomplete scripts are treated as successful. And when generated_script is None, the second condition can raise AttributeError on .get().
**Fix:** Replace and with or so the failure branch triggers when either the script is missing or it has no sections:
if not session_state.get("generated_script") or not session_state["generated_script"].get("sections"):
return "Failed to generate podcast script."
With or, Python short-circuits safely: if the script is None/empty, the first condition is True and .get() is never called on a bad value.
TroubleshootingHow to fix end-of-life node:20-slim base image in ai-deep-research-agent Dockerfile?
Update the base image in generative_ui_agents/ai-deep-research-agent/Dockerfile from node:20-slim to a currently supported line: node:22-slim, node:24-slim, or node:26-slim. Node 20 reached end-of-life on 2026-04-30 and no longer receives security patches — the June and July 2026 Node security releases fixed HIGH-severity CVEs (e.g. CVE-2026-48933, CVE-2026-48618) only in 22.x/24.x/26.x, leaving EOL lines permanently exposed. Since this Dockerfile is single-stage, the base image is what ships in the final image. Note that Dependabot's docker ecosystem does not alert on EOL bases, so the outdated tag produces no warning — the change must be made manually and rebuilt.