awesome-llm-apps

Awesome List

Shubhamsaboo/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)

Troubleshooting
Why 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.

GitHub Issue #1027
Troubleshooting
Why 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.

GitHub Issue #1155
Troubleshooting
Why 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.

GitHub Issue #1152
Troubleshooting
How 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.

GitHub Issue #1046