پرش به مطلب اصلی

کش پاسخ در گدارAI

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

این قابلیت برای درخواست‌های POST /v1/chat/completions و POST /v1/responses کاربرد دارد و روی هر درخواست با سرآیند x-godarai-cache-config فعال می‌شود. اگر درخواست از حافظه نهان پاسخ داده شود، گدارAI همان پاسخ ذخیره‌شده را برمی‌گرداند و وضعیت آن را در سرآیندهای پاسخ و گزارش رخدادها نشان می‌دهد.

اطلاع

کش پاسخ گدارAI با حافظه نهان پرامپت سمت ارائه‌دهنده مدل یکی نیست. حافظه نهان پرامپت معمولاً بخشی از پردازش ورودی را در ارائه‌دهنده سبک‌تر می‌کند؛ اما کش پاسخ در گدارAI می‌تواند کل فراخوانی به ارائه‌دهنده مدل را حذف کند.

چه زمانی از کش پاسخ استفاده کنیم؟

کش پاسخ زمانی بیشترین اثر را دارد که درخواست‌ها الگوی تکراری دارند و پاسخ قدیمی هنوز برای کاربر معتبر است؛ برای نمونه:

  • پرسش‌های پرتکرار در مرکز راهنمایی یا چت پشتیبانی
  • درخواست‌های ثابت برای خلاصه‌سازی متن‌های شناخته‌شده
  • پاسخ‌های راهنمای محصول که با فاصله کوتاه زیاد تکرار می‌شوند
  • مسیرهایی که تأخیر پایین و هزینه قابل پیش‌بینی برایشان مهم است
هشدار

برای داده‌های لحظه‌ای، قیمت‌های زنده، وضعیت سفارش، موجودی انبار یا هر پاسخی که سریع منقضی می‌شود، کش را فقط با ttl کوتاه و namespace دقیق فعال کنید.

حالت‌های کش

گدارAI دو حالت اصلی برای کش پاسخ دارد:

حالترفتارمناسب برای
simpleفقط وقتی پاسخ از کش برمی‌گردد که داده درخواست و پارامترهای مؤثر دقیقاً یکسان باشند.مسیرهای حساس به دقت، پرامپت‌های ثابت، پاسخ‌های کاملاً قابل پیش‌بینی
smartابتدا تطبیق دقیق بررسی می‌شود؛ اگر پاسخی پیدا نشود، متن آخرین پیام کاربر به‌صورت معنایی مقایسه می‌شود.پرسش‌های پرتکرار که کاربران با عبارت‌های متفاوت می‌پرسند

در کش هوشمند، آستانه شباهت با similarity_threshold تنظیم می‌شود. مقدار پیش‌فرض 0.9 نقطه شروع خوبی است: نه بیش از حد سخت‌گیرانه است و نه خیلی آزاد.

نکته

برای شروع، کش را روی یک مسیر کم‌ریسک با حالت simple فعال کنید، نرخ پاسخ از کش را ببینید و بعد برای پرسش‌های پرتکرار سراغ smart بروید.

فعال‌سازی کش در درخواست

برای فعال‌کردن کش، سرآیند x-godarai-cache-config را به درخواست اضافه کنید.

نمونه‌های زیر از Chat Completions استفاده می‌کنند. در Responses API همین سرآیند را همراه POST /v1/responses بفرستید و متن کاربر را در input قرار دهید. نمونه کامل را در راهنمای Responses API ببینید.

نمونه کش ساده

import requests

response = requests.post(
"https://YOUR_WORKSPACE.godarai.ir/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_GODARAI_TOKEN",
"Content-Type": "application/json",
"x-godarai-cache-config": "{\"type\":\"simple\",\"ttl\":600,\"namespace\":\"support\"}",
},
json={
"model": "openai:default:gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "شرایط لغو اشتراک چیست؟"
}
]
},
timeout=60,
)

response.raise_for_status()
print(response.json())

نمونه کش هوشمند

import requests

response = requests.post(
"https://YOUR_WORKSPACE.godarai.ir/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_GODARAI_TOKEN",
"Content-Type": "application/json",
"x-godarai-cache-config": "{\"type\":\"smart\",\"ttl\":900,\"similarity_threshold\":0.9,\"namespace\":\"helpdesk\"}",
},
json={
"model": "openai:default:gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "چطور رمز عبورم را بازیابی کنم؟"
}
]
},
timeout=60,
)

response.raise_for_status()
print(response.json())

پارامترهای x-godarai-cache-config

فیلدالزامیتوضیح
typeبلهیکی از simple یا smart.
ttlخیرمدت نگهداری پاسخ در کش، بر حسب ثانیه.
namespaceخیرفضای نام برای جداکردن کش بین محصول، محیط، پروژه یا جریان کاری.
similarity_thresholdبرای smartآستانه شباهت معنایی. معمولاً بین 0.8 تا 1.0 تنظیم می‌شود.

راهنمای انتخاب آستانه شباهت

مقداررفتارپیشنهاد
0.95 تا 1.0بسیار سخت‌گیرانهوقتی پاسخ اشتباه هزینه زیادی دارد.
0.88 تا 0.94متعادلبیشتر چت‌بات‌ها و پرسش‌های پرتکرار.
0.80 تا 0.87آزادترمسیرهای کم‌ریسک که پوشش بیشتر مهم‌تر است.

چرا namespace مهم است؟

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

  • support
  • helpdesk
  • mobile-app
  • customer-onboarding
  • tenant-123

اگر namespace مشخص نشود، گدارAI از مقدار پیش‌فرض استفاده می‌کند. برای مسیرهای حساس، بهتر است خودتان فضای نام مشخص و پایدار تعریف کنید.

چه درخواست‌هایی از حافظه نهان عبور می‌کنند؟

گدارAI درخواست‌های زیر را در هر دو حالت simple و smart با وضعیت bypass به مسیر عادی ارائه‌دهنده می‌فرستد:

  • درخواست‌های جریانی با stream: true
  • درخواست‌های Responses API با background: true
  • درخواست‌های Responses API که conversation یا previous_response_id دارند

این درخواست‌ها در ارائه‌دهنده وضعیت می‌سازند یا وضعیت قبلی را ادامه می‌دهند. پاسخ‌دادن از حافظه نهان می‌تواند این رفتار را حذف کند.

در حالت smart، موارد زیر نیز از حافظه نهان عبور می‌کنند:

  • درخواست‌هایی که tools یا tool_choice دارند
  • درخواست‌های Chat Completions که آخرین پیام آن‌ها از نقش user نیست
  • درخواست‌های Responses API که آخرین ورودی آن‌ها پیام کاربر نیست
  • درخواست‌هایی که آخرین پیام یا ورودی کاربر شامل تصویر، فایل یا محتوای غیرمتنی است

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

سرآیندهای پاسخ

گدارAI وضعیت کش را در پاسخ نشان می‌دهد:

سرآیندتوضیح
x-godarai-cache-statusوضعیت کش: hit، miss، bypass یا error.
x-godarai-cached-trace-idشناسه رخداد پاسخ اصلی، وقتی پاسخ از کش آمده باشد.
x-godarai-cache-similarity-scoreامتیاز شباهت در کش هوشمند، اگر تطبیق معنایی انجام شده باشد.

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

اثر کش روی هزینه

وقتی وضعیت کش hit باشد:

  • درخواست به ارائه‌دهنده مدل ارسال نمی‌شود.
  • هزینه تازه‌ای برای آن فراخوانی ایجاد نمی‌شود.
  • تأخیر پاسخ معمولاً کمتر می‌شود.
  • گزارش رخداد همچنان قابل ردیابی است و نشان می‌دهد پاسخ از کش آمده است.

در سنجه‌ها ممکن است مقدارهایی مثل «هزینه بدون کش» و «هزینه برآوردی صرفه‌جویی‌شده» را ببینید. این عددها کمک می‌کنند اثر واقعی کش را در کاهش مصرف بررسی کنید.

عیب‌یابی سریع

وضعیتعلت‌های رایجچه کار کنید؟
همیشه miss می‌بینیدپرامپت، پارامترها یا namespace بین درخواست‌ها فرق می‌کند.یک نمونه درخواست ثابت بسازید و همان را چند بار تکرار کنید.
وضعیت bypass استدرخواست جریانی یا وابسته به وضعیت ارائه‌دهنده است؛ یا در حالت smart ابزار، محتوای غیرمتنی یا شکل نامناسب پیام دارد.فیلدهای stream، background، conversation و previous_response_id را بررسی کنید. برای محدودیت‌های مخصوص smart، در صورت مناسب‌بودن از simple استفاده کنید.
کش هوشمند پاسخ برنمی‌گرداندآستانه شباهت خیلی سخت‌گیرانه است یا متن‌ها واقعاً متفاوت‌اند.با مقدارهایی مثل 0.9 شروع کنید و براساس داده واقعی تنظیم کنید.
پاسخ قدیمی برمی‌گرددttl طولانی است یا فضای نام بیش از حد عمومی انتخاب شده است.ttl را کوتاه‌تر کنید و namespace دقیق‌تری بگذارید.

جمع‌بندی

کش پاسخ در گدارAI فقط یک ابزار سرعت نیست؛ بخشی از کنترل مصرف است. با انتخاب حالت درست، ttl مناسب، فضای نام دقیق و بررسی سرآیندهای پاسخ، می‌توانید هم هزینه را کاهش دهید و هم رفتار محصول را قابل پیش‌بینی‌تر کنید.