المقالات هي وحدات بناء قاعدة معرفتك. أنشئ المحتوى الذي يستخدمه وكيل AI للإجابة، واسرده وحدّثه واحذفه.
المقالات هي وحدات بناء قاعدة معرفة وكيل AI. تمثل كل مقالة معلومة، مثل صفحة مساعدة أو سؤال شائع أو وصف منتج أو أي محتوى ينبغي أن يعرفه AI.
توجد ثلاثة أنواع: المقالات (مستندات كاملة بعنوان ومتن)، والفقرات (مدخلات نصية قصيرة مستقلة)، ومقالات URL (تُنشأ تلقائيًا عند استيراد محتوى الويب). يمكنك إنشاء المقالات يدويًا عبر API، أو استيرادها من المواقع باستخدام استيراد المحتوى الخارجي، أو رفع الملفات عبر رفع الملفات، أو المزامنة من Intercom.
لا توجد خطوة إعادة تدريب. تُعالج كل مقالة تنشئها أو تحدثها أو تحذفها تلقائيًا في الخلفية وتسري بمجرد اكتمالها، عادةً خلال ثوانٍ. تتبع ذلك بحقل embed_state أدناه، أو pending_embed_count في جلب إعدادات قاعدة المعرفة.
فحوص أمثلة اختيارية
Section titled “فحوص أمثلة اختيارية”-
عاين طلب إجراء API. اعرض قالب طلب مقدمًا بقيم نموذجية اصطناعية دون إرساله. لا تدرج رؤوس بيانات الاعتماد.
-
عاين تطابقات JSONPath. افحص مسارات الجذر والحقول وفهارس المصفوفات وأحرف البدل مقابل JSON مقدم. لا يشغّل ذلك إجراءً ولا يحفظ ذاكرة المحادثة.
إنشاء مقالة
Section titled “إنشاء مقالة”POST https://app.quickchat.ai/v1/api/knowledge_base/articles/
جسم الطلب
| المعلمة | الوصف |
|---|---|
content سلسلة نصية، مطلوبة | محتوى المقالة |
type سلسلة نصية | "Article" (الافتراضي) أو "Paragraph" |
title سلسلة نصية | عنوان المقالة |
"Article": مستند كامل في قاعدة المعرفة بعنوان ومحتوى. للأسئلة الشائعة ومقالات المساعدة وأوصاف المنتجات."Paragraph": مدخل نصي قصير مستقل دون عنوان. للحقائق الموجزة والإجابات ذات السطر الواحد والبيانات المرجعية السريعة."URL"(للقراءة فقط): يُنشأ تلقائيًا عند استيراد محتوى من موقع. يتضمن محتوى الصفحة المستخرج مع رابط المصدر. لا يمكن تعيينه عند الإنشاء.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy", },)data = response.json()الاستجابة 201 Created
{ "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "content": "Our return policy allows returns within 30 days.", "state": "draft", "deploy_state": "draft", "embed_state": "pending", "refresh_failure_reason": "", "version": null, "max_available_version": null, "url": null, "tags": [], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15", "downloaded_timestamp": "2026-01-15", "last_updated_timestamp": "2026-01-15", "last_updated_from_external_source_timestamp": null}| الحقل | الوصف |
|---|---|
id عدد صحيح | معرف المقالة الرقمي. المعرف المعتمد المستخدم في جميع مسارات URL |
article_id سلسلة نصية | معرف نصي قديم. قد يكون فارغًا؛ استخدم id بدلًا منه |
type سلسلة نصية | "Article" أو "Paragraph" أو "URL" |
title سلسلة نصية | عنوان المقالة |
description سلسلة نصية | وصف المقالة |
content سلسلة نصية | محتوى المقالة |
deploy_state سلسلة نصية | "draft" أو "published"، تسمية فقط (راجع الملاحظة أدناه) |
embed_state سلسلة نصية أو null | هل المقالة متاحة: "pending" أو "embedding" أو "embedded" أو "failed" (راجع الملاحظة أدناه) |
state سلسلة نصية | حالة المعالجة الداخلية (راجع الملاحظة أدناه) |
refresh_failure_reason سلسلة نصية | سبب فشل أحدث تحديث URL. فارغ إذا لم يُخزن فشل تحديث مصنف |
version عدد صحيح أو null | رقم الإصدار الحالي |
max_available_version عدد صحيح أو null | أعلى إصدار متاح |
url سلسلة نصية أو null | رابط المصدر (لمقالات نوع URL) |
tags مصفوفة سلاسل نصية | الوسوم المرتبطة |
created_timestamp سلسلة نصية | تاريخ الإنشاء |
last_modified_timestamp سلسلة نصية | تاريخ آخر تعديل |
downloaded_timestamp سلسلة نصية | تاريخ التنزيل |
last_updated_timestamp سلسلة نصية | تاريخ آخر تحديث |
last_updated_from_external_source_timestamp سلسلة نصية أو null | آخر تحديث من المصدر الخارجي |
للمقالات ثلاثة حقول حالة. واحد فقط يخبرك إن كان وكيل AI يستخدم المقالة:
embed_state: الحقل المهم. تعني"pending"و"embedding"أن المقالة لا تزال قيد المعالجة؛ وتعني"embedded"أنها متاحة ويستخدمها وكيل AI؛ وتعني"failed"أن المعالجة لم تكتمل ولا تُستخدم المقالة. هذا هو الحقل الذي تستطلعه بعد الكتابة.deploy_state:"draft"أو"published". تسمية لتنظيمك فقط، لا تؤثر في استخدام AI للمقالة.state: حالة جلب المحتوى الداخلية. يمكن لمعظم مستخدمي API تجاهلها. في مقالة URL، تعني"refresh_failed"أن أحدث تحديث لم يستبدل المحتوى المحفوظ.refresh_failure_reason: فئة ثابتة لفشل تحديث URL مصنف:"http_error"أو"soft_404"أو"off_domain_redirect"أو"auth_wall"أو"error_page"أو"empty_content"أو"thin_content". قد تكون فارغة إذا فشل الاستخراج قبل أن يتمكن Quickchat من تصنيف الصفحة. يبقى آخر محتوى محفوظ متاحًا ما لم يفشلembed_stateأيضًا.
سرد المقالات
Section titled “سرد المقالات”GET https://app.quickchat.ai/v1/api/knowledge_base/articles/
معلمات الاستعلام
| المعلمة | الوصف |
|---|---|
limit عدد صحيح | العناصر في الصفحة |
offset عدد صحيح | العناصر المتجاوزة |
types سلسلة نصية | التصفية بالنوع: Article أو Paragraph أو URL |
tags سلسلة نصية | التصفية بالوسم |
url سلسلة نصية | التصفية بالرابط |
title سلسلة نصية | التصفية بالعنوان |
query سلسلة نصية | البحث بالمحتوى |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/?limit=10&offset=0' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "offset": 0},)data = response.json()الاستجابة 200 OK
{ "items": [ { "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "state": "published", "deploy_state": "published", "embed_state": "embedded", "refresh_failure_reason": "", "version": 1, "max_available_version": 1, "url": null, "tags": ["policies"], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15", "downloaded_timestamp": "2026-01-15", "last_updated_timestamp": "2026-01-15", "last_updated_from_external_source_timestamp": null } ], "offset": 0, "limit": 10, "count": 1}لا تتضمن استجابة القائمة حقل content. استخدم جلب مقالة لجلب المحتوى الكامل لمقالة معينة.
جلب مقالة
Section titled “جلب مقالة”GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()الاستجابة 200 OK: تعيد كائن المقالة كاملًا (المخطط نفسه كما في استجابة إنشاء مقالة)، بما فيه حقل content.
تحديث مقالة
Section titled “تحديث مقالة”PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
جسم الطلب
| المعلمة | الوصف |
|---|---|
content سلسلة نصية | محتوى المقالة المحدّث |
title سلسلة نصية | العنوان المحدّث |
tags مصفوفة سلاسل نصية | الوسوم المحدّثة |
save_mode سلسلة نصية | "draft" (الافتراضي) أو "publish" |
يضبط الخيار save_mode: "draft" علامة deploy_state فقط؛ لا يحجب المحتوى عن AI. تُعالج المقالة المسودة وتُستخدم مثل المنشورة تمامًا. لا تعتمد عليه لتجهيز المحتوى قبل النشر؛ لا تكتب المقالة إلا عندما تكون جاهزًا لإتاحتها.
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish", },)data = response.json()الاستجابة 200 OK: تعيد كائن المقالة المحدّث.
حذف المقالات
Section titled “حذف المقالات”احذف مقالة أو أكثر بالمعرف.
نطاق الصلاحيات: write_allDELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/
جسم الطلب: مصفوفة JSON لمعرفات المقالات.
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '[1234, 5678]'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json=[1234, 5678],)الاستجابة 200 OK
البحث في المقالات
Section titled “البحث في المقالات”ابحث في محتوى المقالات بمطابقة النص.
نطاق الصلاحيات: read_allGET https://app.quickchat.ai/v1/api/knowledge_base/articles/search
معلمات الاستعلام
| المعلمة | الوصف |
|---|---|
query سلسلة نصية، مطلوبة | استعلام البحث |
is_case_insensitive قيمة منطقية | بحث غير حساس لحالة الأحرف (الافتراضي: true) |
with_title_url_and_tags قيمة منطقية | تضمين العنوان والرابط والوسوم في البحث (الافتراضي: true) |
strict_search قيمة منطقية | اشتراط تطابق تام (الافتراضي: false) |
num_of_display_articles عدد صحيح | عدد المقالات المعروضة (الافتراضي: 5) |
num_of_data_articles عدد صحيح | عدد المقالات التي يُبحث فيها (الافتراضي: 15) |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/search?query=return%20policy' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/search", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"query": "return policy"},)data = response.json()الاستجابة 200 OK
{ "article_snippets": [ { "article_id": 1234, "expository_sentence": "Our return policy allows returns within 30 days.", "query_words_ids": [ {"start_char": 4, "end_char": 10, "text": "return"} ] } ], "article_snapshots": { "items": [], "offset": 0, "count": 1 }}سرد الفقرات
Section titled “سرد الفقرات”اسرد جميع المقالات من نوع Paragraph. الفقرات مدخلات نصية قصيرة مستقلة دون عنوان، بخلاف المقالات الكاملة التي تملك عنوانًا ومتنًا.
نطاق الصلاحيات: read_allGET https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs
معلمات الاستعلام
| المعلمة | الوصف |
|---|---|
limit عدد صحيح | العناصر في الصفحة |
offset عدد صحيح | العناصر المتجاوزة |
query سلسلة نصية | التصفية بالمحتوى |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs?limit=10' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10},)data = response.json()الاستجابة 200 OK
{ "items": [ { "id": 1, "content": "Our return policy allows returns within 30 days." } ], "offset": 0, "count": 1}