AI Agents · درس

روبوت أسئلة وأجوبة فوق مستنداتك

أنشئ روبوت RAG عاملًا: استوعب ملفات PDF، وأنشئ embeddings، وابحث، ثم أنشئ الإجابة. هذا هو «Hello World» لوكلاء الإنتاج.

الدرس 1 من 415 خطوة

روبوت أسئلة وأجوبة فوق مستنداتك درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

هدف المشروع

ابنوا chatbot يجيب عن الأسئلة من مستنداتكم الخاصة (ملفات PDF وMarkdown وما إلى ذلك). هذا هو «hello world» لوكلاء الإنتاج، وهو مفيد مباشرةً لأي فريق.

البنية

  1. الاستيعاب: تحميل المستندات -> تقسيمها إلى chunks -> إنشاء embeddings -> تخزينها في vector DB
  2. الاستعلام: إنشاء embedding للسؤال -> استرجاع أفضل K من chunks -> وضعها في prompt -> LLM
  3. الاستشهاد: تنسيق chunks باستخدام المعرّفات؛ وطلب الاستشهاد من LLM

Step 1: Load and Chunk

from langchain.text_splitter import RecursiveCharacterTextSplitter
from pypdf import PdfReader

text = ''
for page in PdfReader('handbook.pdf').pages:
    text += page.extract_text() + '\n'

splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_text(text)
print(f'{len(chunks)} chunks')

Step 2: Embed and Store

import chromadb
from openai import OpenAI

oai = OpenAI()
chroma = chromadb.PersistentClient(path='./db')
collection = chroma.get_or_create_collection('handbook')

resp = oai.embeddings.create(model='text-embedding-3-small', input=chunks)
vectors = [d.embedding for d in resp.data]
collection.add(ids=[f'c{i}' for i in range(len(chunks))], embeddings=vectors, documents=chunks)

Step 3: Query Function

def query(question, k=4):
    qvec = oai.embeddings.create(model='text-embedding-3-small', input=question).data[0].embedding
    res = collection.query(query_embeddings=[qvec], n_results=k)
    return res['documents'][0]

Step 4: Build the Prompt

def make_prompt(question, chunks):
    context = '\n\n'.join(f'[{i+1}] {c}' for i, c in enumerate(chunks))
    return f'''
Using only the context below, answer the question.
If the answer is not present, say so.
Cite the source like [1], [2], etc.

Context:
{context}

Question: {question}
Answer:
'''

print(make_prompt("What is the return policy?", ["Returns accepted within 30 days.", "Item must be unused."]))

Step 5: Generate

def answer(question):
    chunks = query(question)
    prompt = make_prompt(question, chunks)
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        temperature=0,
    )
    return response.choices[0].message.content

print(answer('What is our refund policy?'))

ربط التطبيق بواجهة مستخدم

غلّفوه باستخدام FastAPI وصفحة HTML بسيطة (أو Streamlit)، وستحصلون على تطبيق عامل.

# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()

@app.post('/ask')
def ask(payload: dict):
    return {'answer': answer(payload['question'])}

إضافة سجل المحادثة

بالنسبة إلى الأسئلة والأجوبة متعددة الأدوار، احتفظوا بالرسائل ومرّروها إلى prompt:

messages = [{'role': 'system', 'content': 'You are a doc Q&A assistant.'}]

def chat(user_input):
    messages.append({'role': 'user', 'content': user_input})
    chunks = query(user_input)
    context_msg = {'role': 'system', 'content': f'Context:\n{chr(10).join(chunks)}'}
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[messages[0], context_msg] + messages[1:]
    )
    answer = response.choices[0].message.content
    messages.append({'role': 'assistant', 'content': answer})
    return answer

الأخطاء الشائعة

  • الـ chunks كبيرة جدًا أو صغيرة جدًا — جرّبوا من 500 إلى 800 token
  • عدم الاستشهاد بالمصادر — لا يثق المستخدمون بالإجابات غير الموثقة
  • قيمة K كبيرة جدًا — تهدر tokens وتشتت الانتباه
  • إنشاء embedding للسؤال بالكامل، بما في ذلك سجل المحادثة — أنشئوا embedding لسؤال المستخدم الأخير فقط

إضافة روابط المصادر

خزّنوا عناوين URL للمصادر في البيانات الوصفية واعرضوها في الإجابة:

metadata = [{'source': 'handbook.pdf', 'page': i} for i in range(len(chunks))]
# In the prompt, include 'source: <url>' so the LLM can produce clickable references.

تقييمه

اجمعوا 20 سؤالًا حقيقيًا من المستخدمين. حدّدوا يدويًا ما إذا كان chatbot يجيب إجابة صحيحة. استخدموا هذه الأسئلة كمجموعة التقييم الأولية.

الإطلاق والتكرار

يعالج هذا chatbot، بعد إطلاقه في الإنتاج، 80% من الأسئلة الشائعة. حسّنوه استنادًا إلى نسبة الـ 20% التي يخطئ فيها — فعادةً ما تحتاجون إلى تقسيم أفضل إلى chunks أو إلى إعادة ترتيب أفضل.

الاستشهاد بالمصدر

لماذا ندرج معرّفات المصادر في prompt ونطلب من LLM الاستشهاد بها؟

مراجعة

روبوت RAG في نحو 50 سطرًا. أطلقوه، وقيّموه، وكرّروا التحسين على التقسيم إلى chunks والاسترجاع. يتكرر هذا النمط في عدد لا يحصى من تطبيقات الوكلاء.

البدء مجانًا

تعلم AI Agents مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
60
الدروس
239

الأسئلة الشائعة

هل درس «روبوت أسئلة وأجوبة فوق مستنداتك» مجاني؟

نعم — نص درس «روبوت أسئلة وأجوبة فوق مستنداتك» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «روبوت أسئلة وأجوبة فوق مستنداتك»؟

أنشئ روبوت RAG عاملًا: استوعب ملفات PDF، وأنشئ embeddings، وابحث، ثم أنشئ الإجابة. هذا هو «Hello World» لوكلاء الإنتاج. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «روبوت أسئلة وأجوبة فوق مستنداتك»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. روبوت أسئلة وأجوبة فوق مستنداتك
  2. وكيل لشرح الشيفرة
  3. وكيل بحث وتصفح الويب
  4. مساعد SQL لقاعدة بياناتك
← العودة إلى AI Agents