راهنمای مایکروسافت: زبان برنامه نویسی سریع نسل بعدی
Microsoft Guidance یک زبان برنامهنویسی سریع برای نسل آینده است که به توسعهدهندگان اجازه میدهد مدلهای زبان مدرن را بهطور مؤثرتر و کارآمدتری نسبت به درخواستهای سنتی یا زنجیرهای کنترل کنند. برنامههای راهنما، توسعهدهندگان را قادر میسازند تا تولید، اعلانها و کنترل منطقی را در یک جریان پیوسته واحد که با نحوه پردازش مدل زبان متن مطابقت دارد، به هم متصل کنند. در نتیجه، نتایج دقیقتر و منسجمتر و همچنین تجربه توسعه شهودی و سازندهتر هستند.
راهنمای مایکروسافت
راهنما روشی موثر برای بهبود کنترل و کارایی مدلهای زبان فعلی (LLM) مانند GPT-3 و GPT-4 است. این به شما امکان می دهد که تولید، اعلان و کنترل منطقی را در یک جریان پیوسته که با نحوه پردازش متن مدل زبان مطابقت دارد، ادغام کنید.
استفاده از ساختارهای خروجی اولیه مانند زنجیره فکر (CoT) و انواع آن مانند ART (فناوری پاسخ تطبیقی) و Auto-CoT یک نوع رایج راهنمایی است. نشان داده شده است که این ساختارها عملکرد LLM را افزایش می دهند. راهنما میتواند ساختارهای غنیتری را با ظهور LLMهای قدرتمندتر مانند GPT-4 فعال کند، و برخورد با آنها را آسانتر و مقرونبهصرفهتر میکند.
نصب
راهنمای نصب پیپ
نحوه استفاده از بسته “راهنمای مایکروسافت” در نوت بوک Jupyter/VSCode برای پخش زنده قالب ها و نسل ها. کد اینجاست:
- وارد کردن بسته “راهنما”:
راهنمای واردات
- تنظیم مدل زبان پیش فرض:
guidance.llm = guidance.llms.OpenAI("text-davinci-003")
این خط مدل زبانی را مشخص میکند که برای اجرای برنامههای راهنمایی استفاده میشود. در این مثال روی مدل OpenAI "text-davinci-003" تنظیم شده است. می توانید مدل را برای برآورده کردن نیازهای خود تغییر دهید.
- تعریف برنامه راهنمایی:
program = guidance("""این ضرب المثل را تغییر دهید تا به جای آن در دستورالعمل های مدل اعمال شود. {{ضرب المثل}} - {{کتاب}} {{فصل}}:{{آیه}} به روز شد جایی که هیچ راهنمایی وجود ندارد{{gen 'rewrite' stop="\n-"}} - GPT {{gen 'chapter'}}:{{gen 'verse'}}""")
این بلوک کد از یک رشته چند خطی برای تعریف یک برنامه راهنما استفاده می کند. درون یابی متغیر با مهاربندهای فرفری دوتایی (مثلاً ضرب المثل)، و همچنین جریان کنترل منطقی با دستورات if و نسل ها با استفاده از دستورات gen استفاده می شود. هدف برنامه این است که دستورالعمل ها را پس از ضرب المثل مدل کند.
- اجرای برنامه:
executed_program = program( ضرب المثل "در جایی که هدایت نباشد، قومی سقوط می کند، اما در فراوانی مشاوران، امان است.", کتاب "ضرب المثل"، فصل = 11، آیه=14 )
این بلوک کد با فراخوانی شی
program
به عنوان یک تابع و ارسال مقادیر مورد نظر برای متغیرها، برنامه راهنمایی تعریف شده را اجرا می کند. برنامه اجرا شده در متغیرexecuted_program
ذخیره می شود.
- دسترسی به متغیرهای ایجاد شده:
برنامه_اجرا شده["rewrite"]
پس از اجرای برنامه، می توانید با دسترسی به کلیدهای فرهنگ لغت
executed_program
به متغیرهای تولید شده دسترسی داشته باشید. در این حالت، متغیر تولید شده با کلید "بازنویسی" حاوی متن حاصل خواهد بود.با استفاده از بسته "راهنما"، میتوانید بهطور مکرر دستورات خود را در یک محیط نوتبوک توسعه داده و اصلاح کنید، و نحوی شبیه به الگو را با تولید مدل زبان و جریان کنترل منطقی ترکیب کنید.
توسعه گفتگوی چت با راهنمایی
نحوه استفاده از بسته "Microsoft Guidance" در یک نوت بوک Jupyter/VSCode برای توسعه گفتگوی گفتگوی تعاملی با مدل های چت مانند GPT-4 یا Vicuna. کد اینجاست:
- اتصال به مدل گپ:
gpt4 = guidance.llms.OpenAI("gpt-4")
این خط با یک مدل چت، در این مورد، GPT-4 ارتباط برقرار می کند. میتوانید از مدلهای چت دیگر مانند Vicuna با نمونهسازی شی
guidance.llms.transformers.Vicuna
مربوطه استفاده کنید.
- تعریف یک برنامه راهنمایی برای گفتگوی چت:
experts = guidance(''' {{#سیستم~}} شما یک دستیار مفید و مختصر هستید. {{~/system}} {{#کاربر~}} من جواب سوال زیر را می خواهم: {{پرس و جو}} 3 متخصص در سطح جهانی (گذشته یا حال) را نام ببرید که در پاسخ به این سؤال عالی هستند؟ هنوز به سوال جواب نده {{~/user}} {{#دستیار~}} {{gen 'expert_names' temperature=0 max_tokens=300}} {{~/دستیار}} {{#کاربر~}} عالی، حالا لطفا به این سوال پاسخ دهید که انگار این کارشناسان در نوشتن یک پاسخ ناشناس مشترک همکاری کرده اند. {{~/user}} {{#دستیار~}} {{gen 'answer' temperature=0 max_tokens=500}} {{~/دستیار}} ''', llm=gpt4)
این بلوک کد یک برنامه راهنمایی برای گفتگوی چت تعریف می کند. این برنامه شامل برچسبهای نقش مختلف مانند
{{#system}}
،{{#user}}
و{{#assistant}}
میباشد. نشان دهنده شرکت کنندگان مختلف در گفتگو باشد. در هر تگ نقش، میتوانید دستورالعملهای مورد نظر را مشخص کنید و از دستورات{{gen}}
برای تولید پاسخها از مدل چت استفاده کنید.
- اجرای گفتگوی چت:
متخصصین(query='چگونه می توانم بهره وری بیشتری داشته باشم؟')
برای شروع گفتگوی چت، شی
experts
را به عنوان یک تابع فراخوانی کرده و با استفاده از پارامترquery
به درخواست کاربر ارسال میکنید. این برنامه راهنمای Microsoft را اجرا میکند و بر اساس دستورالعملهای تعریفشده، پاسخی از مدل چت ایجاد میکند.با استفاده از بسته "راهنما"، می توانید به صورت تعاملی گفتگوهای چت را توسعه دهید که الگوهای غنی، کنترل منطقی و پاسخ های مدل چت را ترکیب می کند. این امکان مکالمات پویا و تعاملی با مدل زبان را فراهم می کند.
همچنین، زبان برنامه نویسی Mojo انحصاری برای هوش مصنوعی.
نمایندگان
شما می توانید از دستور
await
در یک حلقه برای توقف و از سرگیری اجرای یک برنامه راهنمای Microsoft تا حدی اجرا شده برای شبیه سازی گفتگو بین دو عامل با استفاده از بسته "راهنمایی" استفاده کنید. این یک مثال است:راهنمای واردات واردات مجدد guidance.llm = guidance.llms.OpenAI("gpt-4") نقش_شبیه ساز = راهنمایی('' {{#سیستم~}} شما یک دستیار مفید هستید {{~/system}} {{#کاربر~}} در مکالمه زیر به کاربر به عنوان {{role}} پاسخ خواهید داد. در هر مرحله، ورودی کاربر و همچنین نظری را در اختیار شما قرار می دهم که دستورالعمل های شما را به شما یادآوری می کند. هرگز در مورد این واقعیت صحبت نکنید که شما یک هوش مصنوعی هستید، حتی اگر کاربر از شما بپرسد. همیشه به عنوان {{نقش}} پاسخ دهید. {{#if first_question}}همچنین میتوانید مکالمه را شروع کنید.{{/if}} {{~/user}} {{~! دستیار یا مکالمه را شروع می کند یا نه، بسته به اینکه این نماینده اول یا دوم است }} {{#دستیار~}} خوب، من این دستورالعمل ها را دنبال می کنم. {{#if first_question}}اجازه دهید اکنون گفتگو را شروع کنم: {{نقش}}: {{first_question}}{{/if}} {{~/دستیار}} {{~! سپس مکالمه باز می شود }} {{~#geneach 'conversation' stop=False}} {{#کاربر~}} کاربر: {{set 'this.input' (wait 'input')}} نظر: به یاد داشته باشید، به عنوان یک {{نقش}} پاسخ دهید. گفتار خود را با {{role}} شروع کنید: {{~/user}} {{#دستیار~}} {{gen 'this.response' temperature=0 max_tokens=300}} {{~/دستیار}} {{~/geneach}}''') جمهوری = نقش_شبیه ساز(نقش='جمهوری'، await_missing=درست) دموکرات = نقش_شبیه ساز (نقش='دموکرات'، await_missing=درست) first_question = '''به نظر شما بهترین راه برای جلوگیری از تورم چیست؟''' جمهوریخواه = جمهوریخواه (ورودی=سوال_اول،_سوال_اول=هیچکدام) دموکرات = دموکرات(ورودی=جمهوری["مکالمه"][-2]["پاسخ"].strip('جمهوری خواه:')، first_question=first_question) برای i در محدوده (2): republican = جمهوریخواه(ورودی=دموکرات["مکالمه"][-2]["پاسخ"].replace('دموکرات: ',')) دموکرات = دموکرات(ورودی=جمهوری["مکالمه"][-2]["پاسخ"].replace('جمهوری: ',')) print('دموکرات:' + first_question) برای x در دموکرات['conversation'][:-1]: print('جمهوری:', x['input']) چاپ() print(x['response'])
نسل
نسل اولیه
برچسب
gen
برای تولید متن استفاده میشود. شما می توانید از هر آرگومانی که توسط مدل اصلی پشتیبانی می شود استفاده کنید. اجرای یک فرمان، اعلان نسل را فراخوانی می کند:راهنمای واردات # llm پیش فرض را تنظیم کنید. همچنین می تواند یک آرگومان متفاوت را به guidance()، با guidance(llm=...) ارسال کند. guidance.llm = guidance.llms.OpenAI("text-davinci-003") prompt = guidance(''''بهترین چیز در مورد ساحل {{~gen 'best' temperature=0.7 max_tokens=7}}''') prompt = prompt() درخواست
راهنما
همه نسلهای OpenAI را با آرگومانهای یکسان در حافظه پنهان ذخیره میکند. اگر میخواهید کش را پاک کنید، میتوانید باguidance.llms.OpenAI.cache.clear()
تماس بگیرید.نسل پنهان
میتوانید متنی را بدون نمایش آن یا استفاده از آن در نسلهای بعدی با استفاده از تگ
hidden
، یا درblock
یا درgen
ایجاد کنید. > برچسب:prompt = guidance('''{{#block hidden=True}}پاسخی به ایمیل زیر ایجاد کنید : {{پست الکترونیک}}. پاسخ:{{gen "response"}}{{/block}} من یک ایمیل و یک پاسخ به شما نشان خواهم داد و اگر توهین آمیز است به من بگویید. ایمیل: {{email}}. پاسخ: {{پاسخ}} آیا پاسخ فوق به هیچ وجه توهین آمیز است؟ لطفا با یک کلمه یا "بله" یا "خیر" پاسخ دهید. پاسخ:{{#select "answer" logprobs='logprobs'}} بله{{یا}} خیر{{/select}}''') prompt = prompt (ایمیل = 'من از تاکو متنفرم') درخواست
ویژگی های راهنمای
- Simple Syntax: Microsoft Guidance دارای یک نحو اساسی و قابل دسترس بر اساس قالب Handlebars است. این نحو تعیین و تغییر ساختار خروجی متن تولید شده را ساده می کند.
- ساختار خروجی غنی: راهنمای مایکروسافت طراحی ساختارهای خروجی پیچیده را که شامل چندین نسل، انتخابها، شرطیها، استفاده از ابزار و موارد دیگر است، امکانپذیر میسازد. این سازگاری امکان کنترل دقیق بر روی محتوا و طرحبندی متن خروجی را فراهم میکند.
- جریانگذاری در نوتبوکهای Jupyter/VSCode: Microsoft Guidance تجربهای شبیه به زمین بازی برای ایجاد مدلهای تعاملی و تکراری در نوتبوکهای Jupyter/VSCode فراهم میکند. این ویژگی آزمایش و کشف احتمالات مدل را آسانتر میکند.
- ذخیره سازی برای نسل های مبتنی بر دانه های هوشمند: راهنمای مایکروسافت شامل روش های ذخیره سازی هوشمندانه ای است که فرآیند تولید را بهبود می بخشد. این محاسبات تکراری را به حداقل میرساند و درخواستهای بعدی برای خروجیهای مشابه را با ذخیرهسازی متنی که قبلاً ایجاد شده است بر اساس ورودیهای اولیه در حافظه پنهان میکند.
- پشتیبانی از مدل چت مبتنی بر نقش: Microsoft Guidance برای تعامل یکپارچه با مدلهای چت مبتنی بر نقش مانند ChatGPT طراحی شده است. این ارتباط امکان بحثهای آگاه از زمینه را فراهم میکند و ظرفیت مدل را برای شناسایی و پاسخگویی به نقشها یا شخصیتهای مختلف بهبود میبخشد.
- ادغام ساده با مدلهای Hugging Face: Microsoft Guidance ممکن است به سادگی با مدلهای Hugging Face وصل شود. این شامل تعدادی از تکنیکهای شتاب برای افزایش سرعت نسبت به درخواستهای معمولی، بهبود نشانهها برای بهینهسازی مرزهای سریع، و راهنمای الگوی regex برای اعمال قالبها یا محدودیتهای خاص بر روی متن خروجی است.
به طور کلی، Microsoft Guidance یک چارچوب کامل برای تنظیم و بهینهسازی خروجی مدلهای زبان فعلی ارائه میدهد و استفاده مؤثر و اقتصادی از قابلیتهای آنها را سادهتر میکند.
این مقاله برای کمک به یادگیری راهنمای مایکروسافت است. ما اطمینان داریم که برای شما مفید بوده است. لطفا نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.