تاریخ انتشار: 13 مه 2025
مدلهای زبان بزرگ (LLM) به دلیل پاسخهای طولانی گاه به گاه بدنام هستند. حتی اگر به مدل بگویید فقط با «درست» یا «نادرست» پاسخ دهد، مدل ممکن است با خروجی دوستانه و بیشتر از آنچه خواستهاید پاسخ دهد، مانند: «مطمئناً، پاسخ درست است».
برای مقابله با این چالش، Prompt API به شما امکان میدهد با ارسال یک طرحواره JSON به متدهای LanguageModel.prompt()
و LanguageModel.promptStreaming()
، فرمت خروجی JSON پاسخ مدل را مشخص کنید. پشتیبانی از خروجی ساختاریافته از نسخه 137 کروم در دسترس است.
JSON Schema چیست
JSON Schema واژگانی است که سازگاری، اعتبار و قابلیت همکاری داده های JSON را در مقیاس امکان پذیر می کند. هنگامی که صحبت از تبادل داده به میان می آید، JSON Schema به عنوان یک استاندارد قدرتمند برای تعریف ساختار و قوانین داده های JSON برجسته می شود. از مجموعه ای از کلمات کلیدی برای تعریف ویژگی های داده های شما استفاده می کند.
طرحواره JSON استاندارد صنعتی برای اطمینان از خروجی ساختاریافته است که از جمله توسط OpenAI API و Gemini API استفاده می شود.
به عنوان مثال، شما از مدل می خواهید حداکثر سه هشتگ برای یک پست در یک شبکه اجتماعی آنلاین، مانند Mastodon اختصاص دهد. خروجی ایده آل می تواند شبیه به JSON زیر باشد:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
سپس طرح JSON مربوطه برای این شکل شی خروجی درخواستی به صورت زیر خواهد بود:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
این طرحواره JSON ساختاری را برای یک شی تعریف می کند که باید دارای یک فیلد hashtags
با محدودیت های زیر باشد:
-
"type": "object"
: مقدار ریشه باید یک شی JSON باشد. -
"properties": { "hashtags": ... }
: شی می تواند (و در این مورد باید) دارای خاصیتی به نامhashtags
باشد. "hashtags":
-
"type": "array"
: مقدار باید یک آرایه باشد. -
"maxItems": 3
: آرایه می تواند حداکثر 3 مورد داشته باشد. -
"items": { "type": "string", "pattern": "^#[^\\s#]+$" }
: هر مورد در آرایه باید رشته ای باشد که با الگوی عبارت منظم داده شده مطابقت داشته باشد:^#[^\\s#]+$
:-
^#
→ باید با یک#
شروع شود. -
[^\\s#]+
→ به دنبال آن یک یا چند کاراکتر که یک فاصله (\s
) یا#
دیگری نیستند. -
$
→ باید به همین جا ختم شود.
-
-
"required": ["hashtags"]
: شی باید دارای ویژگیhashtags
باشد."additionalProperties": false
: هیچ ویژگی دیگری غیر از هشتگ مجاز نیست.
برای توضیح کامل قابلیتهای قالب، مستندات مبانی طرحواره JSON را بخوانید.
در واقع، LLM ها در ایجاد طرحواره JSON واقعا خوب هستند. محدودیت ها را به زبان طبیعی در دستور خود شرح دهید و یک مثال معتبر از شی JSON ارائه دهید، و شما در نیمه راه هستید. سپس می توانید اشیاء JSON را در برابر طرحواره JSON تولید شده با یکی از اعتبار سنجی طرحواره JSON ، به عنوان مثال، اعتبارسنجی طرحواره JSON آنلاین Newtonsoft اعتبارسنجی کنید.
یک طرحواره JSON را به Prompt API ارسال کنید
برای اطمینان از اینکه مدل به طرحواره JSON درخواستی احترام میگذارد، باید طرحواره JSON را به عنوان آرگومان به شی گزینههای متدهای prompt()
یا promptStreaming()
به عنوان مقدار یک فیلد responseConstraint
ارسال کنید.
در اینجا یک مثال بسیار ابتدایی از طرحواره JSON وجود دارد که مطمئن می شود مدل در طبقه بندی اینکه آیا یک پیام داده شده مانند این پست Mastodon در مورد سفالگری است، با true
یا false
پاسخ می دهد.
const session = await LanguageModel.create();
const schema = {
"type": "boolean"
};
const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";
const result = await session.prompt(
`Is this post about pottery?\n\n${post}`,
{
responseConstraint: schema,
}
);
console.log(JSON.parse(result));
// true
پشتیبانی از خروجی های قابل پیش بینی
پشتیبانی از خروجی ساختاریافته برای Prompt API پاسخ های LLM را بسیار قابل پیش بینی تر می کند. توسعه دهندگان به جای استخراج یک شی از پاسخ Markdown یا سایر مراحل پس از پردازش، اکنون می توانند پاسخ مدل را JSON معتبر فرض کنند.
این امر هوش مصنوعی داخلی را یک قدم به APIهای مبتنی بر ابر نزدیکتر میکند و تمام مزایای اجرای هوش مصنوعی محلی سمت مشتری را دارد.