ارجاعها
هر پاسخ میگوید از کدام بخشها آمده است. اینجا میبینید چطور بخوانیدشان.
پاسخی که نتواند منبعش را نشان بدهد، حدسی است با دستور زبان خوب. هر پاسخ مستندی که این API برمیگرداند، بخشهای پشتش را نام میبرد.
یک ارجاع شامل چیست
ارجاعها بهصورت فهرستی روی پیام دستیار میآیند. هر ورودی یک بخش بازیابیشده را مشخص میکند:
| فیلد | نوع | توضیح |
|---|---|---|
resource_id | uuid | سندی که این بخش از آن آمده است. |
resource_title | string | عنوان همان سند، تا بدون فراخوانی دوم بتوانید برچسبش را نشان دهید. |
chunk_index | integer | جای بخشِ بازیابیشده در میان بخشهای آن سند. |
metadata | object | منشأ آن بخش — page برای PDF و start_time و end_time برای صوت و ویدیو. |
مقدار metadata منشأ را نشان میدهد و بسته به نوع سند فرق دارد: page برای PDF، و start_time و end_time برای صوت و ویدیو. از آن برای لینک مستقیم به همان نقطهٔ منبع استفاده کنید، نه فقط نام بردن فایل.
بخشها و منبعها
همین اطلاعات دو بار و در دو سطح جزئیات میآید. مقدار citations فهرست ساده و بدون تکرار است — همان چیزی که برای نمایش برچسبهای منبع میخواهید. مقدار response.parts پاسخ ساختاریافته است، جایی که هر بخش یک تکه متن است با تنها منبعی که از آن آمده.
{
"status": "ok",
"data": {
"session": {
"id": "b6d2e1a4-77c3-4f59-9a10-2e8d6c4b0f37",
"title": "Anticoagulant discharge window",
"workspace_id": "8f14e45f-ceea-467a-9f4c-1a2b3c4d5e6f",
"created_at": "2026-08-05T10:02:11.004Z",
"updated_at": "2026-08-05T10:02:14.551Z"
},
"user_message": {
"id": "5e2c8a03-49bd-4c17-8f6a-31d0b7e5a924",
"role": "user",
"content": "How long do anticoagulant patients stay under observation?",
"response": null,
"citations": [],
"resource_ids": [],
"image_url": null,
"created_at": "2026-08-05T10:02:11.219Z"
},
"assistant_message": {
"id": "7c1b4e90-2af6-4d38-b5c1-8e07a3f62d15",
"role": "assistant",
"content": "Patients on anticoagulants require a 48-hour observation window before discharge.",
"response": {
"type": "answer",
"parts": [
{
"text": "Patients on anticoagulants require a 48-hour observation window before discharge.",
"source": {
"chunk_id": "e0c9a71d-5b32-4f88-9a04-6c1d2e83f507",
"resource_id": "3c9a1b77-0d24-4e8b-b0f1-7a5e9c2d4b81",
"resource_title": "Discharge protocol 2026.pdf",
"chunk_index": 7,
"metadata": { "source_type": "pdf", "page": 4 }
}
}
],
"form": null
},
"citations": [
{
"resource_id": "3c9a1b77-0d24-4e8b-b0f1-7a5e9c2d4b81",
"resource_title": "Discharge protocol 2026.pdf",
"chunk_index": 7,
"metadata": { "source_type": "pdf", "page": 4 }
}
],
"resource_ids": ["3c9a1b77-0d24-4e8b-b0f1-7a5e9c2d4b81"],
"image_url": null,
"created_at": "2026-08-05T10:02:14.480Z"
}
}
}اگر میخواهید منبعها را زیر پاسخ فهرست کنید از citations استفاده کنید. اگر میخواهید هر منبع را به جملهای که پشتیبانیاش میکند بچسبانید — همان کاری که پانویس میکند — از response.parts استفاده کنید.
بعضی پیامهای قدیمیتر با شکل دیگری ذخیره شدهاند، اما API هنگام خواندن تبدیلشان میکند — شما فقط لازم است parts را مدیریت کنید.
نمایش درستشان
هنگام نمایش، دو کار ارزش انجام دادن دارند:
- بر اساس منبع تکرارزدایی کنید، نه بر اساس بخش. سه بخش از یک PDF یعنی یک برچسب منبع، نه سه تا.
- برچسب را با کمک metadata به همان موقعیت ارجاعشده در سند لینک کنید. ارجاعی که خواننده نتواند دنبالش کند تزئین است.