Skip to Content
راهنماهابارگذاری اسناد

بارگذاری اسناد

هر سندی که به پایگاه دانش یک دستیار اضافه می‌شود — چه فایل چه متن خام — از یک الگوی سه‌مرحله‌ایِ یکسان عبور می‌کند: افزودن به صف ← پایش وضعیت ← استفاده.

افزودن به صف

یکی را انتخاب کنید:

  • یک فایل دارید (PDF، docx، txt و …): POST /v1/assistants/:assistantCode/documents، multipart/form-data، با نام فیلد files (تکرارشونده).
  • یک رشته دارید: POST /v1/assistants/:assistantCode/documents/text، بدنه‌ی JSON با filename + content.

هر دو، فوراً یک فهرست از نوع DocumentIngestJobResponse برمی‌گردانند — یک ورودی برای هر فایل (یا یک ورودی برای متن)، با status: "queued". برای شکل دقیق درخواست/پاسخ به مرجع Endpoint مراجعه کنید.

curl -X POST "https://<host>/v1/assistants/<assistantCode>/documents/text" \ -H "Authorization: Bearer $PLEXIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"filename": "faq.txt", "content": "Q: ...\nA: ..."}'

پایش وضعیت

مقدار id را از پاسخ بردارید و GET .../documents/jobs/:jobId را تا رسیدن status به ready یا failed Poll کنید. برای الگوی پیشنهادیِ Backoff به پایش وضعیت پردازش اسناد مراجعه کنید.

استفاده از آن

به‌محض status: "ready"، سند برای دستیار قابل جست‌وجو است — تماس گفتگوی بعدیِ شما می‌تواند با استفاده از آن پاسخ داده شود، و با resultFileId همان Job در GET .../documents نمایان می‌شود.

سازمان‌دهی با پوشه‌ها

هر دو Endpoint بارگذاری، یک folderId اختیاری (۳۲ کاراکتر Hex با حروف کوچک) می‌پذیرند تا سند را به‌جای ریشه، درون یک پوشه قرار دهند. در این مرجع، هیچ Endpoint ساخت پوشه‌ای در API عمومی وجود ندارد — شناسه‌ی پوشه‌ها از هر جایی که پوشه‌های دستیار شما از پیش ساخته شده‌اند (مثلاً کنسول) می‌آید. عدم ارسال folderId سند را در ریشه قرار می‌دهد.

بارگذاری چندین فایل در یک درخواست

Endpoint بارگذاری، چندین بخشِ files را در یک درخواست می‌پذیرد و برای هر فایل یک Job برمی‌گرداند:

curl -X POST "https://<host>/v1/assistants/<assistantCode>/documents" \ -H "Authorization: Bearer $PLEXIT_API_KEY" \ -F "files=@a.pdf" -F "files=@b.pdf" -F "files=@c.pdf"
{ "data": { "list": [ { "id": "...job1", "status": "queued", "path": "/a.pdf", "...": "..." }, { "id": "...job2", "status": "queued", "path": "/b.pdf", "...": "..." }, { "id": "...job3", "status": "queued", "path": "/c.pdf", "...": "..." } ], "count": 3 }, "response": { "status": "success", "message": "..." } }

هر شناسه‌ی Job را جداگانه Poll کنید — وضعیت آن‌ها مشترک نیست.

جایگزینیِ یک سند موجود (همان مسیر) در Job به‌صورت kind: "replace" به‌جای "create" نمایان می‌شود — بقیه‌ی این فرآیند دقیقاً یکسان است.