رفتن به محتوا

راهنماها

پرتال اسناد مشتری

به کاربران واردشده اجازه دهید دربارهٔ اسنادی که اپلیکیشن شما اجازهٔ خواندنشان را داده سؤال بپرسند و پاسخی بگیرند که به منبع اصلی پیوند دارد.

بخش‌های این سناریو چطور به هم وصل‌اند

  1. 01پرسش کاربر مجاز
  2. 02بک‌اند پرتال
  3. 03جست‌وجوی اسناد در مهوش
  4. 04پاسخ همراه با منبع

یک مثال واقعی

بیمهٔ آرمان را در نظر بگیرید. مشتریان می‌توانند بیمه‌نامه‌شان را از پرتال مشتریان دانلود کنند، اما این اسناد طولانی و پر از بند و تبصره‌اند؛ برای همین بسیاری از مشتریان هنوز برای یک پرسش ساده با مرکز تماس تماس می‌گیرند: «آیا این مورد تحت پوشش است؟»

با مهوش، پرتال یک کادر از بیمه‌نامه‌ات بپرس پیدا می‌کند. مشتری واردشده پرسشش را می‌نویسد و پاسخی به زبان ساده می‌گیرد که به بند دقیقی در بیمه‌نامهٔ خودش اشاره می‌کند — هرگز بیمه‌نامهٔ کس دیگری.

آنچه کسب‌وکار به دست می‌آورد

  • پاسخ در چند ثانیه، در هر ساعتی، برای پرسش‌هایی که قبلاً تماس تلفنی لازم داشتند.
  • پاسخ قابل اعتماد. هر پاسخ به بندی که از آن آمده پیوند دارد تا مشتری و کارکنان بتوانند بررسی‌اش کنند.
  • حریم خصوصی از پایه. پرتال پیش از هر جست‌وجویی در مهوش تعیین می‌کند مشتری اجازهٔ خواندن کدام اسناد را دارد.
  • تماس‌های تکراری کمتر، تا کارشناس‌ها روی خسارت‌ها و پرونده‌های پیچیده تمرکز کنند.

با یک پرسش واقعی ببینید

مرحلهچه اتفاقی می‌افتددر این مثال
۱. پرسش مشتریمشتری واردشده پرسشی در پرتال می‌نویسد.«آیا بیمه‌نامهٔ منزل من خسارت آب‌گرفتگی ناشی از واحد همسایه را پوشش می‌دهد؟»
۲. بررسی دسترسیپرتال تعیین می‌کند این مشتری اجازهٔ خواندن کدام اسناد را دارد.فقط بیمه‌نامهٔ HP-20931 و vector store آن.
۳. بازیابیمهوش فقط در همان vector store جست‌وجو می‌کند.بند ۴-۲ «خسارت آب» و بند ۷ «استثنائات».
۴. پاسخمدل با زبان ساده و همراه با ارجاع پاسخ می‌دهد.«بله. بند ۴-۲ نشت آب از واحد مجاور را پوشش می‌دهد… بند ۷ نشتی تدریجی را که از آن مطلع بوده‌اید مستثنا می‌کند.»
۵. نمایشهر ارجاع سند درست را در نمایشگر خود پرتال باز می‌کند.پیوند به صفحهٔ ۶ بیمه‌نامهٔ همان مشتری.

بک‌اند پرتال پس از بررسی دسترسی، این request را می‌فرستد و پاسخ را همراه با ارجاع دریافت می‌کند:

// Runs only after the portal confirmed this customer owns policy HP-20931.
const response = await fetch("https://api.mahvashai.ir/v1/responses", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.MAHVASH_PROJECT_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "auto",
    input: "آیا بیمه‌نامهٔ منزل من خسارت آب‌گرفتگی ناشی از واحد همسایه را پوشش می‌دهد؟",
    tools: [{ type: "file_search", vector_store_ids: [policy.vectorStoreId] }],
    include: ["file_search_call.results"],
  }),
});

تنها vector storeی که جست‌وجو می‌شود، مال بیمه‌نامهٔ HP-20931 است. اگر مشتری شناسهٔ vector store را در مرورگر دستکاری کند، پرتال از آن استفاده نمی‌کند؛ چون vector store در سرور و از روی رکوردهای خود مشتری انتخاب می‌شود.

نکته:نام شرکت، مشتری و جزئیات سیاست‌ها در این مثال ساختگی است. مهوش بر اساس اسناد و داده‌هایی که شما فراهم می‌کنید پاسخ می‌دهد و سیاستی از خودش نمی‌سازد.

کنترل دسترسی با اپلیکیشن شماست

اینکه کدام کاربر کدام سند را ببیند، در پرتال شما تعیین می‌شود. پروژه‌ها و vector storeهای مهوش دامنهٔ جست‌وجو را محدود می‌کنند، اما کاربران شما را نمی‌شناسند؛ پس نمی‌توانند جای کنترل دسترسی اپلیکیشن شما را بگیرند.

به همین دلیل بک‌اند پرتال همیشه دو کار را به ترتیب انجام می‌دهد: اول دسترسی کاربر را در پایگاه دادهٔ خودش بررسی می‌کند و فقط بعد از آن تعیین می‌کند مهوش در کدام vector store جست‌وجو کند.

آپلود و ایندکس اسناد

  • هر سند مجاز را با /v1/files آپلود کنید، آن را به یک vector store اضافه کنید و صبر کنید تا وضعیتش completed شود.
  • شناسه‌های file-... و vs_... را روی رکورد سند در سیستم خودتان ذخیره کنید.
  • vector storeها را بر اساس مرزهای دسترسی طراحی کنید. اسنادی را که گروه یکسانی از کاربران اجازهٔ خواندنشان را دارند، می‌توانید در یک vector store بگذارید؛ اما مشتریانی که هرگز نباید محتوای یکدیگر را ببینند، vector store جداگانه یا حتی پروژهٔ جداگانه لازم دارند.

پاسخ به یک پرسش مجاز

  1. ۱کاربر پرتال را احراز کنید و اسنادی را که اجازهٔ خواندنشان را دارد پیدا کنید.
  2. ۲مشخص کنید این اسناد در کدام vector storeها هستند. اگر هیچ vector storeی پیدا نشد، کار را متوقف کنید.
  3. ۳یک request به Responses بفرستید که file_search آن فقط به همان vector storeهای مجاز محدود است.
  4. ۴اگر رابط کاربری شما بخش‌های پیداشده را نمایش می‌دهد، include: ["file_search_call.results"] را هم اضافه کنید.
  5. ۵به‌جای استخراج نام فایل از متن پاسخ، annotationهای file_citation را بخوانید.

APIهای این مرحله

پیاده‌سازی جست‌وجو در بک‌اند

در این نمونه شناسهٔ vector store فقط پس از موفقیت بررسی دسترسی پذیرفته می‌شود و متن پاسخ و اطلاعات ارجاع‌ها به پرتال برمی‌گردد.

مهم:شناسهٔ پروژه یا vector store هرگز نباید از مرورگر گرفته شود و مبنای اعتماد قرار گیرد. هر شناسه‌ای که از سمت کلاینت می‌آید را فقط کلیدی برای جست‌وجو در رکوردهای خودتان بدانید، نه مجوز دسترسی.

نمونهٔ پیاده‌سازی

// The portal authorizes document access before this server call.
const permitted = await db.permissions.canRead(userId, documentId);
if (!permitted) throw new Error("Forbidden");
const storeId = await db.documents.vectorStoreId(documentId);
const response = await fetch("https://api.mahvashai.ir/v1/responses", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.MAHVASH_PROJECT_KEY!, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "auto", input: "Answer from the document and cite the source: " + question,
    tools: [{ type: "file_search", vector_store_ids: [storeId] }],
    include: ["file_search_call.results"] })
}).then(r => r.json());
return { answer: response.output, responseId: response.id };

نمونهٔ خروجی این مرحله

{
  "id": "resp_example",
  "status": "completed",
  "output": [
    {
      "type": "message",
      "content": [
        {
          "type": "output_text",
          "text": "The agreement renews annually...",
          "annotations": [
            {
              "type": "file_citation",
              "file_id": "file-<uuid>"
            }
          ]
        }
      ]
    }
  ]
}

این فقط بخشی از response به‌عنوان نمونه است. روند کار و داده‌های مشتری در اپلیکیشن خود شما مدیریت می‌شوند.

نمایش پاسخ همراه با منبع

هر ارجاع را به‌صورت پیوندی به نمایشگر اسناد خودتان نشان دهید که کنترل دسترسی شما را اعمال می‌کند. شناسه‌های file-... مهوش را به رکوردهای سند خودتان وصل کنید و هیچ‌وقت نشانی دانلود مستقیمی به کاربر ندهید که کنترل دسترسی پرتال را دور بزند.

APIهای این مرحله

وقتی نتیجه‌ای نیست یا دسترسی قطع شده

  • هنوز چیزی ایندکس نشده: به‌جای پاسخ خالی، پیام «در حال آماده‌سازی» نشان دهید.
  • دسترسی کاربر لغو شده: بلافاصله جست‌وجو از طرف او را متوقف کنید و پیوندهایتان به آن سند را بردارید.
  • پاسخ ارجاعی ندارد: آن را به‌عنوان پاسخ بدون منبع نشان دهید، نه پاسخ مستند.

همین الگو برای کسب‌وکارهای دیگر

  • بیمه — متن بیمه‌نامه، سقف پوشش و روال اعلام خسارت.
  • حقوقی و املاک — پرسش دربارهٔ قراردادها و اجاره‌نامه‌های خود موکل.
  • منابع انسانی — آیین‌نامه‌ها و مزایای کارکنان، فقط برای پرسنل.
  • آموزش — مقررات و راهنمای دوره‌ها برای هر دانشکده یا برنامه.
  • تولیدکنندگان و تأمین‌کنندگان B2B — دفترچهٔ راهنما، گواهی‌ها و مشخصات فنی برای هر حساب مشتری.