یک عامل هوش مصنوعی می‌تواند حاشیه‌نویسی‌های خود را با نگاه به صفحه‌ای که تازه علامت‌گذاری کرده است، تأیید کند. با استفاده از GroupDocs.Annotation.Mcp، مدل زبانی بزرگ در Claude، Cursor یا GitHub Copilot یک سند را حاشیه‌نویسی می‌کند، از سرور می‌خواهد صفحه را به‌صورت PNG همراه با حاشیه‌نویسی رندر کند و سپس می‌سنجد آیا مکان‌گذاری صحیح است یا خیر. سرور این کار را به‌صورت محلی انجام می‌دهد؛ درخواست تنها یک جمله است:

Highlight the payment clause on page 2, then show me the page.

نسخه گام‌به‌گام همراه با پیکربندی و عیب‌یابی در مستندات موجود است: How to let an AI agent see the document page it annotated.

توجه: generate_pages_preview در حال حاضر برای فایل‌های PDF روی لینوکس، از جمله تصویر Docker، با خطا مواجه می‌شود؛ قبل از استفاده به محدودیت‌های صادقانه مراجعه کنید.

چرا یک عامل که نمی‌تواند خروجی خود را ببیند، موفقیت را به‌نادرستی گزارش می‌دهد؟

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

تفاوت بین «من یک هایلایت اضافه کردم» و «هایلایت روی بند پرداخت است» است. فقط بیان دوم مفید است و فقط نگاه به صفحه می‌تواند آن را تأیید کند.

چگونه یک عامل تصویر صفحه حاوی حاشیه‌نویسی را رندر می‌کند و آن را بررسی می‌کند؟

ابزارها یک حلقه کوتاه تشکیل می‌دهند.

  1. add_annotation حاشیه‌نویسی را می‌نویسد و contract_annotated.pdf را ذخیره می‌کند. فایل اصلی تغییر نمی‌کند.
  2. generate_pages_preview صفحات آن فایل را به‌صورت تصاویر PNG رندر می‌کند، حاشیه‌نویسی‌ها را درون تصویر می‌گذارد و به‌صورت درون‌خطی برمی‌گرداند. مقدار pages را می‌توانید به صورت 2، 1-3 یا 1,3,5 بدهید. اگر این پارامتر را حذف کنید، صفحه ۱ برگردانده می‌شود.
  3. عامل به تصویر نگاه می‌کند. اگر هایلایت متن اشتباهی را پوشش دهد، update_annotation پیام یا موقعیت و اندازه آن را بدون شروع مجدد تغییر می‌دهد.

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

قبل از زنجیره‌سازی ویرایش‌ها روی فایلی تولید شده، مقدار GROUPDOCS_MCP_OUTPUT_PATH را به پوشه‌ای غیر از پوشه ذخیره‌سازی تنظیم کنید. با مقدار پیش‌فرض (خروجی‌ها در پوشه ذخیره‌سازی می‌افتند) نوشتن دوم با خطای being used by another process مواجه می‌شود؛ با یک پوشه خروجی جداگانه add_reply، update_annotation و remove_annotations روی فایل تولید شده همه موفق می‌شوند. در تصویر Docker، مقدار -e GROUPDOCS_MCP_OUTPUT_PATH=/data/output را پاس کنید. جلسه زیر این تنظیم را فرض می‌کند، بنابراین فایل تولید شده در output/ قرار می‌گیرد.

عامل برای این کار به چه چیزی نیاز دارد؟

  • یک مشتری که محتوای تصویر را نشان دهد. Claude Desktop این قابلیت را دارد. یک مشتری ترمینال ممکن است فقط گزارش دهد که یک تصویر برگشت داده شده است. ابزار به‌همین شکل رفتار می‌کند؛ ممکن است تصاویر به‌صورت ساده نمایش داده نشوند.
  • یک مدل توانایی بینایی. تصاویر تنها به مدلی که ورودی تصویری می‌پذیرد، کمک می‌کند.
  • یک بازه صفحه کوچک. رندرینگ گران‌ترین فراخوانی این سرور است. فقط صفحه‌ای که نیاز دارید را درخواست کنید، نه یک فایل پنجاه صفحه‌ای.

پیش‌نمایش برای چه کاربردهای دیگری می‌تواند استفاده شود؟

  • پیش از حاشیه‌نویسی مکان‌یابی. ابتدا رندر کنید، بگذارید مدل صفحه را بخواند، سپس حاشیه‌نویسی را با مختصاتی که مدل استخراج کرده (نه حدس زده) قرار دهید.
  • بررسی یک ادغام. پس از import_annotations روی پیش‌نویس بازسازی‌شده، پیش‌نمایش نشان می‌دهد آیا یادداشت‌های وارد شده هنوز در مکان صحیح خود هستند یا نه.
  • نمایش نتیجه به مرورگر بدون باز کردن فایل.
  • تشخیص نشان ارزیابی. در حالت ارزیابی یک نشان آزمایشی بر روی هر صفحه قرار می‌گیرد، بنابراین در تصویر رندر شده قابل مشاهده است.

مثال جلسه (مختصر شده)

این یک تصویرسازی ساخته‌شده از رفتار مستند شده ابزارهاست، نه یک اسکرین‌شات واقعی. فرض می‌کند پلتفرمی وجود دارد که رندر کننده پیش‌نمایش برای فایل‌های PDF کار می‌کند، مانند ویندوز با dnx.

You:   Highlight the payment clause on page 2 of contract.pdf, then show me the page.

Agent: [calls add_annotation: type=highlight, page=2, x=100, y=250,
        text="Payment clause"]
       Added highlight annotation to contract.pdf on page 2.
       [calls generate_pages_preview on output/contract_annotated.pdf, pages="2"]
       (image: page 2, rendered with the highlight)
       The highlight sits on the "Delivery" paragraph, one block above the
       payment clause. Moving it down.
       [calls get_annotations, then update_annotation: y=330]
       Updated annotation 1 in output/contract_annotated.pdf.
       (The agent passes the saved file name from each result to the next call.)

رندرینگ کجا اجرا می‌شود و چه چیزی از ماشین خارج می‌شود؟

موتور PNG را روی ماشین شما تولید می‌کند. سپس تصویر همانند هر محتوای پیام دیگر به ارائه‌دهنده مدل شما ارسال می‌شود، بنابراین با یک مدل میزبانی‌شده در ابر، پیش‌نمایش یک عکس از آن صفحه را می‌فرستد. برای اسناد حساس، از مدلی که به‌صورت محلی میزبانی می‌شود استفاده کنید.

محدودیت‌های صادقانه

  • پیش‌نمایش روی لینوکس. generate_pages_preview در حال حاضر برای فایل‌های PDF روی لینوکس، از جمله تصویر Docker، با خطای TypeInitializationException برای Gdip (به‌دلیل عدم پشتیبانی System.Drawing.Common در پلتفرم‌های غیر‑ویندوز) شکست می‌خورد؛ اسناد Word و سایر اسناد Office رندر می‌شوند و روی ویندوز با dnx تمام فرمت‌ها رندر می‌شوند. سایر ده ابزار تحت تأثیر قرار نمی‌گیرند.
  • حالت ارزیابی. یک نشان آزمایشی در بالای هر صفحه از فایل حاشیه‌نویسی‌شده و پیش‌نمایش‌ها قرار می‌گیرد؛ قبل از اعتماد به خروجی، get_license_status را بررسی کنید.
  • موقعیت‌گذاری تقریبی همچنان تقریبی می‌ماند. پیش‌نمایش به مدل اجازه می‌دهد که یک حاشیه‌نویسی اشتباه را ببیند؛ اما مختصات حدسی را به مقادیر دقیق تبدیل نمی‌کند.
  • یک مدل فقط‑متنی نمی‌تواند بررسی کند. این مدل هنوز بلوک متنی را دریافت می‌کند، اما نمی‌تواند بگوید صفحه چگونه به‌نظر می‌رسد.

سوالات متداول

آیا یک هوش مصنوعی می‌تواند بررسی کند که یک نظر در کجا روی صفحه قرار گرفته است؟ بله، به‌شرطی که مدل ورودی تصویری بپذیرد. عامل صفحه حاشیه‌نویسی‌شده را با generate_pages_preview رندر می‌کند و تصویر را بررسی می‌نماید، سپس در صورت نیاز با update_annotation حاشیه‌نویسی را تنظیم می‌کند.

چگونه می‌توانم یک صفحه PDF حاشیه‌نویسی‌شده را برای عامل پیش‌نمایش کنم؟ شماره صفحه را بپرسید، برای مثال «صفحات ۱‑۳ از قرارداد حاشیه‌نویسی‌شده را رندر کن تا نظرات را بررسی کنم». عامل مقدار pages را به صورت 1-3 می‌فرستد و PNGها به‌صورت درون‌خطی برمی‌گردند.

چرا پیش‌نمایش در کانتینر Docker من شکست می‌خورد؟ برای فایل‌های PDF ابزار روی لینوکس، از جمله تصویر Docker، با خطای Gdip در زمان مقداردهی اولیه مواجه می‌شود. اسناد Word و سایر اسناد Office رندر می‌شوند و روی ویندوز با dnx تمام فرمت‌ها رندر می‌شوند.

بیشتر بخوانید