داشبورد توسعه‌دهنده
پرسش از هوش مصنوعی
پرسش از هوش مصنوعی

افزودن مدل‌های Cloudflare و API استخراج ​

Date: ۱۴۰۵-۰۸-۰۲ / (2026-10-24)

خلاصه ​

AvalAI هشت مدل میزبانی‌شده در Cloudflare را برای استخراج، تصمیم‌گیری، گفت‌وگوی متنی و بینایی اضافه می‌کند. Clairic از نقطه پایانی جدید /v1/extraction استفاده می‌کند و سه مدل Clef از /v1/decisions و /v1/systemone. مدل‌های PhoneLLM، Apertus، EuroLLM و Moondream نیز به گزینه‌های Chat Completions افزوده می‌شوند.


جزئیات ​

Clairic: استخراج، محاسبه و پیش‌بینی با نوع مشخص ​

مدل cf.clairic متن یا تصویر تعبیه‌شده را می‌خواند و برای هر فیلد، پاسخی با نام و نوع مشخص برمی‌گرداند. این مدل می‌تواند شماره فاکتور را استخراج کند، مبلغ را از اطلاعات ورودی محاسبه کند، تاریخ را به دست آورد، فهرست بسازد، مقداری را در محدوده تعیین‌شده برآورد کند یا دنباله‌ای از مقدارها را پیش‌بینی کند. انواع فیلد عبارت‌اند از text، number، date، time، datetime، duration، list، estimate و forecast.

Cloudflare در ۲۷ مهر ۱۴۰۵ (2026-10-19) مدل Clairic را به‌صورت پیش‌نمایش معرفی کرد. در AvalAI از /v1/extraction با model: "cf.clairic"، فیلد state و شیء fields استفاده کنید. Cloudflare این مدل را مشابه System One توصیف می‌کند، اما قرارداد fields آن با قرارداد questions در Clef فرق دارد. تغییر مدل یا نشانی یک درخواست تصمیم‌گیری به‌تنهایی آن را به درخواست استخراج تبدیل نمی‌کند.

تفاوت استخراج و پیش‌بینی را در نظر بگیرید. فیلد متنی می‌تواند بخشی از شواهد را مشخص کند؛ برآورد یا پیش‌بینی، عدم قطعیت درباره مقداری را بیان می‌کند که در شواهد به‌صراحت وجود ندارد. مقدار نامشخص ممکن است null باشد، حتی اگر پاسخ یک حدس در guess هم داشته باشد. نتیجه را از value بخوانید، مقدار نامشخص را حفظ کنید و محاسبات یا تاریخ‌های مهم را در کد برنامه بررسی کنید. مرجع API استخراج و راهنمای مدل‌های استخراج این رفتار را توضیح می‌دهند.

Clef: تصمیم‌های مشخص بر پایه شواهد مشترک ​

سری Clef از Cloudflare به‌جای پاسخ گفت‌وگویی، ارزیابی‌هایی با نوع مشخص برمی‌گرداند. این مدل‌ها برای مسیریابی درخواست‌های پشتیبانی، بررسی ارتباط متن، دسته‌بندی محتوا و امتیازدهی بر اساس معیارهای مرتب مناسب‌اند:

  • cf.clef مدل تصمیم‌گیری با ۲۷ میلیارد پارامتر و پنجره ورودی ۶۵٬۵۳۶ توکنی است.
  • cf.clef-flash نسخه‌ای با ۹ میلیارد پارامتر و پنجره ورودی ۲۴٬۵۷۶ توکنی است و کمترین قیمت ورودی را در این گروه دارد.
  • cf.clef-omni از معماری آمیخته‌ای از متخصصان (mixture-of-experts) با ۳۰ میلیارد پارامتر کل، ۳ میلیارد پارامتر فعال و پنجره ورودی ۶۴٬۰۰۰ توکنی استفاده می‌کند. ساختار بومی سرویس میزبانی‌شده Cloudflare برای آن، وضعیت متنی یا JSON و ورودی تعبیه‌شده تصویر، صوت و ویدئو را مستند کرده است. ساختار سرویس میزبانی‌شده Clef و Clef-flash فقط تصاویر تعبیه‌شده را مستند می‌کند؛ توضیحات گسترده‌تر درباره قابلیت ویدئویی مدل یا اجرای آن در زیرساخت خودتان، فیلد میزبانی‌شده videos را به این دو مدل اضافه نمی‌کند. این ساختارهای بالادستی ثابت نمی‌کنند که همه قالب‌های رسانه در هر دو نقطه پایانی AvalAI کار می‌کنند.

خبر معرفی Clef در ۹ مهر (2026-10-01) و به‌روزرسانی چندرسانه‌ای در ۱۷ مهر (2026-10-09) خانواده مدل را معرفی می‌کنند. هر سه شناسه عمومی در AvalAI از طریق /v1/decisions و /v1/systemone در دسترس‌اند. مثال‌های این خبر از متن مشترک استفاده می‌کنند. پیش از افزودن رسانه، یادداشت‌های محدوده رسانه در System One را بخوانید و مدل و قالب ورودی انتخاب‌شده را بررسی کنید.

پیش از نوشتن برنامه، ساختار درخواست را انتخاب کنید:

رابطشواهد مشترکپرسش‌هاانواع پرسش
Decisionsinputآرایه‌ای از اشیای نام‌دارpredicate, choice, score
System One بومیstateشیء با کلیدهایی برابر شناسه پرسش‌هاnoul, choice, score

در Decisions برای Choice از choices و برای Score از levels استفاده کنید. در System One بومی هر دو از criteria استفاده می‌کنند. پاسخ Decisions یک آرایه answers دارد؛ پاسخ System One بومی یک شیء answers. حتی وقتی مدل و موضوع ارزیابی یکسان‌اند، این دو قالب را جدا نگه دارید.

گفت‌وگوی متنی و بینایی ​

  • cf.phonellm-mini-alpha-2 مدلی باز برای عامل‌های مکالمه صوتی است که بر قابلیت‌های Nemotron Nano 30B بنا شده و حالت تفکر در آن غیرفعال است. AvalAI آن را به‌صورت مدل متنی Chat Completions با فراخوانی تابع و پنجره زمینه ۲۶۲٬۱۴۰ توکنی ارائه می‌دهد. در گردش‌کار صوتی، تشخیص و تولید گفتار بر عهده اجزای جداگانه است؛ نام مدل به این معنی نیست که در این مسیر صوت دریافت یا تولید می‌کند.
  • cf.apertus-v1.5-8b مدل چندزبانه Swiss AI با ۸ میلیارد پارامتر و پنجره زمینه ۲۶۲٬۱۴۴ توکنی است. Cloudflare رویکرد استفاده از داده‌های آموزشی باز را برای آن توضیح می‌دهد. این خبر گفت‌وگوی متنی از طریق AvalAI را پوشش می‌دهد و دسترسی به بینایی یا فراخوانی ابزار را برای این مدل اعلام نمی‌کند.
  • cf.eurollm-9b-it مدل چندزبانه با ۹ میلیارد پارامتر است که روی ۴ تریلیون توکن شامل داده‌های وب، متن‌های موازی و مجموعه‌داده‌های گزیده آموزش دیده است. فهرست AvalAI پنجره زمینه آن را ۳۲٬۷۶۸ توکن اعلام می‌کند؛ صفحه Cloudflare مقدار ۳۲٬۰۰۰ را درج کرده است. برای برنامه‌ریزی این مسیر از مقدار فهرست AvalAI استفاده کنید و اندازه ورودی‌های موردنیاز برنامه را بیازمایید.
  • cf.moondream3.1-9b-a2b مدل زبان و بینایی با معماری آمیخته‌ای از متخصصان، ۹ میلیارد پارامتر کل و ۲ میلیارد پارامتر فعال است. این مدل در AvalAI از Chat Completions با ورودی تصویر و پنجره زمینه ۳۲٬۷۶۸ توکنی پشتیبانی می‌کند. Cloudflare وظایف بومی query، caption، point و detect را مستند کرده است؛ این کلیدها و قالب پاسخ بومی آن‌ها با ساختار Chat Completions در AvalAI یکسان نیستند. در این مسیر messages را بفرستید و پیام دستیار را بخوانید.

هر هشت شناسه از سطح 0 در AvalAI در دسترس‌اند. پیشوند cf. و املای دقیق شناسه را در درخواست حفظ کنید. صفحه ارائه‌دهنده Cloudflare اطلاعات دسترسی، محدودیت مدل‌ها و نکات اتصال را گردآوری می‌کند.

انتخاب نقطه پایانی ​

مدل‌هانقطه پایانی AvalAIساختار درخواست
cf.clairic/v1/extractionstate و fields با نوع مشخص
cf.clef, cf.clef-flash, cf.clef-omni/v1/decisions یا /v1/systemoneساختار تصمیم‌گیری انتخاب‌شده در جدول بالا
cf.phonellm-mini-alpha-2, cf.apertus-v1.5-8b, cf.eurollm-9b-it, cf.moondream3.1-9b-a2b/v1/chat/completionsmessages؛ محتوای تصویری برای بینایی Moondream

درخواست‌ها را به https://api.avalai.ir با هدر Authorization: Bearer $AVALAI_API_KEY بفرستید. کلید را در محیط سرور نگه دارید. انتخاب مدل، نقاط پایانی دیگری را فعال نمی‌کند و به معنی استفاده از احراز هویت بومی یا نشانی‌های وابسته به حساب Cloudflare نیست.

قیمت‌گذاری و زمینه در AvalAI ​

قیمت‌های زیر از فهرست فعلی AvalAI و به دلار آمریکا برای هر یک میلیون توکن هستند. مقدار زمینه، محدودیت توکنی مدل را نشان می‌دهد؛ ساختار فیلدها، پرسش‌ها، رسانه و تاریخچه گفت‌وگو نیز از ظرفیت ورودی استفاده می‌کنند.

شناسه مدل AvalAIپنجره زمینه / ورودیورودیورودی از حافظه نهانخروجی
cf.clairic65,536$0.10$0.00$0.00
cf.clef65,536$0.24$0.00$0.00
cf.clef-flash24,576$0.038$0.00$0.00
cf.clef-omni64,000$0.15$0.00$0.00
cf.phonellm-mini-alpha-2262,140$0.06$0.006$0.24
cf.apertus-v1.5-8b262,144$0.10$0.01$0.20
cf.eurollm-9b-it32,768$0.10$0.01$0.20
cf.moondream3.1-9b-a2b32,768$0.30$0.03$1.00

قیمت صفر خروجی در Clairic و Clef به معنی رایگان بودن کل درخواست نیست؛ ورودی هزینه دارد. قیمت صفر ورودی از حافظه نهان، استفاده واقعی از آن، پارامترهای کنترل یا مدت نگهداری را ثابت نمی‌کند. مقدارهای واقعی usage و estimated_cost را بررسی کنید و تعداد توکن قابل‌محاسبه را فقط از متن قابل‌مشاهده حدس نزنید. Clairic ممکن است چند گذر پردازشی انجام دهد و رسانه و ساختار فیلدها نیز بر مصرف ورودی اثر بگذارند. صفحه قیمت‌گذاری فهرست منتشرشده فعلی را نشان می‌دهد.

مثال درخواست و پاسخ API ​

درخواست‌های زیر نمونه‌هایی بر پایه ساختار مستندشده و سازگارشده برای AvalAI هستند. پاسخ‌ها مثال‌های توضیحی کامل‌اند و از فراخوانی زنده AvalAI ثبت نشده‌اند. مقدار پاسخ‌ها، احتمال‌ها، تعداد توکن، زمان، نرخ تبدیل ارز و هزینه فرضی‌اند. این نمونه‌ها روش خواندن هر قالب را نشان می‌دهند؛ کیفیت مدل یا سازگاری زنده برنامه را اثبات نمی‌کنند. هر درخواست curl یک تلاش با مهلت محدود می‌فرستد.

استخراج و محاسبه فیلدهای فاکتور با Clairic ​

این مثال استخراج مستقیم، محاسبه تاریخ و مبلغ پرداخت، فهرست، شماره سفارش خرید نامشخص و یک برآورد را ترکیب می‌کند. تأخیر پیش‌بینی‌شده در پرداخت با سررسید قراردادی فرق دارد.

bash
curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 60 \
  https://api.avalai.ir/v1/extraction \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "model": "cf.clairic",
    "state": "Invoice INV-2291 from Northwind Supply, issued 2026-09-02, net 30. 4 pallets at $250.00 each, shipping $80.00. Contact: Dana Ruiz, Priya Shah.",
    "fields": {
      "invoice_number": { "type": "text" },
      "due_date": { "type": "date", "instructions": "Issue date plus the net payment days" },
      "total": { "type": "number", "decimals": 2, "unit": "USD", "instructions": "Amount due including shipping" },
      "contacts": { "type": "list", "items": "text" },
      "po_number": { "type": "text", "instructions": "Purchase order number" },
      "days_to_pay": { "type": "estimate", "min": 0, "max": 120, "step": 1, "instructions": "Days after issue until this invoice is paid" }
    }
  }'

پاسخ توضیحی کامل، بر پایه قالب مستندشده Clairic در Cloudflare و فیلدهای هزینه AvalAI:

json
{
  "model": "cf.clairic",
  "answers": {
    "invoice_number": {
      "type": "text",
      "p_null": 3.8e-10,
      "span": [
        8,
        16
      ],
      "guess": "INV-2291",
      "confidence": 1.0,
      "value": "INV-2291"
    },
    "due_date": {
      "type": "date",
      "p_null": 1.9e-08,
      "guess": "2026-10-02",
      "confidence": 0.9999,
      "value": "2026-10-02"
    },
    "total": {
      "type": "number",
      "p_null": 2.3e-08,
      "guess": 1080,
      "confidence": 0.9999,
      "value": 1080
    },
    "contacts": {
      "type": "list",
      "value": [
        "Dana Ruiz",
        "Priya Shah"
      ],
      "spans": [
        [
          120,
          129
        ],
        [
          131,
          141
        ]
      ],
      "confidence": 0.9999
    },
    "po_number": {
      "type": "text",
      "p_null": 1.0,
      "span": [
        8,
        16
      ],
      "guess": "INV-2291",
      "confidence": 0.9995,
      "value": null
    },
    "days_to_pay": {
      "type": "estimate",
      "value": 30,
      "mean": 29.535,
      "median": 30,
      "p10": 21,
      "p90": 38,
      "p_below": 5.9e-06,
      "p_above": 1.2e-05
    }
  },
  "truncated": false,
  "usage": {
    "state_tokens": 61,
    "image_tokens": 0,
    "schema_tokens": 472,
    "input_tokens": 655,
    "output_tokens": 0,
    "passes": 3
  },
  "estimated_cost": {
    "unit": "0.0000655000",
    "irt": 17.69,
    "exchange_rate": 270000
  }
}

مقدار answers.total.value را بخوانید، نه کل شیء پاسخ فیلد را. شماره سفارش خرید نامشخص همچنان null است و guess جای آن را نمی‌گیرد. p10 و p90 عدم قطعیت برآورد تأخیر پرداخت را نشان می‌دهند؛ این مقدارها وعده تاریخ پرداخت نیستند. پیش از استفاده از پاسخی که ممکن است به شواهد حذف‌شده وابسته باشد، truncated را بررسی کنید. هزینه فرضی ورودی از فرمول 655 × $0.10 / 1,000,000 = $0.0000655 به دست می‌آید؛ برای درخواست واقعی از مقدارهای حسابداری بازگشتی استفاده کنید.

برای استخراج از تصویر، قالب تعبیه‌شده مستندشده images را به کار ببرید؛ نشانی تصویر راه دور یا image_url در Chat Completions قالب این نقطه پایانی نیست. reference_date مبنای تاریخ‌های بدون سال را مشخص می‌کند. مرجع، options، محدوده و افق پیش‌بینی، فراداده اختیاری پاسخ و محدودیت تفسیر اطمینان را توضیح می‌دهد.

سه ارزیابی مستقل با Clef بومی ​

یک وضعیت مشترک می‌تواند به پرسش‌های فوریت، مسیریابی و شدت پاسخ دهد. برای انتخاب دو نسخه دیگر Clef، فقط مقدار model را به cf.clef یا cf.clef-omni تغییر دهید و همین ساختار بومی درخواست را حفظ کنید.

bash
curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 30 \
  https://api.avalai.ir/v1/systemone \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "model": "cf.clef-flash",
    "state": "Checkout has been failing for every customer for the last hour.",
    "questions": {
      "urgent": { "type": "noul", "instructions": "Is this support request urgent?" },
      "team": {
        "type": "choice",
        "instructions": "Which team should handle this request?",
        "criteria": {
          "billing": "Payments, invoices, and refunds",
          "technical": "Outages, errors, and configuration",
          "sales": "Plans and upgrades"
        }
      },
      "severity": {
        "type": "score",
        "instructions": "How severe is the customer impact?",
        "criteria": ["No impact", "Minor", "Major", "Critical"]
      }
    }
  }'

پاسخ بومی توضیحی کامل:

json
{
  "model": "cf.clef-flash",
  "answers": {
    "urgent": {
      "type": "noul",
      "noul": 0.98
    },
    "team": {
      "type": "choice",
      "choice": "technical",
      "probabilities": {
        "billing": 0.05,
        "technical": 0.94,
        "sales": 0.01
      },
      "confidence": 0.9
    },
    "severity": {
      "type": "score",
      "score": 2.9,
      "legend": {
        "0": "No impact",
        "1": "Minor",
        "2": "Major",
        "3": "Critical"
      },
      "probabilities": {
        "0": 0.01,
        "1": 0.01,
        "2": 0.05,
        "3": 0.93
      },
      "confidence": 0.9
    }
  },
  "usage": {
    "input_tokens": 400,
    "output_tokens": 0
  },
  "estimated_cost": {
    "unit": "0.0000152000",
    "irt": 4.1,
    "exchange_rate": 270000
  }
}

noul احتمال پاسخ مثبت است. choice یکی از دسته‌های تعیین‌شده را مشخص می‌کند. امتیاز این مقیاس چهارسطحی میان 0 و 3 قرار دارد و می‌تواند کسری باشد؛ به‌جای محاسبه دوباره از احتمال‌های گرد‌شده، مقدار بازگشتی score را بخوانید. شناسه پاسخ‌ها و محدوده مقدارها را بررسی کنید و نتیجه نامطمئن یا با ساختار نامعتبر را برای بازبینی بفرستید. سیگنال اطمینان، مجوز بازپرداخت، تغییر حساب یا اقدام دیگری نیست.

همان وظیفه Clef با ساختار Decisions ​

این درخواست همان شواهد را با رابط Decisions ارزیابی می‌کند. تغییرها ساختاری‌اند: state به input، پرسش‌ها به آرایه و noul به predicate تبدیل می‌شود؛ تعریف Choice و Score نیز از choices و levels استفاده می‌کند.

bash
curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 30 \
  https://api.avalai.ir/v1/decisions \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "model": "cf.clef-flash",
    "input": "Checkout has been failing for every customer for the last hour.",
    "questions": [
      { "name": "urgent", "type": "predicate", "instructions": "Is this support request urgent?" },
      {
        "name": "team",
        "type": "choice",
        "instructions": "Which team should handle this request?",
        "choices": [
          { "value": "billing", "description": "Payments, invoices, and refunds" },
          { "value": "technical", "description": "Outages, errors, and configuration" },
          { "value": "sales", "description": "Plans and upgrades" }
        ]
      },
      {
        "name": "severity",
        "type": "score",
        "instructions": "How severe is the customer impact?",
        "levels": [
          { "label": "No impact" }, { "label": "Minor" },
          { "label": "Major" }, { "label": "Critical" }
        ]
      }
    ]
  }'

پاسخ توضیحی کامل Decisions:

json
{
  "model": "cf.clef-flash",
  "answers": [
    {
      "name": "urgent",
      "type": "predicate",
      "probability": 0.98
    },
    {
      "name": "team",
      "type": "choice",
      "choice": "technical",
      "probabilities": [
        {
          "value": "billing",
          "probability": 0.05
        },
        {
          "value": "technical",
          "probability": 0.94
        },
        {
          "value": "sales",
          "probability": 0.01
        }
      ],
      "confidence": 0.9
    },
    {
      "name": "severity",
      "type": "score",
      "score": 2.9,
      "probabilities": [
        {
          "value": 0,
          "label": "No impact",
          "probability": 0.01
        },
        {
          "value": 1,
          "label": "Minor",
          "probability": 0.01
        },
        {
          "value": 2,
          "label": "Major",
          "probability": 0.05
        },
        {
          "value": 3,
          "label": "Critical",
          "probability": 0.93
        }
      ],
      "confidence": 0.9
    }
  ],
  "usage": {
    "input_tokens": 400,
    "input_tokens_details": {
      "cached_tokens": 0,
      "cache_write_tokens": 0
    },
    "output_tokens": 0,
    "output_tokens_details": {
      "reasoning_tokens": 0
    },
    "total_tokens": 400
  },
  "estimated_cost": {
    "unit": "0.0000152000",
    "irt": 4.1,
    "exchange_rate": 270000
  }
}

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

Chat Completions متنی با PhoneLLM ​

برنامه‌های زیر درخواست متنی یکسانی می‌فرستند. مثال‌های Python و JavaScript از SDK مربوط به OpenAI با نشانی پایه /v1 در AvalAI استفاده می‌کنند؛ بسته openai را در محیط سرور مربوط نصب کنید. در این خبر، سازگاری ارتباط SDK با این مدل‌های جدید از طریق اجرای زنده بررسی نشده است. هر دو مثال SDK تلاش دوباره خودکار را غیرفعال می‌کنند و مهلت ۳۰ ثانیه‌ای دارند.

bash
curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 30 \
  https://api.avalai.ir/v1/chat/completions \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "model": "cf.phonellm-mini-alpha-2",
    "messages": [{ "role": "user", "content": "Write one brief greeting for a customer support call." }],
    "max_tokens": 128
  }'
python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AVALAI_API_KEY"],
    base_url="https://api.avalai.ir/v1",
    timeout=30.0,
    max_retries=0,
)
response = client.chat.completions.create(
    model="cf.phonellm-mini-alpha-2",
    messages=[
        {
            "role": "user",
            "content": "Write one brief greeting for a customer support call.",
        }
    ],
    max_tokens=128,
)
print(response.model_dump_json(indent=2))
javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.AVALAI_API_KEY,
  baseURL: "https://api.avalai.ir/v1",
  timeout: 30000,
  maxRetries: 0,
});
const response = await client.chat.completions.create({
  model: "cf.phonellm-mini-alpha-2",
  messages: [{ role: "user", content: "Write one brief greeting for a customer support call." }],
  max_tokens: 128,
});
console.log(JSON.stringify(response, null, 2));

پاسخ توضیحی کامل Chat Completions:

json
{
  "id": "chatcmpl-example-phonellm",
  "object": "chat.completion",
  "created": 1792800000,
  "model": "cf.phonellm-mini-alpha-2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, thank you for calling. How can I help you today?",
        "refusal": null
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 40,
    "completion_tokens": 16,
    "total_tokens": 56
  },
  "estimated_cost": {
    "unit": "0.0000062400",
    "irt": 1.68,
    "exchange_rate": 270000
  }
}

متن را از choices[0].message.content بخوانید. برای گفت‌وگوی متنی با Apertus یا EuroLLM، مدل cf.apertus-v1.5-8b یا cf.eurollm-9b-it را انتخاب کنید و رفتار آن را برای زبان‌ها و حجم کار خود بسنجید. فراخوانی تابع در PhoneLLM از ساختار ابزارها در Chat Completions استفاده می‌کند؛ برنامه شما آرگومان‌ها را بررسی و ابزارهای مجاز را اجرا می‌کند.

Chat Completions تصویری با Moondream ​

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

bash
curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 60 \
  https://api.avalai.ir/v1/chat/completions \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "model": "cf.moondream3.1-9b-a2b",
    "messages": [{
      "role": "user",
      "content": [
        { "type": "text", "text": "Describe the visible scene in one sentence." },
        { "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }
      ]
    }],
    "max_tokens": 128
  }'

پاسخ تصویری توضیحی کامل:

json
{
  "id": "chatcmpl-example-moondream",
  "object": "chat.completion",
  "created": 1792800000,
  "model": "cf.moondream3.1-9b-a2b",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A wooden boardwalk crosses a grassy wetland beneath a cloudy sky.",
        "refusal": null
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1000,
    "completion_tokens": 20,
    "total_tokens": 1020
  },
  "estimated_cost": {
    "unit": "0.0003200000",
    "irt": 86.4,
    "exchange_rate": 270000
  }
}

در این مثال، توکن‌های تصویر بخشی از تعداد فرضی ورودی‌اند. این عددها را تعرفه ثابت هر تصویر ندانید و مصرف توکن تصویر را از حجم فایل حدس نزنید. مصرف و هزینه پاسخ واقعی را بخوانید. این مثال گفت‌وگویی، مختصات بومی اشیا در Moondream، آرایه‌های تشخیص یا فیلدهای ویژه وظایف بومی را نشان نمی‌دهد و پشتیبانی از آن‌ها را وعده نمی‌دهد.

اتصال و اعتبارسنجی ​

با ورودی کوچک و نماینده کار واقعی شروع کنید، شناسه مدل درخواست‌شده را نگه دارید و پیش از استفاده از مقدارها، قالب پاسخ را بررسی کنید. در Clairic نوع فیلد، null، قالب تاریخ و کوتاه‌شدن ورودی را بررسی کنید. در Clef پاسخ‌های نام‌دار، برچسب‌های مجاز، احتمال‌های متناهی و محدوده امتیاز را بررسی کنید. در گفت‌وگو نیز پیام دستیار و علت پایان را بخوانید. اگر فارسی یا زبان دیگری برای محصول مهم است، ورودی آن زبان را جداگانه بسنجید.

اگر درخواست شکست خورد، بدنه پاسخ را بررسی کنید و در صورت وجود، avalai-request-id را ثبت کنید. پیش از ارسال دوباره، خطاهای ساختار درخواست یا احراز هویت را اصلاح کنید؛ فقط برای خطاهای گذرا از تلاش دوباره محدود استفاده کنید. ممکن است درخواست پیش از پایان مهلت پردازش شده و هزینه داشته باشد. ارزیابی مدل و اطمینان آن جای مجوزهای برنامه، بررسی‌های قطعی یا بازبینی انسانی در اقدام‌های مهم را نمی‌گیرد.

پیوندهای مرتبط ​