Sider.ai
  • دردشة
  • Wisebase
  • أدوات
  • امتداد
  • العملاء
  • التسعير
التحميل الان
تسجيل الدخول

تعلم بشكل أسرع، فكر بعمق، وازدد ذكاءً مع Sider.

المنتجات
التطبيقات
  • الإضافات
  • iOS
  • Android
  • Mac OS
  • Windows
Wisebase
  • Wisebase
  • Deep Research
  • Scholar Research
  • Math Solver
  • Rec NoteNew
  • Audio To Text
  • Gamified Learning
  • Interactive Reading
  • ChatPDF
أدوات
  • مُنشئ الويبNew
  • شرائح الذكاء الاصطناعيNew
  • كاتب المقالات بالذكاء الاصطناعي
  • Nano Banana Pro
  • Nano Banana Infographic
  • مولد الصور بالذكاء الاصطناعي
  • مولد الأفكار المجنونة الإيطالية
  • مزيل الخلفية
  • مغير الخلفية
  • ممحاة الصور
  • مزيل النصوص
  • إعادة الطلاء
  • مكبر الصور
  • إنشاء
  • مترجم الذكاء الاصطناعي
  • مترجم الصور
  • مترجم PDF
Sider
  • اتصل بنا
  • مركز المساعدة
  • تحميل
  • السعر
  • خطة التعليم
  • ما الجديد
  • مدونة
  • مجتمع
  • الشركاء
  • الشراكة
  • دعوة
©2026 جميع الحقوق محفوظة
شروط الاستخدام
سياسة الخصوصية
  • الصفحة الرئيسية
  • مدونة
  • أدوات الذكاء الاصطناعي
  • كيفية استخدام LlamaIndex: دليل عملي من الصفر إلى الإنتاج

كيفية استخدام LlamaIndex: دليل عملي من الصفر إلى الإنتاج

تم التحديث في 23 سبتمبر 2025

10 دقيقة


كيفية استخدام : دليل عملي من الصفر إلى الإنتاج

إذا حاولت يومًا إنشاء تطبيق توليد معزز بالاسترجاع (RAG) وفكرت، "لماذا توصيل التضمينات، ومخازن المتجهات، والموجهات معقد للغاية؟"، فأنت لست وحدك. موجود لجعل هذا المسار سريعًا وسليمًا وجاهزًا للإنتاج. في هذا الدليل العملي والموجه نحو الحلول، سنستعرض كيفية استخدام من البداية إلى النهاية - استيعاب البيانات، والفهرسة، والاستعلام، والتقييم، والنشر - حتى تتمكن من شحن شيء موثوق به دون أن تضيع في التعليمات البرمجية اللاصقة.
سنستخدم هيكلًا يقوده السؤال مع خطوات تدريجية ومقتطفات قابلة للتشغيل ونصائح واقعية. سواء كنت تقوم بإنشاء نموذج أولي لروبوت محادثة للوثائق الداخلية أو نشر مساعد معرفة للعملاء، فإن تعلم كيفية استخدام بفعالية سيوفر لك أيامًا.
: هو إطار عمل يساعدك على توصيل بياناتك بنماذج لغوية كبيرة باستخدام أدوات الفهرسة والاسترجاع والتنسيق - مثالي لتطبيقات RAG والوكلاء والمخرجات المنظمة.

ما هو ولماذا نستخدمه؟

  • LlamaIndex هو إطار بيانات لتطبيقات LLM. يوفر لبنات بناء من أجل:
  • الاستيعاب: تحميل الملفات وصفحات الويب وقواعد البيانات وواجهات برمجة التطبيقات.
  • التقطيع والفهرسة: تحويل المحتوى الخام إلى هياكل قابلة للاستعلام (متجه، كلمة رئيسية، فهارس الرسم البياني).
  • الاسترجاع: استرجاع السياق باستراتيجيات مرنة (BM25، هجين، إعادة ترتيب).
  • محركات الاستعلام والوكلاء: دمج الاسترجاع والأدوات والموجهات في تجربة أسئلة وأجوبة متماسكة.
  • التقييم والمراقبة: الحكم على جودة الاسترجاع وأهمية الإجابة.
  • متى تستخدم <a1>LlamaIndex</a1>:
  • أنت تريد مجموعة RAG قوية دون إعادة اختراع التقطيع والتضمينات والاسترجاع.
  • أنت بحاجة إلى دمج مصادر بيانات متعددة (ملفات PDF + + SQL).
  • ترغب في تجربة الاسترجاع الهجين أو إعادة الترتيب أو المخرجات المنظمة.
  • LlamaIndex عند تعلم كيفية استخدام LlamaIndex:
  • البيانات → العقد → الفهرس → المسترجع → محرك الاستعلام → التطبيق

بداية سريعة: حلقة RAG الصغرى

هذا هو أسرع طريق إلى نموذج أولي للعمل. سنقوم بتحميل المستندات وبناء فهرس متجه وطرح الأسئلة.
# 1) التثبيت
# pip install llama-index llama-index-embeddings-openai llama-index-llms-openai
import os
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
# 2) تكوين النموذج + التضمينات
os.environ["OPENAI_API_KEY"] = "YOUR_KEY" # أو استخدم أي موفر LLM/تضمين مدعوم
llm = OpenAI(model="gpt-4o-mini")
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
# 3) تحميل المستندات (على سبيل المثال، ./data/*.pdf, .md, .txt)
docs = SimpleDirectoryReader("./data").load_data
# 4) بناء فهرس
index = VectorStoreIndex.from_documents(docs, embed_model=embed_model)
# 5) إنشاء محرك استعلام وطرح سؤال
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("What are the key security practices mentioned in the docs?")
print(response)
هذا هو الجوهر. من هنا، تضيف التطبيقات الحقيقية تقطيعًا أفضل وإعادة ترتيب وموجهات منظمة وقابلية للمراقبة.

الاستيعاب: أحضر بياناتك الخاصة (BYOD) بالطريقة الصحيحة

عندما تقرر كيفية استخدام للبيانات الحقيقية، اختر أدوات التحميل التي تطابق مصادرك وتحافظ على الهيكل.
  • أدوات التحميل الشائعة:
  • الملفات: SimpleDirectoryReader، قراء PDF/HTML/Markdown
  • الويب: BeautifulSoupWebReader، قراء خريطة الموقع
  • SaaS: ، ، ، (عبر الموصلات)
  • قواعد البيانات: SQL وقواعد بيانات المتجهات (، ، ، )
  • نصيحة: قم بتطبيع البيانات الوصفية (العنوان، المؤلف، URL، created_at). البيانات الوصفية الجيدة تعزز إعادة الترتيب والتصفية لاحقًا.
from llama_index.core import SimpleDirectoryReader
from llama_index.readers.web import SimpleWebPageReader
file_docs = SimpleDirectoryReader("./policies").load_data
web_docs = SimpleWebPageReader(html_to_text=True).load_data
all_docs = file_docs + web_docs

التقطيع ومحللو العقد: مدخلات غير مرغوب فيها، مخرجات غير مرغوب فيها

يعد الحصول على التقطيع الصحيح أحد أهم الخطوات عند تعلم كيفية استخدام بفعالية.
  • لماذا التقطيع مهم: كبير جدًا → تضخم الرمز والاسترجاع غير ذي الصلة. صغير جدًا → تجزئة السياق.
  • الإعدادات الافتراضية: معقولة للعديد من الحالات، ولكن اضبطها لنوع المحتوى الخاص بك.
  • الاستدلالات:
  • الوثائق التقنية: كتل رمزية 512-1024 مع تداخل 10-20٪.
  • الأسئلة الشائعة: كتل أصغر (256-512) للحفاظ على أزواج الأسئلة/الأجوبة سليمة.
  • قانوني/سياسة: كتل أكبر (1024-1536) للحفاظ على التعريفات + البنود.
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import Document
parser = SentenceSplitter(chunk_size=800, chunk_overlap=100)
nodes = []
for d in all_docs:
nodes.extend(parser.get_nodes_from_documents([Document(text=d.text, metadata=d.metadata)]))

استراتيجيات الفهرسة: متجه، كلمة رئيسية، أم هجين؟

يعد اختيار الفهرس الصحيح أمرًا بالغ الأهمية. الخبر السار: يتيح لك دمجها.
  • فهرس المتجهات: رائع للبحث الدلالي. الأفضل لـ "اشرح X" أو الاستعلامات الغامضة.
  • كلمة رئيسية (BM25): قوي للمصطلحات الدقيقة والمعرفات ورموز الخطأ والسجلات.
  • هجين: اجمع بين الاثنين؛ أعد ترتيب أفضل المرشحين باستخدام LLM أو مشفر متقاطع.
from llama_index.core import VectorStoreIndex, SummaryIndex
from llama_index.core.retrievers import BM25Retriever
from llama_index.core.query_engine import RetrieverQueryEngine
# Vector index from pre-parsed nodes
v_index = VectorStoreIndex(nodes)
# BM25 keyword retriever
bm25_retriever = BM25Retriever.from_defaults(nodes=nodes, similarity_top_k=6)
# Hybrid: merge candidates, then rerank
from llama_index.core.retrievers import RouterRetriever
from llama_index.retrievers.merge import MergerRetriever
v_retriever = v_index.as_retriever(similarity_top_k=6)
hybrid = MergerRetriever(retrievers=[v_retriever, bm25_retriever], top_k=8)
query_engine = RetrieverQueryEngine.from_args(retriever=hybrid)

إعادة الترتيب والفلاتر: تعزيز الدقة دون المبالغة في الدفع

تعمل إعادة الترتيب على تحسين جودة الإجابة عن طريق إعادة ترتيب الكتل المسترجعة وفقًا للأهمية.
  • متى يتم إعادة الترتيب: إذا أبلغ المستخدمون عن استشهادات خارج الموضوع أو سياقات طويلة ومحشوة.
  • الأساليب:
  • المشفرات المتقاطعة (بحث تضمين المشفر الثنائي → إعادة ترتيب المشفر المتقاطع)
  • إعادة الترتيب المستندة إلى LLM (أكثر تكلفة، وأحيانًا أكثر ذكاءً في النص الدقيق)
  • مرشحات البيانات الوصفية (على سبيل المثال، source == 'handbook'، created_at > 2024-01-01)
from llama_index.postprocessor.flag_embedding_reranker import FlagEmbeddingReranker
from llama_index.core.query_engine import RetrieverQueryEngine
reranker = FlagEmbeddingReranker(top_n=5, model="BAAI/bge-reranker-base")
query_engine = v_index.as_query_engine(
similarity_top_k=12,
node_postprocessors=[reranker]
)

المطالبة ومحركات الاستعلام: من البحث إلى الإجابات

محرك الاستعلام هو المكان الذي يلتقي فيه الاسترجاع بالتوليد. لإتقان كيفية استخدام في الإنتاج، صمم المطالبات وتوليف الاستجابة بعناية.
  • استراتيجيات توليف الإجابة:
  • "أشياء" بسيطة (تسلسل) للسياقات الصغيرة
  • شجرة أو تقليل الخريطة للسياقات الأطول
  • وضع الاقتباس لإظهار المصادر
from llama_index.core.response_synthesizers import get_response_synthesizer
from llama_index.core import ServiceContext
synth = get_response_synthesizer(response_mode="tree_summarize")
query_engine = v_index.as_query_engine(response_synthesizer=synth)
ans = query_engine.query("Summarize the onboarding steps and cite sources.")
print(ans)
  • مطالبات مخصصة: صمم النبرة أو المخرجات المنظمة أو الحواجز الواقية.
from llama_index.core.prompts import PromptTemplate
qa_tmpl = PromptTemplate(
"""
You are a terse, evidence-first assistant. Use only the provided context.
If unsure, say you don't know. Return JSON with keys: answer, sources.
Question: {query_str}
Context: {context_str}
"""
)
query_engine = v_index.as_query_engine(text_qa_template=qa_tmpl)

الوكلاء والأدوات: عندما لا يكون الاسترجاع كافيًا

تتطلب الإجابات أحيانًا إجراءات: تشغيل SQL أو استدعاء واجهات برمجة التطبيقات أو التصفح. يقوم وكلاء بتنسيق الأدوات والاستدلال مع مسار الاسترجاع الخاص بك.
  • حالات الاستخدام: لوحات معلومات KPI (أداة SQL)، وروبوتات الدعم (واجهة برمجة تطبيقات البحث عن التذاكر)، ووكلاء البحث (الويب + RAG).
from llama_index.core.agent import ReActAgent
from llama_index.tools.sql import SQLQueryEngineTool
from sqlalchemy import create_engine
engine = create_engine("sqlite:///analytics.db")
sql_tool = SQLQueryEngineTool.from_engine(engine)
agent = ReActAgent.from_tools([sql_tool], llm=llm, verbose=True)
agent.chat("What was monthly churn in Q2 2025? If needed, query the DB.")

التقييم: لا تشحن بشكل أعمى

إن تعلم كيفية استخدام بمسؤولية يعني التحقق من صحة كل من الاسترجاع والإجابات قبل الطرح.
  • التقييم دون اتصال: الحكم على استرجاع الاستدعاء/الدقة على مجموعة مصنفة.
  • التقييم عبر الإنترنت: تسجيل مطالبات المستخدم وقياس الرضا ومعدلات الانحراف والهلوسة.
  • LlamaIndex: يوفر LlamaIndex مساعدين للتقييم من أجل الإخلاص وأهمية الإجابة.
from llama_index.core.evaluation import FaithfulnessEvaluator, RelevancyEvaluator
faith = FaithfulnessEvaluator(llm=llm)
rel = RelevancyEvaluator(llm=llm)
pred = query_engine.query("List SOC 2 control families in our policy.")
print("faithful?", faith.evaluate_response(pred))
print("relevant?", rel.evaluate_response(pred))
  • شريط عملي: بالنسبة للمساعدين الداخليين، استهدف تصنيف "مفيد" بنسبة >80٪ في أهم الاستعلامات قبل الإطلاق على نطاق واسع.

الثبات ومخازن المتجهات: اجعلها قابلة للتطوير

الفهارس المبنية في الذاكرة لن تقطع شوطًا طويلاً في أحمال العمل الحقيقية. استمر في قاعدة بيانات المتجهات وقم بتمكين التحديثات المتزايدة.
  • Qdrant: Qdrant، Qdrant، Qdrant، Qdrant/Qdrant، Qdrant.
  • نصيحة: استخدم مساحات الأسماء لكل مستأجر أو قسم؛ حافظ على البيانات الوصفية غنية.
# مثال: Chroma
# pip install chromadb llama-index-vector-stores-chroma
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
import chromadb
chroma_client = chromadb.PersistentClient(path="./chroma_store")
collection = chroma_client.get_or_create_collection("company_knowledge")
vector_store = ChromaVectorStore(chroma_collection=collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(all_docs, storage_context=storage_context)

الأمان والحوكمة: الجزء الذي ينساه الجميع

  • التعامل مع معلومات التعريف الشخصية (PII): تنقيح أو تجزئة الحقول الحساسة أثناء الاستيعاب.
  • ضوابط الوصول: التصفية حسب أدوار المستخدم مع قيود البيانات الوصفية.
  • نضارة المحتوى: جدولة إعادة الاستيعاب؛ وضع علامة على الإصدارات.
  • السلامة: إضافة سياسات الرفض وقيود المصدر فقط في المطالبات.
# مثال: التصفية المستندة إلى البيانات الوصفية في وقت الاستعلام
retriever = index.as_retriever(similarity_top_k=8)
retriever.metadata_filters = {"department": ["legal", "security"], "published": [True]}

من النموذج الأولي إلى الإنتاج: أنماط النشر

  • نمط الخادم: عرض نقطة نهاية /query؛ حافظ على الفهرس دافئًا في الذاكرة.
  • المأزق عديم الخادم: يمكن أن تؤدي البدايات الباردة + النماذج الكبيرة إلى الإضرار بزمن الوصول؛ ضع في اعتبارك الاستدلال المدار.
  • التخزين المؤقت: تخزين التضمينات ونتائج الاستعلام المتكررة مؤقتًا؛ تمكين التحديثات الجزئية.
  • قابلية المراقبة: تسجيل العقد المسترجعة واستخدام الرمز وطول الإجابة وتعليقات المستخدمين.
# غلاف FastAPI صغير
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI
qe = index.as_query_engine(llm=llm)
@app.post("/query")
async def query(payload: dict):
q = payload.get("q", "")
resp = qe.query(q)
return {"answer": str(resp), "sources": [s.node.metadata for s in resp.source_nodes]}

مخططات واقعية: اختر مسارك

  1. مساعد السياسة الداخلية
  • الفهرس: هجين (BM25 + متجه) مع إعادة الترتيب
  • الحواجز الواقية: وضع المصدر فقط؛ احتياطي "لا أعرف"
  • KPI: معدل الحل لأسئلة السياسة
  1. طيار دعم العملاء
  • الفهرس: وثائق المنتج + ملاحظات الإصدار + التذاكر
  • الوكلاء: أداة API للتحقق من حالة الطلب/التذكرة
  • KPI: حل الاتصال الأول، والانحراف، ورضا العملاء
  1. محلل البحوث
  • الفهرس: الويب + ملفات PDF + ملاحظات؛ إزالة الازدواجية القوية
  • إعادة الترتيب: المشفر المتقاطع؛ التوليف: تقليل الخريطة
  • KPI: الوقت المستغرق للوصول إلى الرؤية؛ دقة الاقتباس
  1. ضمان جودة البيانات لـ BI
  • الأدوات: محرك SQL + RAG في تعريفات المقاييس
  • الحوكمة: سياسات على مستوى الصف؛ تدقيق الاستعلام
  • KPI: الصحة مقابل الحقيقة الأساسية

التكلفة وزمن الوصول: حافظ عليها سريعة (ورخيصة)

  • التضمينات: قم بالدفعات حيثما أمكن ذلك؛ استخدم نماذج أصغر للاستدعاء، وأعد الترتيب بشكل انتقائي.
  • حجم السياق: استهدف 1-2 ألف رمز من أهم الكتل ذات الصلة.
  • التخزين المؤقت: تخزين استرجاع أفضل K للاستعلامات الساخنة مؤقتًا؛ قم بتحويل مكالمات LLM إلى مذكرات مع مطالبات مجزأة.
  • التوازي: استرجاع المروحة → إعادة ترتيب المروحة لتقليل زمن الوصول إلى الذيل.

المزالق الشائعة عند تعلم كيفية استخدام

  • التقطيع الزائد، مما يؤدي إلى استرجاع سطحي وصاخب
  • لا توجد مرشحات بيانات وصفية، مما يتسبب في تسلل مصادر غير ذات صلة
  • الاعتماد على نوع فهرس واحد لجميع المحتويات
  • تخطي التقييم؛ الشحن بدون شريط جودة
  • السماح للفهارس بالتقادم؛ لا يوجد تحديث مجدول

بالمناسبة: تسريع سير عملك في المحرر

أثناء التكرار في المطالبات وأدوات التقطيع وإعدادات الاسترجاع، تجدر الإشارة إلى أن الشريط الجانبي لترميز وأبحاث الذكاء الاصطناعي مثل Sider.ai يمكن أن يسرع الحلقة. يمكنك الاحتفاظ بالمقتطفات والمطالبات وملاحظات التقييم في متناول اليد، وإنشاء اختلافات في تغييرات المطالبة، واختبار الاختلافات بسرعة دون مغادرة المستعرض الخاص بك. هذا مفيد بشكل خاص عندما تقوم بتعديل كيفية استخدام عبر استراتيجيات استرجاع مختلفة.

قائمة التحقق التفصيلية: من الصفر إلى الإنتاج

  • استيعاب المصادر وتطبيع البيانات الوصفية
  • اضبط أحجام الكتل حسب نوع المحتوى
  • بناء فهارس المتجهات + BM25؛ تمكين الاسترجاع الهجين
  • إضافة إعادة الترتيب ومرشحات البيانات الوصفية
  • تخصيص المطالبات؛ تمكين الاستشهادات وسياسة الرفض
  • تقييم الإخلاص والأهمية في مجموعة اختبار
  • الاستمرار في مخزن متجه؛ تمكين التحديثات المتزايدة
  • إضافة قابلية المراقبة والتخزين المؤقت وفلاتر RBAC
  • التفاف في واجهة برمجة تطبيقات وتعيين اتفاقيات مستوى الخدمة؛ توثيق أوضاع الفشل

الوجبات الرئيسية

  • إذا كنت تريد تطبيق RAG قويًا، فإن تعلم كيفية استخدام سيوفر أسابيع من هندسة الغراء.
  • ابدأ ببساطة، ثم قم بتجميع الاسترجاع الهجين وإعادة الترتيب والمطالبات المنظمة.
  • قم بالتقييم قبل التوسع؛ استمر في الفهارس وراقب الجودة في الإنتاج.
  • صمم للحوكمة من اليوم الأول - الأمان ليس إضافة إضافية.

الخطوات التالية

  • إنشاء نموذج أولي للبداية السريعة على مجموعة مستندات صغيرة.
  • جرب الاسترجاع الهجين وإعادة الترتيب.
  • أضف التقييم والاستشهادات؛ تتبع مقاييس الجودة.
  • انتقل إلى مخزن متجه دائم ونشر واجهة برمجة تطبيقات.

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

س1: ما هو المستخدم في تطبيقات RAG؟ يساعدك على توصيل بياناتك بـ LLMs مع مكونات الاستيعاب والفهرسة والاسترجاع. إنه يبسط بناء أنظمة RAG عن طريق التعامل مع التقطيع وفهارس المتجهات/الكلمات الرئيسية وتنسيق الاستعلام.
س2: كيف أختار نوع الفهرس الصحيح في ؟ استخدم فهرس المتجهات للاستعلامات الدلالية، وBM25 للمطابقات الدقيقة مثل المعرفات أو الرموز، ونهجًا هجينًا للحصول على أفضل استدعاء ودقة بشكل عام. يجمع العديد من الفرق بين الاثنين ويضيفون إعادة ترتيب لنتائج أفضل K.
س3: كيف يمكنني تحسين الدقة عند استخدام LlamaIndex؟ اضبط أحجام الأجزاء، وقم بتضمين بيانات تعريف غنية، وقم بتمكين الاسترجاع الهجين، وأضف أداة إعادة ترتيب. قم أيضًا بتنفيذ تقييم للإخلاص والأهمية، واستخدم وضع الاستشهاد لإظهار المصادر.
س4: هل يمكن أن يعمل LlamaIndex مع قاعدة بيانات المتجهات الموجودة لدي؟ نعم. يتكامل LlamaIndex مع متاجر المتجهات الشائعة مثل Pinecone وWeaviate وChroma وQdrant وElasticsearch. احتفظ بالفهارس لتحقيق قابلية التوسع والتحديثات المتزايدة.
س5: كيف يمكنني نشر تطبيق LlamaIndex في بيئة إنتاج؟ قم بتضمين محرك الاستعلام الخاص بك في واجهة برمجة تطبيقات (API) (على سبيل المثال، FastAPI)، واحتفظ بالبيانات في متجر متجه، وأضف التخزين المؤقت والمراقبة، وقم بتقييم الجودة باستمرار. قم بفرض عوامل تصفية بيانات التعريف والتحكم في الوصول للأمان.

مقالات حديثة
كيفية إتقان ChatPDF: الحصول على رؤى أسرع من المستندات الكثيفة

كيفية إتقان ChatPDF: الحصول على رؤى أسرع من المستندات الكثيفة

أفضل بديل لـ X Auto-Translation لترجمة سريعة ودقيقة للوثائق

أفضل بديل لـ X Auto-Translation لترجمة سريعة ودقيقة للوثائق

هل ترجمة سامسونج بالذكاء الاصطناعي غير متوفرة في إيران؟ حلول عملية

هل ترجمة سامسونج بالذكاء الاصطناعي غير متوفرة في إيران؟ حلول عملية

أدوات الترجمة الفارسية: دليل عملي للعمل بسرعة ودقة

أدوات الترجمة الفارسية: دليل عملي للعمل بسرعة ودقة

أفضل بديل لـ Grok للبحث العميق والمستند إلى المراجع

أفضل بديل لـ Grok للبحث العميق والمستند إلى المراجع

أهم 15 ميزة في مولد الصور بالذكاء الاصطناعي ستستخدمها فعليًا

أهم 15 ميزة في مولد الصور بالذكاء الاصطناعي ستستخدمها فعليًا