rtiktokads: Пакет для работы с TikTok Marketing API
Написал небольшой пакет для работы с TikTok Marketing API, он покрывает далеко не все доступные возможности, но основная часть функционала по запросу данных из рекламных аккаунтов в TikTok доступна.
Установка:
Авторизация:
●
●
Запрос данных:
●
●
●
●
●
●
●
Отчёты:
●
Пользуйтесь.
#новости_и_релизы_по_R
Написал небольшой пакет для работы с TikTok Marketing API, он покрывает далеко не все доступные возможности, но основная часть функционала по запросу данных из рекламных аккаунтов в TikTok доступна.
Установка:
pak::pak("selesnow/rtiktokads")Авторизация:
●
tik_set_username() - задать имя пользователя●
tik_auth() - авторизоваться в TikTok Bussines APIЗапрос данных:
●
tik_get_business_centers() - запросить список бизнес центров●
tik_get_advertiser_accounts() - запросить список рекламных аккаунтов●
tik_get_advertiser_info() - запросить информацию по рекламным аккаунтам●
tik_get_advertiser_balance() - запросить информацию о балансе рекламных аккаунтов●
tik_get_campaigns() - Запрос рекламных кампаний●
tik_get_ad_groups() - Запрос групп объявлений●
tik_get_ads() - Запрос объявленийОтчёты:
●
tik_get_report() - запрос отчётов из TikTok Marketing APIПользуйтесь.
#новости_и_релизы_по_R
👍13🤯3❤2😭1
ellmer 0.3.0
Продолжаю следить за развитием ellmer. В новом релизе частично нарушена обратная совместимость — но только в части функционала, связанного с добавлением инструментов в чат. Ниже подробнее.
Что нового в версии 0.3.0
Унифицированный конструктор чатов
Раньше под каждого провайдера была своя функция-конструктор:
-
-
-
Теперь используется единый конструктор
Улучшенная спецификация инструментов
Хедли поработал над интерфейсом инициализации инструментов, добавляемых в модель.
Новый интефейс выглядит так:
Что изменилось:
1. Аргументы функций теперь передаются в виде списка в
2. У остальных аргументов убрали префикс в виде точки.
Что бы максимально легко перевести свой код определения инструментов модели с предыдущих версий используйте любую LLM, и следующий промпт:
И добавьте в него все
#новости_и_релизы_по_R
Продолжаю следить за развитием ellmer. В новом релизе частично нарушена обратная совместимость — но только в части функционала, связанного с добавлением инструментов в чат. Ниже подробнее.
Что нового в версии 0.3.0
Унифицированный конструктор чатов
Раньше под каждого провайдера была своя функция-конструктор:
-
chat_openai()-
chat_anthropic()-
chat_google_gemini()Теперь используется единый конструктор
chat(), в который можно сразу передать нужный провайдер или модель:openai_chat <- chat("openai/gpt-4.1")
openai_chat$chat("Tell me a joke about an R programmer")
anthropic_chat <- chat("anthropic")
#> Using model = "claude-sonnet-4-20250514".
anthropic_chat$chat("Write an acrostic for tidyr")Улучшенная спецификация инструментов
Хедли поработал над интерфейсом инициализации инструментов, добавляемых в модель.
Новый интефейс выглядит так:
get_weather <- tool(
function(location, unit = "celsius") {
# Function implementation here
paste0("Weather in ", location, " is 22 ", unit)
},
name = "get_weather",
description = "Get current weather for a location",
arguments = list(
location = type_string("The city and state, e.g. San Francisco, CA"),
unit = type_enum(c("C", "F"), "Temperature unit: celsius/fahrenheit")
)
)
Что изменилось:
1. Аргументы функций теперь передаются в виде списка в
arguments;2. У остальных аргументов убрали префикс в виде точки.
Что бы максимально легко перевести свой код определения инструментов модели с предыдущих версий используйте любую LLM, и следующий промпт:
Help the user convert an ellmer 0.2.0 and earlier tool definition into a
ellmer 0.3.0 tool definition. Here's what changed:
* All arguments, apart from the first, should be named, and the argument
names no longer use `.` prefixes. The argument order should be function,
name (as a string), description, then arguments, then anything
* Previously `arguments` was passed as `...`, so all type specifications
should now be moved into a named list and passed to the `arguments`
argument. It can be omitted if the function has no arguments.
# old
tool(
add,
"Add two numbers together"
x = type_number(),
y = type_number()
)
# new
tool(
add,
name = "add",
description = "Add two numbers together",
arguments = list(
x = type_number(),
y = type_number()
)
)
Don't respond; just let the user provide function calls to convert.
И добавьте в него все
tool() описанные в предыдущих версиях ellmer.#новости_и_релизы_по_R
❤11👍6
rappleads - Запрос данных из Apple Ads Campaign Management API
Опубликовал небольшой пакет для запроса данных и отчётов из рекламных кабинетов Apple Ads.
Установка:
Установить
Авторизация:
Тут придётся немного подзаморочится:
1. Получите приглашением с разрешениями API.
2. Сгенерируйте пару закрытый-открытый ключ.
3. Извлеките открытый ключ из сохраненного закрытого ключа.
4. Загрузите открытый ключ.
5. Создайте секрет клиента.
6. Запросите токен доступа.
но в README я всё подробно описал.
Запрос списка доступных аккаунтов:
●
●
Запрос объектов рекламных кабинетов:
●
●
●
●
Запрос отчётов:
●
●
●
●
Пользуйтесь!
#новости_и_релизы_по_R
Опубликовал небольшой пакет для запроса данных и отчётов из рекламных кабинетов Apple Ads.
Установка:
Установить
rappleads можно из CRAN или GitHub:pak::pak("rappleads")
pak::pak("selesnow/rappleads")Авторизация:
Тут придётся немного подзаморочится:
1. Получите приглашением с разрешениями API.
2. Сгенерируйте пару закрытый-открытый ключ.
3. Извлеките открытый ключ из сохраненного закрытого ключа.
4. Загрузите открытый ключ.
5. Создайте секрет клиента.
6. Запросите токен доступа.
но в README я всё подробно описал.
Запрос списка доступных аккаунтов:
●
apl_get_me_details() - Id пользователя и основной организации●
apl_get_user_acl() - Получает роли и организации, к которым есть доступ.Запрос объектов рекламных кабинетов:
●
apl_get_campaigns() - Список рекламных кампаний●
apl_get_ad_groups() - Список групп объявллений●
apl_get_ads() - Список объявлений●
apl_get_creatives() - Список креативовЗапрос отчётов:
●
apl_get_campaign_report() - Отчёт с группировкой по рекламным кампаниям●
apl_get_ad_group_report() - Отчёт с группировкой по группам объявлений●
apl_get_keyword_report() - Отчёт с группировкой по ключевым словам●
apl_get_search_term_report() - Отчёт с группировкой по поисковым условиямПользуйтесь!
#новости_и_релизы_по_R
👍5🔥5
Друзья, кто работает с Facebook Marketing API или Google Ads API через мои пакеты
#новости_и_релизы_по_R
rfacebookstat и rgoogleads соответственно, рекомендую обновить пакеты т.к. они переведены на наиболее актуальные версии API.rfacebookstat -> Facebook Marketing API v23.0rgoogleads - > Google Ads API v21#новости_и_релизы_по_R
👍6🔥5🙏2
Всем привет. Сегодня каналу исполняется 7 лет.
В последнее время я стал писать здесь заметно реже — где-то пропала мотивация. Наверное, сказалось то, что уже около трёх лет канал практически не растёт, а в этом году число подписчиков даже немного уменьшилось.
Тем не менее я не собираюсь его бросать. Посты будут появляться, просто не так часто, как раньше. Возможно, появятся новые идеи, и получится вернуть регулярность и интерес к публикациям.
Спасибо всем, кто остаётся здесь всё это время. Есть несколько планов — как минимум хочу записать пару новых видео.
Остаёмся на связи.
В последнее время я стал писать здесь заметно реже — где-то пропала мотивация. Наверное, сказалось то, что уже около трёх лет канал практически не растёт, а в этом году число подписчиков даже немного уменьшилось.
Тем не менее я не собираюсь его бросать. Посты будут появляться, просто не так часто, как раньше. Возможно, появятся новые идеи, и получится вернуть регулярность и интерес к публикациям.
Спасибо всем, кто остаётся здесь всё это время. Есть несколько планов — как минимум хочу записать пару новых видео.
Остаёмся на связи.
❤77🎉36🔥20👍7🙏3
Обновление ellmer до версии 0.4.0
Вышла новая минорная версия пакета ellmer — 0.4.0. Если вы работаете с LLM прямо из R, это обновление стоит внимания.
Основные изменения и новые возможности:
1. Стабильность и жизненный цикл функций
●
● Улучшена обработка ошибок: если один из запросов не удался, остальная часть процесса продолжает работу.
● Некоторые устаревшие функции удалены:
2. Claude (Anthropic)
● Появился параметр кэширования cache (по умолчанию 5 минут), чтобы экономить токены.
● Работа с файлами:
● Встроенные веб-инструменты:
3. OpenAI
● Используется современный API «responses».
● Аргумент service_tier позволяет выбирать между медленным/дешёвым и быстрым/дорогим вариантом.
● Для старых провайдеров есть
4. Инструменты и расширенные возможности
●
● Новая функция
● Новые аргументы в
● Безопасное хранение API ключей через
5. Улучшения по управлению и отслеживанию
●
● Улучшено отслеживание токенов и стоимости запросов.
● Методы печати (print) объектов Chat стали информативнее, полезно для логов и отчётов.
Более подробно о релизе можно узнать тут.
————————————
В общем много полезного Хедли с командой добавили, напомню, что у меня есть видео урок по работе с ellmer, если кто-то до сих пор не в курсе, что это за пакет.
#новости_и_релизы_по_R
Вышла новая минорная версия пакета ellmer — 0.4.0. Если вы работаете с LLM прямо из R, это обновление стоит внимания.
Основные изменения и новые возможности:
1. Стабильность и жизненный цикл функций
●
parallel_chat() и batch_chat() теперь стабильны — можно безопасно использовать в рабочих скриптах.● Улучшена обработка ошибок: если один из запросов не удался, остальная часть процесса продолжает работу.
● Некоторые устаревшие функции удалены:
Chat$extract_data(), Chat$extract_data_async(), chat_azure(), chat_bedrock(), chat_cortex(), chat_gemini(), chat_openai(seed) и другие.2. Claude (Anthropic)
● Появился параметр кэширования cache (по умолчанию 5 минут), чтобы экономить токены.
● Работа с файлами:
claude_file_upload(), claude_file_list(), claude_file_delete().● Встроенные веб-инструменты:
claude_tool_web_search(), claude_tool_web_fetch(). Модель может самостоятельно искать информацию и читать страницы.3. OpenAI
● Используется современный API «responses».
● Аргумент service_tier позволяет выбирать между медленным/дешёвым и быстрым/дорогим вариантом.
● Для старых провайдеров есть
chat_openai_compatible()4. Инструменты и расширенные возможности
●
tool() может возвращать изображения или PDF документы (см. content_image_file(), content_pdf())● Новая функция
schema_df() позволяет передавать модели структуру датафрейма (колонки, типы) без передачи всех данных.● Новые аргументы в
params(): reasoning_effort и reasoning_tokens — контроль «умственной нагрузки» модели.● Безопасное хранение API ключей через
credentials() вместо передачи напрямую.5. Улучшения по управлению и отслеживанию
●
batch_chat() и parallel_chat() теперь лучше управляют хешами запросов и обработкой ошибок.● Улучшено отслеживание токенов и стоимости запросов.
● Методы печати (print) объектов Chat стали информативнее, полезно для логов и отчётов.
Более подробно о релизе можно узнать тут.
————————————
В общем много полезного Хедли с командой добавили, напомню, что у меня есть видео урок по работе с ellmer, если кто-то до сих пор не в курсе, что это за пакет.
#новости_и_релизы_по_R
👍9❤4🔥4
Новый видеоурок: R и MCP серверы для работы с LLM
В этом уроке мы разбираем, как подключать большие языковые модели к вашим инструментам через MCP, и как использовать R как полноценный сервер и клиент для LLM. Проще говоря разберёмся с тем, как из вашего AI чата сделать полноценного AI ассистента, который умеет не только отвечать на вопросы, но и выполнять различные действия. В видео мы напишем MCP сервер для работы с Google Sheets API.
В видео вы увидите:
● Что такое MCP и чем он отличается от обычного function calling
● Как поднять MCP сервер прямо из R
● Как описывать инструменты для LLM и передавать их через MCP
● Как использовать R как MCP клиент и вызывать инструменты удалённо
● Как подключить собственный MCP сервер к Claude Desktop
● Как дать модели доступ к активным R-сессиям с помощью пакета
● Чем MCP удобнее прямого вызова функций и когда его стоит применять
Тайм коды:
00:00 О чём это видео
01:50 Что такое MCP сервер
03:10 R как MCP сервер
13:03 R как MCP клиент
20:24 Подключаем написанный ранее MCP сервер к Claude Desktop
23:10 Подключаемся через Claude Desktop к активным R сессиям (пакет btw)
27:09 Заключение
Ссылки:
- репозиторий со всеми материалами к уроку
#видео_уроки_по_R
В этом уроке мы разбираем, как подключать большие языковые модели к вашим инструментам через MCP, и как использовать R как полноценный сервер и клиент для LLM. Проще говоря разберёмся с тем, как из вашего AI чата сделать полноценного AI ассистента, который умеет не только отвечать на вопросы, но и выполнять различные действия. В видео мы напишем MCP сервер для работы с Google Sheets API.
В видео вы увидите:
● Что такое MCP и чем он отличается от обычного function calling
● Как поднять MCP сервер прямо из R
● Как описывать инструменты для LLM и передавать их через MCP
● Как использовать R как MCP клиент и вызывать инструменты удалённо
● Как подключить собственный MCP сервер к Claude Desktop
● Как дать модели доступ к активным R-сессиям с помощью пакета
btw● Чем MCP удобнее прямого вызова функций и когда его стоит применять
Тайм коды:
00:00 О чём это видео
01:50 Что такое MCP сервер
03:10 R как MCP сервер
13:03 R как MCP клиент
20:24 Подключаем написанный ранее MCP сервер к Claude Desktop
23:10 Подключаемся через Claude Desktop к активным R сессиям (пакет btw)
27:09 Заключение
Ссылки:
- репозиторий со всеми материалами к уроку
#видео_уроки_по_R
YouTube
Язык R как MCP сервер и MCP клиент (разработка AI ассистента)
В этом уроке мы продолжаем разбирать продвинутую работу с большими языковыми моделями в экосистеме R.
В предыдущих видео мы познакомились с пакетами ellmer и shinychat, а также встроили LLM в Telegram-бота.
Теперь переходим к следующему уровню — инструментам…
В предыдущих видео мы познакомились с пакетами ellmer и shinychat, а также встроили LLM в Telegram-бота.
Теперь переходим к следующему уровню — инструментам…
5🔥30❤8👍2
R4marketing | канал Алексея Селезнёва | Язык R
Новый видеоурок: R и MCP серверы для работы с LLM В этом уроке мы разбираем, как подключать большие языковые модели к вашим инструментам через MCP, и как использовать R как полноценный сервер и клиент для LLM. Проще говоря разберёмся с тем, как из вашего…
Опубликовал текстовую версию урока по написанию своего MCP сервера на R
Кому привычнее воспринимать текст, опубликовал статью по материалам урока "Язык R как MCP сервер и MCP клиент". Так же в статье найдёте код MCP сервера для работы с Google Sheets API, и пример конфига для его подключения к
Содержание:
1. Что такое MCP сервер
2. Язык R как MCP сервер (пишем сервер для работы с Google таблицами)
3. Язык R как MCP клиент
4. Заворачиваем AI ассистента в интерфейс чата
5. Подключаем MCP сервер к Claude Desktop
6. Заключение
————————————
Возможно в следующем году запишу ещё несколько видео по этой теме, и соберу небольшой курс по разработке AI инструментов на языке R.
#статьи_по_R
Кому привычнее воспринимать текст, опубликовал статью по материалам урока "Язык R как MCP сервер и MCP клиент". Так же в статье найдёте код MCP сервера для работы с Google Sheets API, и пример конфига для его подключения к
ellmer и Claude Desktop.Содержание:
1. Что такое MCP сервер
2. Язык R как MCP сервер (пишем сервер для работы с Google таблицами)
3. Язык R как MCP клиент
4. Заворачиваем AI ассистента в интерфейс чата
5. Подключаем MCP сервер к Claude Desktop
6. Заключение
————————————
Возможно в следующем году запишу ещё несколько видео по этой теме, и соберу небольшой курс по разработке AI инструментов на языке R.
#статьи_по_R
Alexey Seleznev blog
Как написать свой MCP сервер на языке R
Ранее я уже рассказывал про разработку AI чатов на языке R. Теперь сделаем шаг дальше. В этой статье мы разберем, как научить модель работать с вашими функциями и сервисами через MCP серв…
🔥24👍9❤3
RAG: Подключаем AI чат к собственной базе знаний
В этом уроке мы разбираем RAG (Retrieval-Augmented Generation) — подход, который позволяет большим языковым моделям отвечать на вопросы, опираясь не только на свои внутренние знания и системный промпт, но и на вашу собственную базу данных и документы.
Если в предыдущих видео мы научились вызывать LLM из R, строить чат-интерфейсы и подключать инструменты, то здесь делаем следующий логичный шаг — подключаем модель к базе знаний.
В уроке мы последовательно пройдём весь RAG-пайплайн на примере пакета
• разберём, что такое RAG и из каких этапов он состоит;
• подготовим документы и разобьём их на фрагменты;
• создадим эмбединги и запишем их в хранилище;
• посмотрим, как устроен векторный и текстовый (VSS и BM25) поиск по базе знаний;
• научимся проверять и отлаживать хранилище с помощью Ragnar Store Inspector;
• подключим языковую модель к базе знаний;
• соберём простой AI-чат с помощью пакета
В итоге у вас будет чёткое понимание, как в R реализовать полноценный RAG-подход — от документов до работающего AI-ассистента, который отвечает на вопросы на основе ваших данных.
Тайм коды:
00:00 О чём это видео
01:54 Что такое RAG
06:02 Создание переменных среды для хранения API ключей
07:31 Подготовка документов
10:44 Разделение документа на фрагменты, эмбендинг и запись фрагментов в хранилище
22:24 Инструмент проверки хранилища Ragnar Store Inspector
24:05 VSS и BM25 поиск по хранилищу
31:13 Подключение LMM к базе знаний
35:08 Создаём интерфейс AI чата с помощью пакета shinychat
38:55 Резюмируем весь рассмотренный в видео материал
41:22 Заключение
Ссылки:
- Материалы к уроку
#видео_уроки_по_R
В этом уроке мы разбираем RAG (Retrieval-Augmented Generation) — подход, который позволяет большим языковым моделям отвечать на вопросы, опираясь не только на свои внутренние знания и системный промпт, но и на вашу собственную базу данных и документы.
Если в предыдущих видео мы научились вызывать LLM из R, строить чат-интерфейсы и подключать инструменты, то здесь делаем следующий логичный шаг — подключаем модель к базе знаний.
В уроке мы последовательно пройдём весь RAG-пайплайн на примере пакета
ragnar:• разберём, что такое RAG и из каких этапов он состоит;
• подготовим документы и разобьём их на фрагменты;
• создадим эмбединги и запишем их в хранилище;
• посмотрим, как устроен векторный и текстовый (VSS и BM25) поиск по базе знаний;
• научимся проверять и отлаживать хранилище с помощью Ragnar Store Inspector;
• подключим языковую модель к базе знаний;
• соберём простой AI-чат с помощью пакета
shinychat.В итоге у вас будет чёткое понимание, как в R реализовать полноценный RAG-подход — от документов до работающего AI-ассистента, который отвечает на вопросы на основе ваших данных.
Тайм коды:
00:00 О чём это видео
01:54 Что такое RAG
06:02 Создание переменных среды для хранения API ключей
07:31 Подготовка документов
10:44 Разделение документа на фрагменты, эмбендинг и запись фрагментов в хранилище
22:24 Инструмент проверки хранилища Ragnar Store Inspector
24:05 VSS и BM25 поиск по хранилищу
31:13 Подключение LMM к базе знаний
35:08 Создаём интерфейс AI чата с помощью пакета shinychat
38:55 Резюмируем весь рассмотренный в видео материал
41:22 Заключение
Ссылки:
- Материалы к уроку
#видео_уроки_по_R
YouTube
RAG: Как подключить AI чат к собственной базе знаний (язык R + ellmer + ragnar)
В этом уроке мы разбираем RAG (Retrieval-Augmented Generation) — подход, который позволяет большим языковым моделям отвечать на вопросы, опираясь не только на свои внутренние знания, но и на вашу собственную базу данных и документы.
Если в предыдущих видео…
Если в предыдущих видео…
❤12🔥11👍2
Курс по разработке AI-инструментов на R
Не так давно я писал, что планирую собрать единый курс из своей серии уроков по внедрению ИИ в рабочие процессы. Сегодня проект официально запущен.
Это полноценный интерактивный учебник на Bookdown, где каждое видео дополнено подробным конспектом, готовым кодом, схемами и вопросами для самопроверки.
Что в программе на текущий момент:
1. Введение в разработку AI инструментов: Работа с API через
2. LLM в Telegram боте: Проектируем архитектуру бота, способного поддерживать диалог и работать с множеством пользователей.
3. Язык R как MCP сервер и клиент: Выходим за рамки чата. Учим модель использовать ваши локальные данные и функции как инструменты.
4. RAG (Retrieval-Augmented Generation): Подключаем ИИ к собственной базе знаний на DuckDB. Делаем так, чтобы модель отвечала строго по вашим документам.
Эта база закрывает 90% задач, с которыми вы столкнетесь при разработке реальных AI-ассистентов для аналитики и бизнеса.
Важно: Программа не финальная. Я планирую расширять курс новыми модулями по мере выхода актуальных решений и развития нашего внутреннего стека. В ближайшие несколько недель будет добавлен 5 урок. Так что не забывайте подписываться, что бы не пропускать обновления.
#курсы_по_R
Не так давно я писал, что планирую собрать единый курс из своей серии уроков по внедрению ИИ в рабочие процессы. Сегодня проект официально запущен.
Это полноценный интерактивный учебник на Bookdown, где каждое видео дополнено подробным конспектом, готовым кодом, схемами и вопросами для самопроверки.
Что в программе на текущий момент:
1. Введение в разработку AI инструментов: Работа с API через
ellmer, управление контекстом и создание первого интерфейса на shinychat.2. LLM в Telegram боте: Проектируем архитектуру бота, способного поддерживать диалог и работать с множеством пользователей.
3. Язык R как MCP сервер и клиент: Выходим за рамки чата. Учим модель использовать ваши локальные данные и функции как инструменты.
4. RAG (Retrieval-Augmented Generation): Подключаем ИИ к собственной базе знаний на DuckDB. Делаем так, чтобы модель отвечала строго по вашим документам.
Эта база закрывает 90% задач, с которыми вы столкнетесь при разработке реальных AI-ассистентов для аналитики и бизнеса.
Важно: Программа не финальная. Я планирую расширять курс новыми модулями по мере выхода актуальных решений и развития нашего внутреннего стека. В ближайшие несколько недель будет добавлен 5 урок. Так что не забывайте подписываться, что бы не пропускать обновления.
#курсы_по_R
🔥44❤12🤝2
Кастомизация интерфейса AI чата (shinychat)
Опубликовал 5 урок курса "Язык R для разработки AI инструментов". В этом уроке мы разбираем, как превратить базовое окно чата в профессиональное приложение. Мы детально изучим возможности пакета
Из видео вы узнаете:
• Как кастомизировать иконки, приветственные сообщения и темы оформления
• Как добавить систему интерактивных подсказок (suggestions) для управления диалогом
• Как закрепить поле ввода внизу экрана и использовать sidebar для интерфейса чата
• Как сделать работу AI-инструментов прозрачной для пользователя (отображение вызовов и аргументов)
• Как динамически менять иконки и описания в зависимости от результата работы функций
• Как реализовать сохранение и восстановление истории переписки через URL-параметры
• Как правильно использовать
Тайм коды:
00:00 Введение
01:04 План урока
03:05 Базовый интерфейс + Кастомизация иконки ассистента + приветственное сообщение
06:03 Добавление в чат подсказок
07:23 Применение тем, и расположение поля ввода запроса внизу страницы
09:33 Расположение интерфейса чата в sidebar
10:49 Как поместить интерфейс чата в карточку
11:30 Отображение в чате вызываемых моделью инструментов
14:10 Кастомизация иконки и описания вызываемых инструментов
17:28 Кастомизация отображения полученного вызываемым инструментом результата
20:13 Опции управления отображения вызываемых моделью инструментов
21:34 Восстановление и сброс диалога
24:51 Как использовать
27:56 Заключение
#курсы_по_R
Опубликовал 5 урок курса "Язык R для разработки AI инструментов". В этом уроке мы разбираем, как превратить базовое окно чата в профессиональное приложение. Мы детально изучим возможности пакета
shinychat для глубокой кастомизации интерфейса: от визуального оформления до продвинутой логики работы с инструментами и сессиями. Проще говоря, разберемся, как сделать так, чтобы ваш AI-ассистент выглядел и работал как законченный ИТ-продукт.Из видео вы узнаете:
• Как кастомизировать иконки, приветственные сообщения и темы оформления
• Как добавить систему интерактивных подсказок (suggestions) для управления диалогом
• Как закрепить поле ввода внизу экрана и использовать sidebar для интерфейса чата
• Как сделать работу AI-инструментов прозрачной для пользователя (отображение вызовов и аргументов)
• Как динамически менять иконки и описания в зависимости от результата работы функций
• Как реализовать сохранение и восстановление истории переписки через URL-параметры
• Как правильно использовать
shinychat в сложных модульных Shiny-приложенияхТайм коды:
00:00 Введение
01:04 План урока
03:05 Базовый интерфейс + Кастомизация иконки ассистента + приветственное сообщение
06:03 Добавление в чат подсказок
07:23 Применение тем, и расположение поля ввода запроса внизу страницы
09:33 Расположение интерфейса чата в sidebar
10:49 Как поместить интерфейс чата в карточку
11:30 Отображение в чате вызываемых моделью инструментов
14:10 Кастомизация иконки и описания вызываемых инструментов
17:28 Кастомизация отображения полученного вызываемым инструментом результата
20:13 Опции управления отображения вызываемых моделью инструментов
21:34 Восстановление и сброс диалога
24:51 Как использовать
shinychat в модульных shiny приложениях27:56 Заключение
#курсы_по_R
YouTube
Кастомизация интерфейса AI чата (R + shinychat)
В 5-м уроке курса мы переходим от логики к интерфейсу. Мало создать «умного» ассистента — нужно сделать так, чтобы пользователю было удобно и приятно с ним работать. Мы разберем пакет shinychat вдоль и поперек: от смены иконок до сложной интеграции в модульные…
👍18❤3🔥2
plumber2
Ребята из Posit переосмыслили
Идея простая: чинить старую архитектуру дальше было бессмысленно — накопилось слишком много компромиссов.
В
• смешивались path / query / body параметры
• filters и preempt добавляли много магии и мало прозрачности
• аннотации и документация были ограничены
• архитектура плохо подходила для async и масштабирования
В
• чётко разделили параметры запроса
• path → аргументы функции, query → query, body → body
• полностью переработали аннотации (типы, default, enum, OpenAPI)
• убрали filters и preempt
• построили сервер на fiery, request/response — на reqres
• заложили поддержку async и WebSockets
Важно:
Итог простой:
Со всей документацией можно ознакомиться по ссылке.
#новости_и_релизы_по_R
Ребята из Posit переосмыслили
plumber и выпустили plumber2. И это не «plumber v2», а полноценный перезапуск API-фреймворка для R.Идея простая: чинить старую архитектуру дальше было бессмысленно — накопилось слишком много компромиссов.
В
plumber:• смешивались path / query / body параметры
• filters и preempt добавляли много магии и мало прозрачности
• аннотации и документация были ограничены
• архитектура плохо подходила для async и масштабирования
В
plumber2 это всё пересобрали:• чётко разделили параметры запроса
• path → аргументы функции, query → query, body → body
• полностью переработали аннотации (типы, default, enum, OpenAPI)
• убрали filters и preempt
• построили сервер на fiery, request/response — на reqres
• заложили поддержку async и WebSockets
# Было (plumber)
#* @get /user/<id>
function(id, name) { ... }
# Стало (plumber2)
#* @get /user/<id:int>
#* @async
function(id, query) {
# id — строго из пути
# query$name — из параметров запроса
# Выполняется асинхронно!
}
Важно:
plumber2 не обратно совместим с plumber — это осознанное архитектурное решение.Итог простой:
plumber доказал, что API на R возможны, а plumber2 делает их архитектурно нормальными — ближе к FastAPI-подходу, но в R-экосистеме.Со всей документацией можно ознакомиться по ссылке.
#новости_и_релизы_по_R
🔥17👍7
dplyr 1.2.0
Ребята из команды tidyverse выкатили релиз dplyr 1.2.0 — обновление, целиком посвящённое более читаемой и декларативной работе с заменой и исключением значений.
Ну а я в свою очередь снял небольшое видео посвящённое этому релизу, и добавил его в курс "Введение в dplyr 1.0.0".
В новом видео разбираю ключевые нововведения:
•
•
•
•
Все примеры — на практике, с пояснениями, где и зачем использовать новые функции.
Ссылки:
• Видео снято по статье "dplyr 1.2.0" из блога tidyverse.
• Рассмотренный в ходе уроке код можно найти тут.
#новости_и_релизы_по_R
Ребята из команды tidyverse выкатили релиз dplyr 1.2.0 — обновление, целиком посвящённое более читаемой и декларативной работе с заменой и исключением значений.
Ну а я в свою очередь снял небольшое видео посвящённое этому релизу, и добавил его в курс "Введение в dplyr 1.0.0".
В новом видео разбираю ключевые нововведения:
•
filter_out() — читаемая альтернатива filter(!...)•
recode_values() — удобная и безопасная перекодировка значений•
replace_values() — массовая замена значений без изменения структуры данных•
replace_when() — условная замена значений как развитие case_when()Все примеры — на практике, с пояснениями, где и зачем использовать новые функции.
Ссылки:
• Видео снято по статье "dplyr 1.2.0" из блога tidyverse.
• Рассмотренный в ходе уроке код можно найти тут.
#новости_и_релизы_по_R
🔥33❤7👍3
plumber2 0.2.0
Совсем недавно я рассказывал про plumber2, и вот появился его свежий релиз.
Вышла версия 0.2.0, и это уже не просто косметическое обновление. Пакет постепенно доводят до состояния, когда его можно спокойно использовать в продакшене для реальных API-сервисов на R.
1. Поддержка OpenTelemetry
Главное нововведение — интеграция с OpenTelemetry.
Если коротко, теперь можно:
• собирать трассировки запросов;
• получать метрики;
• логировать события;
• подключать внешние системы мониторинга.
Это важно для всех, кто строит API не «для себя», а для команды или продукта. Можно видеть, какие эндпоинты тормозят, где возникают ошибки, как распределяется нагрузка. Для микросервисной архитектуры это особенно актуально.
OpenTelemetry можно использовать и как систему логирования, а не только для трейсинга.
2. Встроенная аутентификация
В 0.2.0 появилась удобная система guards для защиты маршрутов.
Поддерживаются разные способы авторизации: basic, bearer-токены, API-ключи, OAuth2, OpenID Connect. Всё подключается через пакет fireproof и настраивается довольно гибко.
Можно комбинировать схемы доступа, например разрешать вход по basic или по ключу вместе с Google-аутентификацией. Для корпоративных API это серьёзный шаг вперёд.
Теперь не нужно изобретать свою систему доступа поверх
3. Datastore через аннотацию
Добавили аннотацию
Это упрощает работу с сессиями, токенами и другими persistent-данными. Код становится чище, структура API понятнее.
4. Улучшения report-endpoints
Доработали механизм отчётных эндпоинтов.
Появилась функция
Это удобно для аналитических API, где нужно по запросу формировать отчёты или выгрузки.
Ссылки:
Более подробно про релиз можно узнать из статьи "plumber2 0.2.0".
#новости_и_релизы_по_R
Совсем недавно я рассказывал про plumber2, и вот появился его свежий релиз.
Вышла версия 0.2.0, и это уже не просто косметическое обновление. Пакет постепенно доводят до состояния, когда его можно спокойно использовать в продакшене для реальных API-сервисов на R.
1. Поддержка OpenTelemetry
Главное нововведение — интеграция с OpenTelemetry.
Если коротко, теперь можно:
• собирать трассировки запросов;
• получать метрики;
• логировать события;
• подключать внешние системы мониторинга.
Это важно для всех, кто строит API не «для себя», а для команды или продукта. Можно видеть, какие эндпоинты тормозят, где возникают ошибки, как распределяется нагрузка. Для микросервисной архитектуры это особенно актуально.
OpenTelemetry можно использовать и как систему логирования, а не только для трейсинга.
2. Встроенная аутентификация
В 0.2.0 появилась удобная система guards для защиты маршрутов.
Поддерживаются разные способы авторизации: basic, bearer-токены, API-ключи, OAuth2, OpenID Connect. Всё подключается через пакет fireproof и настраивается довольно гибко.
Можно комбинировать схемы доступа, например разрешать вход по basic или по ключу вместе с Google-аутентификацией. Для корпоративных API это серьёзный шаг вперёд.
Теперь не нужно изобретать свою систему доступа поверх
plumber2.3. Datastore через аннотацию
Добавили аннотацию
@datastore. Раньше хранилища состояния нужно было описывать только в коде. Теперь их можно объявлять рядом с обработчиками.Это упрощает работу с сессиями, токенами и другими persistent-данными. Код становится чище, структура API понятнее.
4. Улучшения report-endpoints
Доработали механизм отчётных эндпоинтов.
Появилась функция
api_report(), которая расширяет возможности тега @report. Можно гибче настраивать параметры, автоматически учитывать их в OpenAPI-документации и отдавать отчёты, например, на базе Quarto.Это удобно для аналитических API, где нужно по запросу формировать отчёты или выгрузки.
Ссылки:
Более подробно про релиз можно узнать из статьи "plumber2 0.2.0".
#новости_и_релизы_по_R
🔥16❤2
Мультиагентные системы в R: пакет mini007
Опубликовал шестой урок курса "Язык R для разработки AI инструментов". Новый урок посвящен проектированию автономных ИИ-команд. Разбираем, как распределять задачи между специализированными агентами и координировать их работу через
Ключевые темы:
• Создание и настройка агентов: системные промпты, лимиты и бюджеты.
• Автоматизация: генерация и выполнение R-кода, самопроверка ответов (LLM-as-a-judge).
• Архитектура MAS: декомпозиция задач, общая память и итерационные циклы.
• Human-in-the-loop: интеграция человека в цикл принятия решений для контроля и правки промежуточных результатов.
• Агентные диалоги: организация взаимодействия между несколькими моделями для решения сложных кейсов.
Тайм-коды:
00:00 Введение
01:08 Создание объекта класса Agent
07:09 Управление бюджетом агента
09:20 Выполнение R-кода агентом
11:43 Проверка качества ответов
18:56 Теория мультиагентных систем
20:43 Настройка MAS в mini007
29:07 Контроль человеком (HITL)
33:44 Диалог двух агентов
39:08 Интеграция в Shiny
Ссылки:
• Видео на Youtube
• Курс "Язык R для разработки AI инструментов"
#курсы_по_R
Опубликовал шестой урок курса "Язык R для разработки AI инструментов". Новый урок посвящен проектированию автономных ИИ-команд. Разбираем, как распределять задачи между специализированными агентами и координировать их работу через
LeadAgent.Ключевые темы:
• Создание и настройка агентов: системные промпты, лимиты и бюджеты.
• Автоматизация: генерация и выполнение R-кода, самопроверка ответов (LLM-as-a-judge).
• Архитектура MAS: декомпозиция задач, общая память и итерационные циклы.
• Human-in-the-loop: интеграция человека в цикл принятия решений для контроля и правки промежуточных результатов.
• Агентные диалоги: организация взаимодействия между несколькими моделями для решения сложных кейсов.
Тайм-коды:
00:00 Введение
01:08 Создание объекта класса Agent
07:09 Управление бюджетом агента
09:20 Выполнение R-кода агентом
11:43 Проверка качества ответов
18:56 Теория мультиагентных систем
20:43 Настройка MAS в mini007
29:07 Контроль человеком (HITL)
33:44 Диалог двух агентов
39:08 Интеграция в Shiny
Ссылки:
• Видео на Youtube
• Курс "Язык R для разработки AI инструментов"
#курсы_по_R
YouTube
Разработка мульти агентных AI систем (R + ellmer + mini007)
В этом уроке мы выходим на новый уровень проектирования ИИ-систем. Если раньше мы работали с одним ассистентом, то сегодня мы научимся создавать целые команды агентов, где каждый отвечает за свою узкую задачу. Мы разберем пакет mini007, который позволяет…
🔥18❤4👍2👾1
Интерфейс для общения с данными на естественном языке: новый урок по пакету querychat
В новом уроке курса "Язык R для разработки AI инструментов" мы разбираем, как превратить ваше Shiny-приложение в аналитического ассистента, который понимает вопросы на человеческом языке и самостоятельно пишет SQL-запросы к вашим таблицам.
Пакет
В этом видео:
● Принцип работы Text-to-SQL: как LLM переводит вопросы в точный программный код
● Безопасность данных: почему
● Настройка TableSchema: учим модель понимать структуру ваших таблиц, типы столбцов и категории
● Интеграция в Shiny: использование готовых модулей для быстрого развертывания аналитического чата
● Прозрачность и контроль: визуализация сгенерированного SQL-кода для проверки пользователем
● Использование DuckDB в качестве высокопроизводительного движка для запросов
Тайм-коды урока:
00:00 Введение
01:36 Демонстрация интерфейса построенного на основе пакета
04:27 Как работает
06:06 Создание и запуск интерфейса с помощью
09:50 Подключение внешних источников данных
10:53 Предоставление дополнительного контекста
18:22 Интеграция
27:28 Инструменты в
30:16 Заключение
Ссылки:
• Видео на Youtube
• Курс "Язык R для разработки AI инструментов"
#курсы_по_R
В новом уроке курса "Язык R для разработки AI инструментов" мы разбираем, как превратить ваше Shiny-приложение в аналитического ассистента, который понимает вопросы на человеческом языке и самостоятельно пишет SQL-запросы к вашим таблицам.
Пакет
querychat решает одну из главных проблем интеграции LLM с базами данных — проблему точности и безопасности. Мы разберем архитектуру Text-to-SQL, где модель не галлюцинирует цифрами, а выполняет реальный код в вашем окружении.В этом видео:
● Принцип работы Text-to-SQL: как LLM переводит вопросы в точный программный код
● Безопасность данных: почему
querychat передает только метаданные схемы, не отправляя сами данные в облако● Настройка TableSchema: учим модель понимать структуру ваших таблиц, типы столбцов и категории
● Интеграция в Shiny: использование готовых модулей для быстрого развертывания аналитического чата
● Прозрачность и контроль: визуализация сгенерированного SQL-кода для проверки пользователем
● Использование DuckDB в качестве высокопроизводительного движка для запросов
Тайм-коды урока:
00:00 Введение
01:36 Демонстрация интерфейса построенного на основе пакета
querychat04:27 Как работает
querychat06:06 Создание и запуск интерфейса с помощью
querychat09:50 Подключение внешних источников данных
10:53 Предоставление дополнительного контекста
18:22 Интеграция
querychat в свои Shiny приложения27:28 Инструменты в
querychat30:16 Заключение
Ссылки:
• Видео на Youtube
• Курс "Язык R для разработки AI инструментов"
#курсы_по_R
🔥19❤4👍2🤯1
Наверняка вы в курсе, что проект bookdown.org прекращает свою работу. На данный момент там опубликовано более 7000 книг по R, с 15 января 2026 года на сайт уже нельзя загружать новые книги, а 31 января 2027 года сайт будет недоступен.
Все свои курсы я изначально дублировал помимо bookdown на GitHub Pages, так что если у вас где то в закладках сохранены ссылки на bookdown, то лучше их заменить на эти:
• Язык R для пользователей Excel
• Введение в dplyr 1.0.0
• Циклы и функционалы в языке R
• Разработка telegram ботов на языке R
• Разработка пакетов на языке R
• Язык R для разработки AI инструментов
#новости_и_релизы_по_R
Все свои курсы я изначально дублировал помимо bookdown на GitHub Pages, так что если у вас где то в закладках сохранены ссылки на bookdown, то лучше их заменить на эти:
• Язык R для пользователей Excel
• Введение в dplyr 1.0.0
• Циклы и функционалы в языке R
• Разработка telegram ботов на языке R
• Разработка пакетов на языке R
• Язык R для разработки AI инструментов
#новости_и_релизы_по_R
❤37👍9😢5🔥4
Автоматизация разработки в RStudio с помощью Gemini CLI
В новом видео делюсь тем, как у меня сейчас автоматизирован процесс разработки. Речь пойдет про интеграцию RStudio и Gemini CLI. Gemini CLI это аналог Claude Code, но с хорошим бесплатным тарифом, который способен в значительной части покрыть ваши повседневные потребности по разработке и автоматизации, позволяя не переплачивать там, где это не нужно.
В видео продемонстрирую пример решения одной из своих реальных задач, по переводу пакета на новую версию API.
Разбираем, как запустить этот стек в RStudio и использовать для реальных задач.
Что в видео:
• Gemini CLI vs Claude Code: Почему я перешел на Gemini и как это экономит бюджет.
• Настройка: Установка и получение API ключа.
• Интеграция: Подключение CLI к RStudio.
• Практика: Рефакторинг и перевод пакета rgoogleads на новую версию Google Ads API.
• Паттерны: Как через GEMINI.md заставить модель писать код именно так, как вам нужно.
• Расширение возможностей: Работа с MCP серверами.
Тайм коды:
00:00 О чём это видео
01:00 Почему gemini cli, а не claude code
02:27 Установка gemini cli
03:56 Создание и установка API ключа
05:25 Подключение gemini cli к RStudio
06:08 Базовый пример использования gemini cli
08:13 Продвинутый пример использования gemini cli, перевод пакета rgoogleads на новую версию Google Ads API
14:30 Использование команд gemini cli
16:13 Как задать паттерны поведения модели в gemini cli, файл GEMINI.md
18:08 Как подключить gemini cli к MCP серверу
20:30 Пример использования MCP сервера в gemini cli
22:31 Заключение
#видео_уроки_по_R
В новом видео делюсь тем, как у меня сейчас автоматизирован процесс разработки. Речь пойдет про интеграцию RStudio и Gemini CLI. Gemini CLI это аналог Claude Code, но с хорошим бесплатным тарифом, который способен в значительной части покрыть ваши повседневные потребности по разработке и автоматизации, позволяя не переплачивать там, где это не нужно.
В видео продемонстрирую пример решения одной из своих реальных задач, по переводу пакета на новую версию API.
Разбираем, как запустить этот стек в RStudio и использовать для реальных задач.
Что в видео:
• Gemini CLI vs Claude Code: Почему я перешел на Gemini и как это экономит бюджет.
• Настройка: Установка и получение API ключа.
• Интеграция: Подключение CLI к RStudio.
• Практика: Рефакторинг и перевод пакета rgoogleads на новую версию Google Ads API.
• Паттерны: Как через GEMINI.md заставить модель писать код именно так, как вам нужно.
• Расширение возможностей: Работа с MCP серверами.
Тайм коды:
00:00 О чём это видео
01:00 Почему gemini cli, а не claude code
02:27 Установка gemini cli
03:56 Создание и установка API ключа
05:25 Подключение gemini cli к RStudio
06:08 Базовый пример использования gemini cli
08:13 Продвинутый пример использования gemini cli, перевод пакета rgoogleads на новую версию Google Ads API
14:30 Использование команд gemini cli
16:13 Как задать паттерны поведения модели в gemini cli, файл GEMINI.md
18:08 Как подключить gemini cli к MCP серверу
20:30 Пример использования MCP сервера в gemini cli
22:31 Заключение
#видео_уроки_по_R
🔥22👍5❤4
Вышел mcptools 1.0.0
Ребята из Posit исправили ошибки, и расширили функционал, судя по номеру версии пакет приобрёл окончательный стабильный интерфейс, и в ближайшем будущем глобально изменяться не будет.
• Поддержка запуска как Posit Connect R API engine: достаточно
• Инструменты теперь могут возвращать inline-изображения (через
• Для протокола MCP 2025-06-18+ сервер возвращает
• В ответах
• HTTP-сервер теперь учитывает заголовок
•
• Исправлена ситуация, когда сервер продолжал работу после ошибки
• Вызовы через
• Прямое подключение к удалённым Streamable HTTP MCP-серверам (параметр
• Результаты MCP-инструментов теперь конвертируются в нативный для ellmer текст/картинки — чаты ellmer могут получать изображения от MCP-инструментов.
• Дочерние процессы MCP-серверов теперь запускаются с allowlist-окружением + заданными
Если вдруг пропустили подробно про
#новости_и_релизы_по_R
Ребята из Posit исправили ошибки, и расширили функционал, судя по номеру версии пакет приобрёл окончательный стабильный интерфейс, и в ближайшем будущем глобально изменяться не будет.
mcp_server() — новое:• Поддержка запуска как Posit Connect R API engine: достаточно
_server.yml с engine: mcptools, файл с .R-инструментами (объекты ellmer::tool()) и деплой через rsconnect::deployAPI().• Инструменты теперь могут возвращать inline-изображения (через
ellmer::ContentImageInline), в том числе смешанный текст+картинки.• Для протокола MCP 2025-06-18+ сервер возвращает
structuredContent вместе с обычным JSON для результатов-объектов.• В ответах
tools/list теперь передаются аннотации ellmer (title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint) — это MCP-хинты безопасности инструментов.mcp_server() — фиксы:• HTTP-сервер теперь учитывает заголовок
MCP-Protocol-Version, отдаёт 400 на неподдерживаемые версии и больше не «путает» согласование протокола между разными клиентами.•
NULL в R теперь корректно сериализуется в JSON null (чинит JSON-RPC с нулевыми ID запросов).• Исправлена ситуация, когда сервер продолжал работу после ошибки
Invalid Request для stdio-клиентов.• Вызовы через
mcp_session() теперь не висят вечно, если R-сессия не отвечает 2 минуты — таймаут настраивается опцией mcptools.session_response_timeout_seconds или переменной окружения MCPTOOLS_SESSION_RESPONSE_TIMEOUT_SECONDS.mcp_tools() (клиент) — новое:• Прямое подключение к удалённым Streamable HTTP MCP-серверам (параметр
url вместо command), поддержка статических headers для токен-авторизации и полноценный OAuth 2.1 (discovery, Dynamic Client Registration, PKCE, автообновление токена через httr2, кэширование токенов между сессиями).• Результаты MCP-инструментов теперь конвертируются в нативный для ellmer текст/картинки — чаты ellmer могут получать изображения от MCP-инструментов.
mcp_tools() — фикс безопасности:• Дочерние процессы MCP-серверов теперь запускаются с allowlist-окружением + заданными
env-переменными, а не с полным окружением R-процесса — снижает риск случайной утечки credentials, заодно чинит запуск на Windows при заданном env.Если вдруг пропустили подробно про
mcptools я рассказывал в этом видео.#новости_и_релизы_по_R
1🔥12⚡4❤4
Media is too big
VIEW IN TELEGRAM
1❤20🎉10🤔1