R4marketing | канал Алексея Селезнёва | Язык R
4.07K subscribers
59 photos
1 video
11 files
1.22K links
Автор канала Алексей Селезнёв, украинский аналитик, автор ряда курсов по языку R и пакетов расширяющих его возможности.

В канале публикуются статьи, доклады, новости, уроки и заметки по языку R.

Для связи: @AlexeySeleznev
Реклама: http://bit.ly/39MwJCY
Download Telegram
rtiktokads: Пакет для работы с TikTok Marketing API

Написал небольшой пакет для работы с 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

Унифицированный конструктор чатов
Раньше под каждого провайдера была своя функция-конструктор:

- 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.

Установка:
Установить 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 через мои пакеты rfacebookstat и rgoogleads соответственно, рекомендую обновить пакеты т.к. они переведены на наиболее актуальные версии API.

rfacebookstat -> Facebook Marketing API v23.0
rgoogleads - > 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. Стабильность и жизненный цикл функций
● 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-сессиям с помощью пакета 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
5🔥30❤8👍2
R4marketing | канал Алексея Селезнёва | Язык R
Новый видеоурок: R и MCP серверы для работы с LLM В этом уроке мы разбираем, как подключать большие языковые модели к вашим инструментам через MCP, и как использовать R как полноценный сервер и клиент для LLM. Проще говоря разберёмся с тем, как из вашего…
Опубликовал текстовую версию урока по написанию своего MCP сервера на 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
🔥24👍9❤3
RAG: Подключаем AI чат к собственной базе знаний

В этом уроке мы разбираем 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
❤12🔥11👍2
Курс по разработке AI-инструментов на 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 инструментов". В этом уроке мы разбираем, как превратить базовое окно чата в профессиональное приложение. Мы детально изучим возможности пакета 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
👍18❤3🔥2
plumber2

Ребята из 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".

В новом видео разбираю ключевые нововведения:

• 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 это серьёзный шаг вперёд.

Теперь не нужно изобретать свою систему доступа поверх 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 инструментов". Новый урок посвящен проектированию автономных ИИ-команд. Разбираем, как распределять задачи между специализированными агентами и координировать их работу через 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
🔥18❤4👍2👾1
Интерфейс для общения с данными на естественном языке: новый урок по пакету querychat

В новом уроке курса "Язык R для разработки AI инструментов" мы разбираем, как превратить ваше Shiny-приложение в аналитического ассистента, который понимает вопросы на человеческом языке и самостоятельно пишет SQL-запросы к вашим таблицам.

Пакет querychat решает одну из главных проблем интеграции LLM с базами данных — проблему точности и безопасности. Мы разберем архитектуру Text-to-SQL, где модель не галлюцинирует цифрами, а выполняет реальный код в вашем окружении.

В этом видео:
● Принцип работы Text-to-SQL: как LLM переводит вопросы в точный программный код
● Безопасность данных: почему querychat передает только метаданные схемы, не отправляя сами данные в облако
● Настройка TableSchema: учим модель понимать структуру ваших таблиц, типы столбцов и категории
● Интеграция в Shiny: использование готовых модулей для быстрого развертывания аналитического чата
● Прозрачность и контроль: визуализация сгенерированного SQL-кода для проверки пользователем
● Использование DuckDB в качестве высокопроизводительного движка для запросов

Тайм-коды урока:
00:00 Введение
01:36 Демонстрация интерфейса построенного на основе пакета querychat
04:27 Как работает querychat
06:06 Создание и запуск интерфейса с помощью querychat
09:50 Подключение внешних источников данных
10:53 Предоставление дополнительного контекста
18:22 Интеграция querychat в свои Shiny приложения
27:28 Инструменты в querychat
30: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
❤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
🔥22👍5❤4
Вышел mcptools 1.0.0

Ребята из 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