روبوت أسئلة وأجوبة فوق مستنداتك
أنشئ روبوت RAG عاملًا: استوعب ملفات PDF، وأنشئ embeddings، وابحث، ثم أنشئ الإجابة. هذا هو «Hello World» لوكلاء الإنتاج.
روبوت أسئلة وأجوبة فوق مستنداتك درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
هدف المشروع
ابنوا chatbot يجيب عن الأسئلة من مستنداتكم الخاصة (ملفات PDF وMarkdown وما إلى ذلك). هذا هو «hello world» لوكلاء الإنتاج، وهو مفيد مباشرةً لأي فريق.
البنية
- الاستيعاب: تحميل المستندات -> تقسيمها إلى chunks -> إنشاء embeddings -> تخزينها في vector DB
- الاستعلام: إنشاء embedding للسؤال -> استرجاع أفضل K من chunks -> وضعها في prompt -> LLM
- الاستشهاد: تنسيق 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- روبوت أسئلة وأجوبة فوق مستنداتك
- وكيل لشرح الشيفرة
- وكيل بحث وتصفح الويب
- مساعد SQL لقاعدة بياناتك