پرسشها (پریمیتیوها)
سه نوع پرسش TypeSafe، پاسخهای تایپشدهی آنها، نحوهی انتخاب بینشان و پرسیدن چند پرسش با هم.
پریمیتیوهای TypeSafe بلوکهای کوچک و تایپشدهایاند که در کد ترکیبشان میکنید. بهصورت جفت میآیند: یک پرسش یک قضاوت را برای مدل دربارهی state تعریف میکند و پاسخ آن مقدار تایپشدهای است که برمیگردد.
| نوع | به چه پاسخ میدهد | خروجی |
|---|---|---|
| Choice | کدامیک از این گزینهها؟ | choice، probabilities، confidence |
| Score | کدام سطح؟ | score، legend، probabilities، confidence |
| Noul | آیا این درست است؟ | noul (۰ تا ۱) |
برای هر پرسش یک قضاوت لحظهای بخواهید
قضاوتی بخواهید که یک فرد آگاه با کانتکست درست در یک ثانیه انجام میدهد. «آیا این پیام فوریت را منتقل میکند؟» پرسش خوبی است. «این پیام را تحلیل کن و بهترین اقدام را تعیین کن» نیست؛ آن به استدلال کند نیاز دارد و نشانهای است که باید کار را به پرسشهای کوچک بشکنید.
تعریف یک پرسش
هر پرسش یک شناسه (ID)، یک type و instructions دارد. Choice و Score همچنین criteria میگیرند. در Noul، criteria اختیاری است و معنای بله و خیر را روشن میکند.
کلیدی که خودتان انتخاب میکنید، مثل refund_requested. پاسخ را در response مشخص میکند.
نوع پرسش.
پرسشی که دربارهی state میپرسید؛ منطق ارزیابی اینجا قرار میگیرد. آن را بهصورت یک پرسش روشن و مشخص یا گزارهای برای قضاوت بنویسید.
پاسخهای ممکن: نگاشتی از گزینهها برای Choice، فهرست مرتبی از سطوح برای Score و توصیف اختیاری بله/خیر برای Noul.
شناسههای پرسش برای کد شما هستند و به مدل فرستاده نمیشوند. پرسش کامل را در instructions بنویسید، حتی اگر شناسه بهنظر گویا باشد.
انتخاب نوع پرسش
- Choice وقتی مناسب است که پاسخ یکی از مجموعهای شناختهشده از گزینهها بدون ترتیب باشد: مسیریابی تیکت به یک بخش، طبقهبندی نوع سند، تشخیص زبان برنامهنویسی. فهرست کامل گزینهها را بدهید و وقتی ممکن است فهرست همهی ورودیها را پوشش ندهد، گزینهی
otherیاnone of the aboveاضافه کنید. - Score وقتی مناسب است که پاسخ روی یک طیف قرار دارد و میتوانید معنای هر نقطهی آن را توصیف کنید: شدت باگ، ناراحتی مشتری، سطح مهارت.
- Noul برای یک پرسش بله/خیر تمیز که خودِ احتمال سیگنال مفیدی است: آیا پیام اطلاعات شخصی دارد، آیا مشتری بازپرداخت میخواهد، آیا رزومه به سیستمهای توزیعشده اشاره میکند.
برای قضاوت بله/خیر از Noul و برای سنجش یک موقعیت روی طیف از Score استفاده کنید. «آیا این نامزد در پایتون قوی است؟» به تعریف روشنی از «قوی» نیاز دارد. مقدار Noul برابر ۰٫۵ یعنی مدل به بله و خیر احتمال برابر میدهد؛ به معنای «مهارت متوسط» نیست.
برای سنجش سطح مهارت از Score با سطوح تعریفشده (بدون تجربه، آشنایی مختصر، استفادهی روزمره، تخصص عمیق) استفاده کنید.
اگر دو نوع مناسب بهنظر میرسند، آن را ترجیح دهید که کدتان مستقیمتر بر اساسش عمل میکند: Choice بین refund، rebook و information مستقیماً به سه مسیر کد نگاشت میشود؛ Score ناراحتی به یک آستانه؛ و Noul به یک if.
چه چیزی برمیگردد
| نوع | فیلدهای پاسخ | چگونه بخوانیم |
|---|---|---|
| Choice | choice، probabilities، confidence | choice گزینهی انتخابشده است؛ probabilities توزیع روی همهی گزینهها؛ confidence خلاصهی میزان تیزی آن توزیع. |
| Score | score، legend، probabilities، confidence | score موقعیتی روی سطوح شماست و میتواند بین دو سطح باشد. legend سطوح را با شماره تکرار میکند. |
| Noul | noul | احتمال «بله» بودن پاسخ. نزدیک ۱ یعنی بلهی قوی، نزدیک ۰ خیر قوی، نزدیک ۰٫۵ نامطمئن. Noul فیلد confidence جداگانه ندارد. |
دو ویژگی این پاسخها را ترکیبپذیر میکند:
- هر پاسخ محدود به گزینههایی است که دادهاید. مدل هرگز مقداری خارج از آنها برنمیگرداند.
- هر پاسخ مستقل است. پاسخ یک پرسش کانتکست پنهانی برای دیگری نیست؛ میتوانید پرسش اضافه یا حذف کنید بیآنکه نتایج بقیه تغییر کند.
ارجاع به فیلدهای مشخص
وقتی پرسش دربارهی بخشی از یک state ساختاریافته است، آن بخش را در instructions با مسیر نقطهای و اندیس، همراه با بکتیکها، نام ببرید:
چند پرسش را با هم بپرسید
همهی پرسشهایی را که از یک state استفاده میکنند در یک درخواست بفرستید و انواع را آزادانه ترکیب کنید. افزودن پرسش تقریباً زمان پاسخ را تغییر نمیدهد و فقط هزینهی توکنهای همان پرسشها را دارد. پرسیدن پرسشی که شاید لازم نداشته باشید تقریباً رایگان است.
ایجنتهای کدنویسی بیشتر از انسانها در دام «یک پرسش در هر فراخوانی» میافتند. اسکیل ایجنت TypeSafe به ایجنت میگوید در هر فراخوانی پرسشهای زیادی بگذارد.
وقتی یک پرسش به دیگری وابسته است
پرسشهای یک درخواست مستقلاند. اگر قضاوتی به پاسخ قبلی وابسته است، در کد یک درخواست دوم بسازید. وابستگی فقط وقتی واقعی است که کدتان پیش از داشتن پاسخ اول نتواند درخواست دوم را بسازد: مثلاً برای واکشی دادهی بیشتر، تعیین محتوای state یا انتخاب پرسش بعدی. اگر پرسشهای درخواست دوم را میشد در برابر state اصلی پرسید، آنها را در همان درخواست اول بپرسید.
گامهای بعدی
Choice
یک گزینه از یک فهرست ثابت انتخاب کنید.
Score
state را روی سطوح مرتب رتبهبندی کنید.
Noul
احتمال درست بودن یک گزاره را بگیرید.
برای دیدن اینکه این پریمیتیوها چگونه به معماریهای کامل سیستم ترکیب میشوند، به الگوها بروید.