Module: ماژول ۰۶ — پروژه‌های API و RAG (API & RAG Projects)

Part 1: Video Scenario & Screen Actions

  1. [Camera on Host] Hook and intro: Contrast using someone else’s chat UI (like ChatGPT’s website) with building your own AI applications via APIs and teaching AI your private company documents using RAG.
  2. [Show Slide 1 / README Overview] Display the module title “ماژول ۰۶: پروژه‌های API و RAG — قدرت هوش مصنوعی برنامه‌ریزی شده” and the API Providers comparison table (OpenAI GPT-4o, OpenAI GPT-4o-mini, Anthropic Claude 3.5 Sonnet, Google Gemini 1.5 Pro, and Ollama / Llama-3).
  3. [Show Slide 2 / Essential API Concepts] Display the Web API client-server diagram and highlight the 5 core API concepts: 1. API Key (sk-proj-...) & the critical .env / GitHub security warning, 2. Endpoint (https://api.openai.com/v1/chat/completions), 3. JSON format, 4. Input vs. Output Tokens pricing, and 5. Temperature (0.0 vs. 0.8).
  4. [Screen Record] Live Coding Demo—Calling OpenAI & Anthropic APIs in Python: Open VS Code and terminal, run pip install openai anthropic python-dotenv, show the .env file, and run the Python scripts for gpt-4o-mini (sarcastic coding tutor system prompt) and claude-3-5-sonnet-20240620 (expert proofreader).
  5. [Show Slide 3 / Why We Need RAG] Explain the company refund/leave policy problem: why standard LLMs hallucinate private company policies and why retraining a model from scratch costs millions of dollars, introducing RAG (Retrieval-Augmented Generation) as an “open-book exam.”
  6. [Show Slide 4 / RAG Phase 1: Ingestion] Display the RAG Schema and Vector Database diagrams, walking through Phase 1 step by step: 1. Document Loading (100-page HR PDF), 2. Chunking (500-word segments), 3. Embedding (text-embedding-3-small converting meaning into numerical vectors where “سگ” and “توله‌سگ” are close together), and 4. Storing vectors in a Vector Database (ChromaDB, Pinecone, or Qdrant).
  7. [Show Slide 5 / RAG Phase 2: Retrieval & Generation + Chunking Strategies] Walk through Phase 2: 1. User Query (“من چند روز مرخصی دارم؟”), 2. Query Embedding, 3. Cosine Similarity semantic search to fetch the top 3 paragraphs, 4. Augmented System Prompt (“فقط با استفاده از متن ارائه شده پاسخ بده”), and 5. LLM Generation. Compare Naive vs. Sentence-based vs. Semantic chunking.
  8. [Screen Record] Live Coding Demo—Complete RAG Pipeline in Python (LangChain + Chroma): Walk line-by-line through the 7-step Python script (TextLoader("company_policy.txt"), CharacterTextSplitter(chunk_size=500, chunk_overlap=50), OpenAIEmbeddings, Chroma.from_documents, retriever.invoke, and grounded ChatOpenAI response).
  9. [Show Slide 6 / No-Code RAG Alternatives & GraphRAG] Showcase visual no-code/low-code RAG builders: Flowise / LangFlow (drag-and-drop nodes), Dify.ai, and Custom GPTs, plus the advanced GraphRAG architecture diagram.
  10. [Show Slide 7 / Production Cost Management & Common Pitfalls] Highlight production best practices (Redis langchain-cache, stream=True for real-time typing UI, response_format={"type": "json_object"} / Pydantic Structured Outputs) and the 3 major traps: Blind trust in RAG retrieval, the “Lost in the Middle” phenomenon, and runaway infinite loops in autonomous Agents without max_iterations.
  11. [Camera on Host] Outro and call to action: Recap the API and RAG journey, encourage viewers to run the 30-line ChromaDB script on one of their own text files, remind them to like and subscribe, and tease Module 07 (Image & Video Generation).

Part 2: Teleprompter Transcript (Persian)

[Action 1] سلام رفقا! تا اینجای دوره، ما بیشتر «مشتری» رابط‌های کاربری بقیه بودیم؛ یعنی می‌رفتیم توی سایت چت‌جی‌پی‌تی یا کلود و باهاشون چت می‌کردیم. اما قدرت واقعی زمانی دست شماست که هوش مصنوعی رو بیارین داخل نرم‌افزار، وب‌سایت یا بات تلگرام اختصاصی خودتون و کاری کنین که از روی اسناد و PDFهای خصوصی شرکت شما جواب کاربرا رو بده! توی ماژول ششم می‌خوایم پرونده API و یکی از پول‌سازترین و مهم‌ترین معماری‌های مهندسی هوش مصنوعی امروز یعنی RAG رو به ساده‌ترین زبان ممکن باز کنیم.

[Action 2] همون‌طور که توی جدول مقایسه ارائه‌دهنده‌های API می‌بینین، وقتی می‌خواین محصول بسازین، انتخاب مدل مستقیم به جیب و کاربرد شما ربط داره:
مدل GPT-4o استادِ استدلال، چندوجهی بودن و صدا زدن ابزارها (Function Calling)ئه، ولی برای حجم بالا گرون درمی‌آد. در عوض برادر کوچیک‌ترش یعنی GPT-4o-mini فوق‌العاده سریع و ارزونه و خوراکِ کارهای پرتکرار مثل دسته‌بندی نظراته. Claude 3.5 Sonnet برای تولید کد و متن‌های ظریف انسانی بی‌رقیبه، Gemini 1.5 Pro با پنجره ۲ میلیون توکنی خوراکِ تحلیل اسناد غول‌پیکره، و Ollama / Llama-3 هم برای محیط‌های بانکی و پزشکی که داده نباید از سرور خارج بشه، ۱۰۰ درصد رایگان و محلی کار می‌کنه.

[Action 3] اما قبل از اینکه بریم سراغ کد پایتون، توی اسلاید دوم ۵ تا مفهوم پایه API رو مرور کنیم که اولیش یه هشدار امنیتی ۵۰ هزار دلاریه:
۱. کلید API (API Key): یه رشته طولانی مثل sk-proj-12345ئه که همزمان حکم نام کاربری و رمز حساب بانکی شما رو داره. تو رو خدا، تحت هیچ شرایطی کلید API رو مستقیم داخل کدتون نذارین و روی GitHub عمومی پوش نکنین! بات‌های هکر ۲۴ ساعته گیت‌هاب رو اسکن می‌کنن و اگه کلیدتون لو بره، تا صبح یه قبض ۵۰ هزار دلاری رو دستتون می‌ذارن که با هیچ وام ازدواجی هم نمی‌شه تسویه‌اش کرد! همیشه کلیدها رو داخل فایل .env روی سیستم خودتون نگه دارین.
۲. نقطه پایانی (Endpoint): آدرس URL مشخصی که درخواست رو بهش می‌فرستین.
۳. قالب JSON: زبان استاندارد رد و بدل کردن کلیدها و مقادیر با سرور.
۴. توکن‌ها: که یادتون باشه همیشه توکن‌های خروجی (تولید متن توسط مدل) گرون‌تر از توکن‌های ورودی (خواندن متن شما) محاسبه می‌شن.
۵. و دما (Temperature): که روی 0.0 جواب‌های کاملاً دقیق و قطعی برای کد و استخراج داده می‌ده و روی 0.8 خلاقیت رو می‌بره بالا.

[Action 4] حالا بریم روی صفحه و ببینیم صدا زدن API توی پایتون چقدر راحته!
اول با دستور pip install openai python-dotenv کتابخونه رو نصب می‌کنیم. بعد با load_dotenv() کلیدمون رو به صورت امن از فایل .env می‌خونیم. حالا توی متد client.chat.completions.create اسم مدل (gpt-4o-mini)، دما و لیست پیام‌ها رو می‌دیم: یه پیام با نقش system که شخصیت هوش مصنوعی رو تعیین می‌کنه (مثلاً «تو یک معلم کدنویسی شوخ‌طبع و کنایه‌زن هستی») و یه پیام با نقش user که سوال کاربره! برای کلود هم با کتابخونه anthropic و متد client.messages.create دقیقاً به همین تمیزی و در کمتر از ۱۵ خط کد جواب می‌گیریم.

[Action 5] حالا برسیم به قلب تپنده این ماژول در اسلاید سوم: چرا به سیستم RAG (Retrieval-Augmented Generation) نیاز داریم؟
فرض کنین از چت‌جی‌پی‌تی بپرسین: «سیاست بازپرداخت وجه یا مرخصی شرکت ما چیه؟» خب معلومه که نمی‌دونه! چون دفترچه راهنمای داخلی شرکت شما رو نخونده، و اگه ازش بپرسین، شروع می‌کنه به توهم زدن و قانون اختراع کردن. از طرفی ما که نمی‌تونیم هر بار آیین‌نامه شرکت عوض شد، میلیون‌ها دلار خرج کنیم و یه مدل زبانی رو از صفر آموزش بدیم!
راه‌حل هوشمندانه RAG (تولید تقویت‌شده با بازیابی) اینه: به جای اینکه مغز هوش مصنوعی رو جراحی کنیم، موقع جواب دادن یه «کتاب باز» می‌ذاریم جلوش و می‌گیم فقط از روی همین صفحه‌ها جواب بده!

[Action 6] بیاین توی اسلاید چهارم، فاز اول معماری RAG یعنی جذب داده‌ها (Ingestion) رو قدم‌به‌قدم ببینیم:
قدم اول: فایل PDF صدصفحه‌ای آیین‌نامه شرکت رو بارگذاری می‌کنیم.
قدم دوم (خرد کردن یا Chunking): چون نمی‌شه هر بار کل ۱۰۰ صفحه رو فرستاد، متن رو به قطعات کوچیکِ مثلاً ۵۰۰ کلمه‌ای تقسیم می‌کنیم.
قدم سوم (امبدینگ یا Embedding): هر قطعه ۵۰۰ کلمه‌ای رو می‌فرستیم سراغ یه مدل Embedding (مثل text-embedding-3-small). این مدل معنای اون پاراگراف رو تبدیل می‌کنه به یه لیست طولانی از اعداد اعشاری که بهش می‌گن بردار (Vector). برای اینکه حسش رو بگیرین، فرض کنین کلمات رو بردیم روی یه نقشه مختصات ریاضی؛ کلمه «سگ» و «توله‌سگ» چون معناشون نزدیکه، دقیقاً بغل هم قرار می‌گیرن، ولی «سگ» و «سفینه فضایی» کیلومترها از هم دور می‌شن!
و قدم چهارم: این بردارهای عددی رو ذخیره می‌کنیم توی یک پایگاه داده برداری (Vector Database) مثل ChromaDB، Pinecone یا Qdrant.

[Action 7] حالا توی اسلاید پنجم ببینیم وقتی کاربر سوال می‌پرسه، توی فاز دوم (بازیابی و تولید) چه اتفاقی می‌افته:
۱. کاربر می‌پرسه: «من چند روز مرخصی دارم؟»
۲. سیستم RAG سوال کاربر رو هم با همون مدل Embedding تبدیل به بردار می‌کنه.
۳. با یه جستجوی معنایی ریاضی (Cosine Similarity)، توی دیتابیس برداری می‌گرده و ۳ تا پاراگرافی که از نظر معنایی نزدیک‌ترین فاصله رو با سوال کاربر دارن پیدا می‌کنه.
۴. حالا پشت صحنه یه پرامپت ترکیبی می‌سازه: اون ۳ تا پاراگراف رو می‌چسبونه توی پرامپت و به مدل زبانی می‌گه: «فقط و فقط با استفاده از این متن به سوال کاربر جواب بده.»
۵. و مدل زبانی جواب دقیق و انسانی رو تحویل می‌ده!
فقط یه نکته ظریف درباره استراتژی برش متن (Chunking): هیچ‌وقت متن رو کورکورانه سرِ هر ۵۰۰ کاراکتر قیچی نکنین (برش ساده یا Naive)، چون ممکنه یه جمله مهم از وسط نصف بشه و معناش بپره! همیشه از برش بر اساس جمله (با LangChain) یا برش معنایی استفاده کنین.

[Action 8] حالا بریم سراغ کد پایتون روی صفحه و کل این سیستم RAG رو با LangChain و دیتابیس محلی Chroma توی ۳۰ خط کد اجرا کنیم!
ببینین چقدر سرراسته:
۱. با TextLoader فایل company_policy.txt رو لود می‌کنیم.
۲. با CharacterTextSplitter متن رو به قطعات ۵۰۰ کاراکتری با ۵۰ کاراکتر هم‌پوشانی (chunk_overlap=50) می‌شکنیم تا رشته کلام بین قطعات قطع نشه.
۳. با OpenAIEmbeddings و Chroma.from_documents دیتابیس برداری رو مستقیم روی هارد خودمون می‌سازیم.
۴. با db.as_retriever میگیم ۲ تا از مرتبط‌ترین قطعات (k=2) رو برای سوال «سیاست دورکاری در این شرکت چیست؟» پیدا کنه.
۵. و در نهایت اون قطعات رو می‌ذاریم داخل پرامپتِ gpt-4o-mini با دمای صفر و این شرط طلایی: «اگر پاسخ در متن نیست، بگو من بر اساس سیاست‌های شرکت نمی‌دانم.» تمام! شما الان یه سیستم RAG کامل دارین!

[Action 9] شاید بگین: «آقا من برنامه‌نویس پایتون نیستم، می‌تونم بدون کدنویسی هم سیستم RAG بسازم؟» بله! توی اسلاید ششم ابزارهای No-Code / Low-Code رو می‌بینین:
ابزارهای Flowise و LangFlow محیط‌های گرافیکی جذابی دارن که فقط با کشیدن و وصل کردن جعبه‌های PDF Loader، Text Splitter و Chroma به هم، توی ۱۰ دقیقه یه چت‌بات RAG کامل بهتون می‌دن. پلتفرم متن‌باز Dify.ai هم یه رابط وب آماده و کامل بهتون می‌ده، و برای کارهای کوچیک‌تر هم می‌تونین فایل PDF رو مستقیم بذارین توی بخش Knowledge از یک Custom GPT.

[Action 10] در نهایت، توی اسلاید هفتم چند تا نکته حیاتی برای محیط واقعی کار (Production) و جلوگیری از ورشکستگی داریم:
اول، کش کردن (Caching): اگه صد نفر یه سوال تکراری از بات شما می‌پرسن، با ابزارهایی مثل Redis یا langchain-cache جواب رو کش کنین تا هر بار پول توکن ندین.
دوم، پاسخ جریانی (stream=True): هیچ کاربری دوست نداره ۱۰ ثانیه به صفحه سفید خیره بشه؛ با استریمینگ، کلمات مثل چت‌جی‌پی‌تی تیکه‌تیکه تایپ می‌شن.
سوم، استفاده از Structured Outputs (یا Pydantic) برای گرفتن خروجی JSON تضمینی.
و حواستون به ۳ تا تله خطرناک هم باشه: ۱. به RAG کورکورانه اعتماد نکنین و همیشه کیفیت قطعات بازیابی‌شده رو چک کنین؛ ۲. پدیده گمشده در وسط (Lost in the Middle)—مدل‌ها به اول و آخر متن توجه زیادی می‌کنن ولی وسط یه متن خیلی شلوغ رو جا می‌ندازن، پس کانتکست بازیابی‌شده رو مختصر نگه دارین؛ و ۳. اگه ایجنت خودمختار (Agent) می‌سازین، حتماً سقف max_iterations براش بذارین، وگرنه ممکنه ایجنتتون نصفه‌شب گیر کنه و ۵۰ هزار بار پشت سر هم API رو توی حلقه صدا بزنه!

[Action 11] دمتون گرم که تا پایان ماژول ششم همراه من بودین! حتماً اسکریپت ۳۰ خطی پایتون یا محیط بصری Flowise رو با یکی از جزوه‌ها یا مستندات کاری خودتون تست کنین و نتیجه‌اش رو توی کامنت‌ها بگین. لایک و سابسکرایب فراموش نشه، و بپرین ماژول هفتم که می‌خوایم وارد دنیای جادویی تولید تصویر و ویدیو با هوش مصنوعی بشیم!

پیمایش به بالا