tgindex
R4marketing | канал Алексея Селезнёва | Язык R

R4marketing | канал Алексея Селезнёва | Язык R

Статистика
@R4marketingрусский

Автор канала Алексей Селезнёв, украинский аналитик, автор ряда курсов по языку R и пакетов расширяющих его возможности. В канале публикуются статьи, доклады, новости, уроки и заметки по языку R. Для связи: @AlexeySeleznev Реклама: http://bit.ly/39MwJCY

Последний пост
7 июл.
Последнее чтение
12 авг.
Постов за неделю
0
Всего постов
20
Тип
открытый
Язык
русский
В каталоге с
12 авг.
Подписчики
4 164
+1 за 3 дн.
Сутки
−1
−0,02%
Неделя
 
Месяц
 
Просмотров на пост
2 047
20 постов
Вовлечённость
49,2%
к подписчикам
Постов в день
0,0
всего 20
Упоминаний
3
каналов
Охват размещения
оценка
1/24сутки в ленте
1/48двое суток
1/72трое суток

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 7 июл.737182

    Вышел 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

  • 15 апр.1 5733134

    Автоматизация разработки в 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

  • 24 мар.1 8515528

    Наверняка вы в курсе, что проект 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

  • 13 мар.1 7892614

    Интерфейс для общения с данными на естественном языке: новый урок по пакету 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

  • 24 февр.1 6342518

    Мультиагентные системы в 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 февр.1 431185

    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 февр.1 3184311

    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

  • 26 янв.1 9022412

    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

  • 21 янв.1 6322310

    Кастомизация интерфейса 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

  • 12 янв.2 7465854

    Курс по разработке AI-инструментов на R Не так давно я писал, что планирую собрать единый курс из своей серии уроков по внедрению ИИ в рабочие процессы. Сегодня проект официально запущен. Это полноценный интерактивный учебник на Bookdown, где каждое видео дополнено подробным конспектом, готовым кодом, схемами и вопросами для самопроверки. Что в программе на текущий момент: 1. Введение в разработку AI инструментов: Работа с API через ellmer, управление контекстом и создание первого интерфейса на shinychat. 2. LLM в Telegram боте: Проектируем архитектуру бота, способного поддерживать диалог и работать с множеством пользователей. 3. Язык R как MCP сервер и клиент: Выходим за рамки чата. Учим модель использовать ваши локальные данные и функции как инструменты. 4. RAG (Retrieval-Augmented Generation): Подключаем ИИ к собственной базе знаний на DuckDB. Делаем так, чтобы модель отвечала строго по вашим документам. Эта база закрывает 90% задач, с которыми вы столкнетесь при разработке реальных AI-ассистентов для аналитики и бизнеса. Важно: Программа не финальная. Я планирую расширять курс новыми модулями по мере выхода актуальных решений и развития нашего внутреннего стека. В ближайшие несколько недель будет добавлен 5 урок. Так что не забывайте подписываться, что бы не пропускать обновления. #курсы_по_R

  • 19 дек.2 0812534

    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

  • 8 дек.1 9373616

    Новый видеоурок: R и MCP серверы для работы с LLM В этом уроке мы разбираем, как подключать большие языковые модели к вашим инструментам через MCP, и как использовать R как полноценный сервер и клиент для LLM. Проще говоря разберёмся с тем, как из вашего…

  • 24 нояб.3 2424445

    Новый видеоурок: 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

  • 19 нояб.1 962173

    Обновление 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

  • 1 нояб.2 1051431

    Всем привет. Сегодня каналу исполняется 7 лет. В последнее время я стал писать здесь заметно реже — где-то пропала мотивация. Наверное, сказалось то, что уже около трёх лет канал практически не растёт, а в этом году число подписчиков даже немного уменьшилось. Тем не менее я не собираюсь его бросать. Посты будут появляться, просто не так часто, как раньше. Возможно, появятся новые идеи, и получится вернуть регулярность и интерес к публикациям. Спасибо всем, кто остаётся здесь всё это время. Есть несколько планов — как минимум хочу записать пару новых видео. Остаёмся на связи.

  • Друзья, кто работает с Facebook Marketing API или Google Ads API через мои пакеты rfacebookstat и rgoogleads соответственно, рекомендую обновить пакеты т.к. они переведены на наиболее актуальные версии API. rfacebookstat -> Facebook Marketing API v23.0 rgoogleads - > Google Ads API v21 #новости_и_релизы_по_R

  • 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

  • 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

  • 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

  • Анализ GitHub репозиториев с помощью AI Попался на глаза ещё один интересный проект Хедли - GitAI. Это свежий инструмент в экосистеме R, предназначенный для извлечения знаний из Git-репозиториев с помощью больших языковых моделей (LLM). GitAI — это R-пакет, который позволяет: ● Сканировать один или несколько Git-репозиториев (GitHub или GitLab). ● Извлекать содержимое определённых файлов, например, README.md. ● Обрабатывать это содержимое с помощью LLM, чтобы получить краткие описания или ответы на конкретные вопросы. ● Сохранять результаты в векторную базу данных для последующего семантического поиска или использования в Retrieval Augmented Generation (RAG) сценариях. Пример использования Вот пошаговый пример того, как использовать GitAI для анализа нескольких репозиториев: Для работы кода необходимо указать через переменные среды API токены для работы с GitHub и Gemini (или другой LLM моделью). Sys.setenv('GOOGLE_API_KEY' = 'ваш токен для GEMINI API') Sys.setenv("GITHUB_PAT" = 'ваш персональный GITHUB токен') library(GitAI) # Устанавливаем таймаут и отключаем подробный вывод options(ellmer_timeout_s = 120) verbose_off() # Инициализируем проект my_project <- initialize_project("fascinating_project") |> set_github_repos( repos = c( "r-world-devs/GitStats", "r-world-devs/GitAI", "openpharma/DataFakeR" ) ) |> add_files(files = "README.md") |> set_llm('gemini') |> set_prompt("Напиши краткое изложение проекта в одном предложении на основе предоставленных данных.") # Обрабатываем репозитории results <- process_repos(my_project) # Выводим результаты purrr::walk(results, function(result) { cat(stringr::str_wrap(result$text, width = 80), "\n\n") }) Результат Проект `GitStats` предоставляет унифицированный способ получения данных из GitHub и GitLab, таких как организации, репозитории, коммиты, задачи, пользователи, журналы выпусков, структура файлов, содержимое текстовых файлов и использование R-пакетов, а также предоставляет базовую статистику по коммитам и задачам. Проект GitAI предоставляет фреймворк на R для извлечения и анализа знаний из Git-репозиториев с использованием ИИ и больших языковых моделей, чтобы автоматизировать обзор и улучшить повторное использование кода и информации. DataFakeR - это R-пакет, предназначенный для генерации фейковых данных, сохраняющих определенные характеристики оригинальных данных, с возможностью настройки схемы данных через YAML-файлы и определения пользовательских методов симуляции. Основные функции: ● initialize_project(name): Инициализирует новый проект GitAI. ● set_github_repos(repos): Устанавливает список GitHub-репозиториев для анализа. ● add_files(files): Указывает, какие файлы из репозиториев нужно анализировать. ● set_llm(...): Настраивает использование LLM для обработки содержимого. ● set_prompt(prompt): Устанавливает запрос, который будет передан модели. ● process_repos(project): Запускает процесс анализа репозиториев. ● set_database(...): Настраивает векторную базу данных для хранения результатов. ● find_records(...): Позволяет выполнять поиск по сохранённым результатам. #заметки_по_R

R4marketing | канал Алексея Селезнёва | Язык R — tgindex