۲۴ آذر ۱۴۰۴

Techboy

اخبار و اطلاعات روز تکنولوژی

ابزارهای GenAI برای R: ابزارهای جدید برای آسان‌تر کردن برنامه‌نویسی R

از افزونه‌های IDE تا چت‌بات‌های خارجی و اجرای محلی مدل‌های بزرگ زبانی، این ابزارهای جدید و نوظهور انقلاب هوش مصنوعی مولد را به R می‌آورند.

از افزونه‌های IDE تا چت‌بات‌های خارجی و اجرای محلی مدل‌های بزرگ زبانی، این ابزارهای جدید و نوظهور انقلاب هوش مصنوعی مولد را به R می‌آورند.

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

راهنمایی کد برای توسعه‌دهندگان R

دریافت کمک برای نوشتن کد یکی از پرکاربردترین موارد استفاده از مدل‌های زبانی بزرگ است. برخی از توسعه‌دهندگان ترجیح می‌دهند این ابزارها را داخل محیط‌های توسعه یکپارچه (IDE) خود استفاده کنند؛ دیگران راضی هستند که کد را کپی و در ابزارهای خارجی بچسبانند. برنامه‌نویسان R برای هر دو گزینه وجود دارند.

gander

بسته gander کمی شبیه GitHub Copilot Light برای اسکریپت‌های R است. این یک افزونه IDE برای RStudio و Positron است که می‌تواند از کد در اسکریپت‌ها و همچنین متغیرهای موجود در محیط کار شما آگاه باشد. اگر هنگام فراخوانی gander کدی را انتخاب کرده باشید، از شما پرسیده می‌شود که آیا می‌خواهید نتیجه مدل آن کد را جایگزین کند یا قبل یا بعد از آن اضافه شود.

رابط gander می‌پرسد آیا می‌خواهید کد انتخاب‌شده را جایگزین کنید یا پیشنهادهای آن را قبل یا بعد از آن قرار دهید.

رابط gander می‌پرسد آیا می‌خواهید کد انتخاب‌شده را جایگزین کنید یا پیشنهادهای آن را قبل یا بعد از آن قرار دهید.

رابط gander می‌پرسد آیا می‌خواهید کد انتخاب‌شده را جایگزین کنید یا پیشنهادهای آن را قبل یا بعد از انتخاب خود قرار دهید.

شما می‌توانید هر مدلی که ellmer پشتیبانی می‌کند را در gander استفاده کنید. تا اوایل ۲۰۲۵، نویسنده بسته و توسعه‌دهنده Posit، سایمون کاچ، Claude Sonnet از Anthropic را به دلیل توانمندی‌های R آن توصیه کرد. می‌توانید این را به‌عنوان پیش‌فرض با options(.gander_chat = ellmer::chat_claude()) تنظیم کنید.

همان‌طور که همیشه هنگام استفاده از ارائه‌دهنده تجاری LLM است، شما باید یک کلید API را در محیط کاری خود در دسترس قرار دهید. همانند بسیاری از بسته‌های فعلی R برای کار با LLMها، می‌توانید از یک مدل محلی که توسط ollama قدرت می‌گیرد نیز استفاده کنید. توجه داشته باشید که می‌توانید از ellmer به‌عنوان یک چت‌بات برای پرسش‌های مرتبط با R و اجرای LLMها به‌صورت محلی نیز بهره ببرید. (برای اطلاعات بیشتر درباره ellmer و ollama، مقاله قبلی من را مطالعه کنید.)

gander برای اسکریپت‌های R در هر دو RStudio و Positron در دسترس است. می‌توانید آن را از CRAN دانلود کنید یا نسخهٔ توسعه‌ای را با pak::pak("simonpcouch/gander") نصب کنید.

این فرمان همچنین یک افزونه را داخل RStudio نصب می‌کند که می‌توانید یک میانبر صفحه‌کلید برای فراخوانی آن انتخاب کنید.

برای Positron، دستورالعمل‌هایی در صفحهٔ اصلی وب‌سایت بسته وجود دارد که نحوهٔ باز کردن منوی فرمان Positron و افزودن کد به فایل keybindings.json را توضیح می‌دهد.

برای دیدن اینکه چه داده‌ای gander به مدل ارسال کرد — اطلاعات پس‌زمینهٔ اسکریپت و جلسه کاری شما، همچنین سؤال تایپ‌شده — می‌توانید پس از اجرای افزونه، gander_peek() را اجرا کنید.

برخی تنظیمات gander می‌توانند با تابع options() در R تغییر کنند. دستورالعمل‌های سبک پیش‌فرض ابزار عبارتند از:

Use tidyverse style and, when relevant, tidyverse packages. For example, when asked to plot something, use ggplot2, or when asked to transform data, using dplyr and/or tidyr unless explicitly instructed otherwise.

می‌توانید پیش‌فرض را با کدی مانند options(.gander_style = "Use base R when possible.") تغییر دهید. گزینه‌های سفارشی‌سازی بیشتری را می‌توانید با اجرای ?gander_options در کنسول R مشاهده کنید.

می‌توانید بیشتر درباره gander در وب‌سایت بسته gander و وبلاگ Posit بیاموزید.

chatgpt

یک “رابط به ChatGPT از R”، chatgpt حدود ۱۰ افزونه RStudio را برای کارهایی مانند باز کردن یک جلسه چت تعاملی، اضافه کردن نظرات به کد انتخاب‌شده، ایجاد تست‌های واحد، مستندسازی کد و بهینه‌سازی کد انتخاب‌شده فراهم می‌کند. اگر برای وظایف برنامه‌نویسی خاص کدی انتخاب نکنید، تمام فایل فعال را ارزیابی می‌کند.

این می‌تواند گزینهٔ خوبی برای افرادی باشد که اغلب از مدل‌های زبانی بزرگ استفاده نمی‌کنند یا نمی‌خواهند برای وظایف برنامه‌نویسی معمولی خود دستورالعمل‌های خودشان را بنویسند. و اگر نمی‌خواهید برای هر کار افزونه متفاوتی صدا کنید، می‌توانید از توابع آن در ترمینال استفاده کنید، مانند comment_code() و complete_code().

می‌توانید تنظیمات مدل را با متغیرهای محیطی R سفارشی کنید، مانند OPENAI_MODEL (به‌صورت پیش‌فرض gpt-4o-mini)، OPENAI_TEMPERATURE (که به‌صورت پیش‌فرض ۱ است—من ترجیح می‌دهم ۰ باشد)، و OPENAI_MAX_TOKENS (که به‌صورت پیش‌فرض ۲۵۶ است).

توجه داشته باشید که بسته chatgpt فقط از مدل‌های OpenAI پشتیبانی می‌کند.

gptstudio

gptstudio، که در CRAN موجود است، یک افزونهٔ دیگر RStudio است که دسترسی به LLMها را فراهم می‌کند. این افزونه گزینه‌های تعریف‌شده‌ای برای املاء و دستور زبان، چت و اضافه‌کردن نظرات به کد دارد. من رابط کاربری آن را کمی پرتداخل‌تر از برخی گزینه‌های دیگر یافتیم، اما نظرات ممکن است متفاوت باشد.

بسته gptstudio از HuggingFace، Ollama، Anthropic، Perplexity، Google، Azure و Cohere به‌همراه OpenAI پشتیبانی می‌کند.

pkgprompt

pkgprompt می‌تواند مستندات یک بستهٔ R — تمام آن یا فقط موضوعات خاص — را به یک رشتهٔ کاراکتری واحد تبدیل کند با استفاده از تابع pkg_prompt(). این کار ارسال آن مستندات به یک LLM به‌عنوان بخشی از یک درخواست را آسان می‌کند. برای مثال، دستور

library(pkgprompt) pkg_docs <- pkg_prompt(pkg = "dplyr", topics = c("across", "coalesce"))

این تابع مستندات بسته dplyr برای توابع across و coalesce را به‌صورت یک رشتهٔ کاراکتری واحد برمی‌گرداند. سپس می‌توانید این رشته را به هر درخواست LLM اضافه کنید، چه در R یا با کپی‑و‑چسباندن در ابزار خارجی. این یک بستهٔ R دیگر توسط سایمون کاچ است. نصب کنید با: pak::pak("simonpcouch/pkgprompt").

راهنمایی خارج از IDE

اگر مایلید خارج از محیط برنامه‌نویسی خود به یک LLM مراجعه کنید، گزینه‌های خاص R علاوه بر یک چت‌بات عمومی مانند Claude که دربارهٔ R می‌داند، وجود دارند.

Shiny Assistant

اگر برنامه‌های وب Shiny می‌سازید، Shiny Assistant از Posit یک منبع عالی است. این ابزار وب‑محور رایگان از یک LLM برای پاسخ به سؤالات درباره ساخت برنامه‌های Shiny برای R Shiny و Shiny برای Python استفاده می‌کند. توجه داشته باشید که تیم Shiny ممکن است پرسش‌های شما را برای بهبود ابزار ثبت و بررسی کند، بنابراین برای کارهای حساس از نسخهٔ وب استفاده نکنید. می‌توانید همچنین کد Shiny Assistant را از GitHub دانلود کرده و خودتان اجرا کنید.

R and R Studio Tutor + Code Nerd

R and R Studio Tutor یک GPT سفارشی است که اطلاعات خاص R را به ChatGPT پایه اضافه می‌کند. این ابزار توسط خوزه آ. فرناندز کالو توسعه یافته و برای پاسخ به سؤال‌های خاص درباره R و RStudio طراحی شده است.

Code Nerd توسط کریستین سزیمارا یک GPT سفارشی دیگر است که به سؤال‌های R پاسخ می‌دهد.

R Tutor + Chatilize

یکی از اولین ورودی‌ها در فضای GenAI برای R، R Tutor است که هنوز آنلاین موجود است. می‌توانید یک مجموعه داده آپلود کنید، سؤال بپرسید و مشاهده کنید که چگونه کد R تولید می‌کند و نتایج، شامل گرافیک‌ها، را ارائه می‌دهد.

R Tutor به شما اجازه می‌دهد درباره یک مجموعه داده سؤال کنید و در پاسخ کد R تولید کنید.

R Tutor به شما اجازه می‌دهد درباره یک مجموعه داده سؤال کنید و در پاسخ کد R تولید کنید.

R Tutor به شما امکان می‌دهد درباره یک مجموعه داده سؤال کنید و در پاسخ کد R تولید کند.

کد RTutor در GitHub موجود است، بنابراین می‌توانید نسخهٔ محلی خود را نصب کنید. اما مجوز فقط اجازه استفادهٔ غیرانتفاعی یا غیرتجاری، یا تست تجاری را می‌دهد. RTutor پروژهٔ شخصی دکتر استیون گ، استاد زیست‌اطلاعات در دانشگاه ایالتی داکوتای جنوبی بود، اما اکنون توسط شرکتی که او بنیان‌گذاری کرد، Orditus LLC، توسعه و نگهداری می‌شود.

Chatilize، گزینهٔ جدیدتری است که مشابه R Tutor است و می‌تواند علاوه بر R، کد Python نیز تولید کند.

تعامل با LLMهای نصب‌شده به‌صورت محلی

LLMهای بزرگ در ابر ممکن است هنوز قابلیت‌های بیشتری نسبت به مدل‌هایی که می‌توانید به‌صورت محلی دانلود و اجرا کنید داشته باشند، اما مدل‌های کوچک‌تر با وزن باز به‌تدریج بهتر می‌شوند. و ممکن است برای برخی وظایف خاص کافی باشند — فقط راه‌حل این است که امتحان کنید. مدل‌های محلی نیز مزیت بزرگ حریم خصوصی را دارند، بنابراین هرگز نیازی نیست داده‌های خود را به سرور شخص دیگری ارسال کنید. علاوه بر این، نیازی نیست نگران منقضی شدن مدل مورد علاقه‌تان باشید. این مدل‌ها رایگان هستند، به‌جز هزینهٔ اجرای رایانهٔ دسکتاپ. بستهٔ عمومی ellmer نیز به شما اجازه می‌دهد LLMهای محلی را اجرا کنید، اما بسته‌های R دیگری نیز به‌طور خاص برای هوش مصنوعی مولد محلی طراحی شده‌اند.

rollama and ollamar

هر دو بستهٔ rollama و ollamar به شما اجازه می‌دهند با استفاده از پروژهٔ محبوب Ollama مدل‌های محلی را در R اجرا کنید، اما نحو آنها متفاوت است. اگر بستهٔ مخصوص Ollama می‌خواهید، پیشنهاد می‌کنم هر دو را امتحان کنید تا ببینید کدام را بیشتر می‌پسندید.

علاوه بر یکی (یا هر دو) از این بسته‌های R، به خود برنامهٔ Ollama نیز نیاز دارید. Ollama را دانلود و نصب کنید به‌عنوان یک بستهٔ نرم‌افزاری معمولی — یعنی نه یک کتابخانهٔ R — برای Windows، macOS یا Linux. اگر Ollama هنوز در حال اجرا نیست، می‌توانید ollama serve را از خط‌فرمان یا ترمینال (نه کنسول R) اجرا کنید تا سرور Ollama آغاز شود. (پیکربندی Ollama برای اجرا در پس‌زمینه هنگام راه‌اندازی سیستم، اگر به‌طور مکرر از آن استفاده می‌کنید، ارزش دارد.)

پس از بارگذاری بستهٔ R rollama با library(rollama)، می‌توانید با تابع ping_ollama() آزمایش کنید که آیا R سرور Ollama را می‌بیند یا نه.

اگر هنوز مدل‌های LLM محلی با Ollama نصب ندارید، می‌توانید در R با pull_model("the_model_name") یا در یک ترمینال با ollama pull the_model_name آن را دریافت کنید. می‌توانید موجود بودن مدل‌ها برای Ollama را در وب‌سایت Ollama بررسی کنید.

برای مثال، برای دانلود مدل llama 3.2 با پارامتر ۳ میلیارد، می‌توانید در R pull_model("llama3.2:3b") را اجرا کنید.

برای تنظیم یک مدل به‌عنوان پیش‌فرض نشست، از نحو options(rollama_model = "the_model_name") استفاده کنید. نمونه‌ای از این: options(rollama_model = "llama3.2:3b").

برای یک سؤال واحد، از تابع query() استفاده کنید:

query("How do you rotate text on the x-axis of a ggplot2 graph?")

اگر می‌خواهید چت داشته باشید که سؤالات و پاسخ‌های قبلی در حافظه باقی بمانند، از chat() استفاده کنید. هر دو تابع دارای آرگومان‌های اختیاری شامل screen (آیا پاسخ‌ها باید در صفحه چاپ شوند) و model_params (لیست نام‌دار پارامترها مانند temperature) هستند. query() همچنین شامل آرگومان format است که مقدار بازگشتی می‌تواند یک شیء پاسخ، متن، لیست، data.frame، httr2_response یا httr2_request باشد.

سؤالات و چت‌ها می‌توانند با آرگومان images شامل تصاویر بارگذاری‌شده نیز باشند.

بستهٔ ollamar به‌طور مشابه آغاز می‌شود، با تابع test_connection() برای بررسی اتصال R به سرور Ollama در حال اجرا، و pull("the_model_name") برای دانلود مدل، مانند pull("gemma3:4b") یا pull("gemma3:12b").

تابع generate() یک تکمیل از LLM تولید می‌کند و یک httr2_response باز می‌گرداند که می‌توان آن را با تابع resp_process() پردازش کرد.

library(ollamar) resp <- generate("gemma2", "What is ggplot2?") resp_text <- resp_process(resp)

یا می‌توانید پاسخ متنی را به‌صورت مستقیم با نوشتاری مانند resp <- generate("gemma2", "What is ggplot2?", output = "text") درخواست کنید. گزینه‌ای برای جریان (stream) متن وجود دارد با stream = TRUE:

resp <- generate("gemma2", "Tell me about the data.table R package", output = "text", stream = TRUE)

ollamar قابلیت‌های دیگری نیز دارد، از جمله تولید تعبیه‌های متنی، تعریف و فراخوانی ابزارها، و درخواست خروجی JSON قالب‌بندی‌شده. جزئیات را در GitHub ببینید.

rollama توسط یوهانس ب. گرابر ساخته شد؛ ollamar توسط هوز لین.

Roll your own

اگر تمام چیزی که می‌خواهید یک رابط چت‌بات ساده برای Ollama باشد، یک گزینهٔ آسان ترکیب ellmer، shiny و بستهٔ shinychat برای ساخت یک برنامهٔ Shiny ساده است. پس از نصب، به‌فرض اینکه Ollama نیز نصب و در حال اجرا باشد، می‌توانید اسکریپت پایهٔ زیر را اجرا کنید:

library(shiny) library(shinychat) ui <- bslib::page_fluid( chat_ui("chat") ) server <- function(input, output, session) { chat <- ellmer::chat_ollama(system_prompt = "You are a helpful assistant", model = "phi4") observeEvent(input$chat_user_input, { stream <- chat$stream_async(input$chat_user_input) chat_append("chat", stream) }) } shinyApp(ui, server)

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

من نسخهٔ کمی قوی‌تری از این ساخته‌ام که شامل انتخاب مدل از منوی کشویی و دکمه‌ای برای دانلود چت است. می‌توانید کد آن را اینجا ببینید.

نتیجه‌گیری

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