Elmer: Универсальный инструмент для работы с LLM через R
Ранее я уже рассказывал о пакете
1. Что такое Elmer?
● Мульти-провайдерная поддержка, на данный момент реализована поддержка:
● Anthropic’s Claude:
● AWS Bedrock:
● Azure OpenAI:
● Databricks:
● GitHub model marketplace:
● Google Gemini:
● Groq:
● Ollama: chat_ollama()`.
● OpenAI: `chat_openai()`.
● perplexity.ai: `chat_perplexity()`.
● Snowflake Cortex: `chat_cortex()`.
Кстати, создатели `elmer` утверждают, что для генерации кода по их мнению лучше всего себя проявляет Anthropic’s Claude, т.е. Claude.ai, и я по этому поводу тоже уже своими наблюдениями делился.
● Гибкость в настройках промптов и диалогов.
● Извлечение структурированных данных из текста.
● Поддержка асинхронных вызовов для повышения производительности.
Эти функции делают Elmer мощным инструментом для анализа данных, автоматизации задач и разработки приложений.
2. Установка
Установите
3. Управление диалогами
Чат-объекты в
4. Программные возможности
4.1. Интерактивный режим: Используйте R-консоль для живого общения:
4.2. Программный режим: Создайте сценарий, возвращающий результаты для дальнейшей обработки:
4.3. Асинхронные вызовы: Используйте асинхронный API для ускорения обработки больших объемов данных.
5. Извлечение структурированных данных
● Анализ отзывов клиентов.
● Извлечение рецептов и их структурирование.
● Геокодирование адресов.
Пример:
6. Работа с токенами
Один запрос к модели GPT-4o mini может стоить от $0.15 за миллион токенов, что делает использование API доступным для экспериментов.
7. Рекомендации по промптам
Правильный дизайн промптов — ключ к качественным ответам. Например:
● Укажите системные инструкции для кастомизации:
● Используйте промпты для автоматизации, например, создания документации на основе README вашего пакета.
8. Кейсы использования
Elmer отлично подходит для:
● Создания чат-ботов для поддержки пользователей.
● Прототипирования инструментов: автоматизация анализа данных и отчетности.
● Кастомизации работы LLM под специфические задачи.
————————————
Пока что
#новости_и_релизы_по_R
Ранее я уже рассказывал о пакете
Elmer, который позволяет взаимодействовать с большими языковыми моделями (LLM) прямо из R. Сегодня мы углубимся в детали его функционала и возможностей, чтобы вы могли максимально эффективно использовать этот инструмент.1. Что такое Elmer?
Elmer — это пакет из экосистемы tidyverse, созданный для удобного использования LLM API. Его основные преимущества:● Мульти-провайдерная поддержка, на данный момент реализована поддержка:
● Anthropic’s Claude:
chat_claude().● AWS Bedrock:
chat_bedrock().● Azure OpenAI:
chat_azure().● Databricks:
chat_databricks().● GitHub model marketplace:
chat_github().● Google Gemini:
chat_gemini().● Groq:
chat_groq().● Ollama: chat_ollama()`.
● OpenAI: `chat_openai()`.
● perplexity.ai: `chat_perplexity()`.
● Snowflake Cortex: `chat_cortex()`.
Кстати, создатели `elmer` утверждают, что для генерации кода по их мнению лучше всего себя проявляет Anthropic’s Claude, т.е. Claude.ai, и я по этому поводу тоже уже своими наблюдениями делился.
● Гибкость в настройках промптов и диалогов.
● Извлечение структурированных данных из текста.
● Поддержка асинхронных вызовов для повышения производительности.
Эти функции делают Elmer мощным инструментом для анализа данных, автоматизации задач и разработки приложений.
2. Установка
Установите
elmer с помощью:pak::pak("tidyverse/elmer")3. Управление диалогами
Чат-объекты в
elmer сохраняют историю, что упрощает многозадачные сценарии:chat <- chat_openai(model = "gpt-4o-mini")
chat$chat("Кто создал R?")
#> "R был создан Россом Ихакой и Робертом Джентлменом."
4. Программные возможности
elmer поддерживает несколько способов взаимодействия с LLM:4.1. Интерактивный режим: Используйте R-консоль для живого общения:
live_console(chat)
4.2. Программный режим: Создайте сценарий, возвращающий результаты для дальнейшей обработки:
my_function <- function() {
chat <- chat_openai(model = "gpt-4o-mini")
chat$chat("Что такое функциональное программирование?")
}4.3. Асинхронные вызовы: Используйте асинхронный API для ускорения обработки больших объемов данных.
5. Извлечение структурированных данных
elmer позволяет преобразовывать текст в удобный формат для анализа:● Анализ отзывов клиентов.
● Извлечение рецептов и их структурирование.
● Геокодирование адресов.
Пример:
chat$chat("Выдели ключевые слова из текста")6. Работа с токенами
elmer помогает отслеживать использование токенов для оптимизации затрат:chat$chat("Кто создал R?")
chat
token_usage()Один запрос к модели GPT-4o mini может стоить от $0.15 за миллион токенов, что делает использование API доступным для экспериментов.
7. Рекомендации по промптам
Правильный дизайн промптов — ключ к качественным ответам. Например:
● Укажите системные инструкции для кастомизации:
chat <- chat_openai(system_prompt = "Отвечай всегда кратко и на русском языке.")
● Используйте промпты для автоматизации, например, создания документации на основе README вашего пакета.
8. Кейсы использования
Elmer отлично подходит для:
● Создания чат-ботов для поддержки пользователей.
● Прототипирования инструментов: автоматизация анализа данных и отчетности.
● Кастомизации работы LLM под специфические задачи.
————————————
elmer открывает новые горизонты для работы с LLM в R. Это не только инструмент для экспериментов, но и мощное средство для интеграции ИИ в ваши проекты. Узнайте больше из официальной документации.Пока что
elmer по прежнему находится в активной стадии разработки, текущая версия 0.0.0.9000, но будем следить за этим процессом, и в ближайшее время буду ещё делиться информацией об этом проекте.#новости_и_релизы_по_R
🔥16👍10❤5
httr2 1.1.0
Команда Хэдли продолжает развивать
В версии 1.1.0 появилось несколько значительных улучшений: поддержка потоковой передачи данных, новые инструменты для работы с URL, улучшенная интеграция с AWS и многое другое.
Разберем ключевые нововведения и примеры их использования.
————————————
1. Потоковая передача данных
Новая функция
Пример создания запроса с потоковой передачей:
Читаем данные частями:
Для обработки построчных данных (
2. Работа с URL
Появились удобные инструменты для манипуляции URL.
2.1. Изменение компонентов URL
2.2. Изменение параметров запроса
2.3. Работа с относительными URL
3. Поддержка AWS
Теперь httr2 позволяет легко подписывать запросы для AWS:
Это упрощает работу с сервисами Amazon, такими как S3, DynamoDB, API Gateway и другими.
4. Дополнительные улучшения
● Кэширование: Оптимизирована система кэширования запросов.
● Обработка ошибок: Теперь сообщения об ошибках стали информативнее.
● Поддержка OAuth: Улучшена аутентификация через OAuth.
В основе поста лежит статья "httr2 1.1.0".
#новости_и_релизы_по_R
Команда Хэдли продолжает развивать
httr2 — современный пакет для работы с веб-API в R, с момента его появления все новые пакеты я пишу именно на его основе. В версии 1.1.0 появилось несколько значительных улучшений: поддержка потоковой передачи данных, новые инструменты для работы с URL, улучшенная интеграция с AWS и многое другое.
Разберем ключевые нововведения и примеры их использования.
————————————
1. Потоковая передача данных
Новая функция
req_perform_connection() улучшает поддержку потоковой передачи ответов, что особенно полезно при работе с LLM и обработке больших объемов данных.Пример создания запроса с потоковой передачей:
library(httr2)
req <- request(example_url()) |> req_template("/stream-bytes/:n", n = 10240)
resp <- req_perform_connection(req)
resp
#> <httr2_response>
#> GET http://127.0.0.1:49283/stream-bytes/10240
#> Status: 200 OK
#> Content-Type: application/octet-stream
#> Body: Streaming connection
Читаем данные частями:
while (!resp_stream_is_complete(resp)) {
bytes <- resp_stream_raw(resp, kb = 2)
cat("Downloaded ", length(bytes), " bytes\n", sep = "")
}
#> Downloaded 2048 bytes
#> Downloaded 2048 bytes
#> Downloaded 2048 bytes
#> Downloaded 2048 bytes
#> Downloaded 2048 bytes
#> Downloaded 0 bytesДля обработки построчных данных (
resp_stream_lines()) и событий сервера (resp_stream_sse()) добавлены отдельные функции.2. Работа с URL
Появились удобные инструменты для манипуляции URL.
2.1. Изменение компонентов URL
url_modify("https://example.com", hostname = "github.com")
#> [1] "https://github.com/"2.2. Изменение параметров запроса
url_modify_query("http://example.com?a=1&b=2", a = 10)
#> [1] "http://example.com/?b=2&a=10"2.3. Работа с относительными URL
url_modify_relative("https://example.com/a/b/c.html", "/d/e/f.html")
#> [1] "https://example.com/d/e/f.html"3. Поддержка AWS
Теперь httr2 позволяет легко подписывать запросы для AWS:
req <- request("https://s3.amazonaws.com/bucketname") |>
req_sign_aws(
access_key = "your-access-key",
secret_key = "your-secret-key",
service = "s3",
region = "us-east-1"
)Это упрощает работу с сервисами Amazon, такими как S3, DynamoDB, API Gateway и другими.
4. Дополнительные улучшения
● Кэширование: Оптимизирована система кэширования запросов.
● Обработка ошибок: Теперь сообщения об ошибках стали информативнее.
● Поддержка OAuth: Улучшена аутентификация через OAuth.
В основе поста лежит статья "httr2 1.1.0".
#новости_и_релизы_по_R
👍21❤7
Рекурсивные операции в R: Магия функции accumulate()
1. Пример 1: Накопительная сумма
Как это работает?:
● Начинает с первого элемента (1)
● Каждый следующий шаг - сумма предыдущего накопленного результата и текущего элемента
● 1 → (1+2=3) → (3+3=6) → (6+4=10) → (10+5=15)
Пример 2: Генерация последовательности Фибоначчи
Детали реализации:
●
● На каждой итерации берем второй элемент и сумму
● Создаем классическую последовательность Фибоначчи
Пример 3: Сложная трансформация данных
Сценарий:
● Накапливаем статистику по транзакциям
● Считаем общую сумму, налоги, количество обработанных записей
● Используем аккумуляцию для последовательной обработки
————————————
В пакете
Тему циклов и функционалов я подробно рассматривал в бесплатном курсе "Циклы и функционалы в языке R", так что если есть желание погрузится в эту тему то велкам!
#заметки_по_R
accumulate() из пакета purrr - потрясающий инструмент для выполнения рекурсивных вычислений в R. Давайте рассмотрим три последовательных примера от простого к сложному.1. Пример 1: Накопительная сумма
library(purrr)
# Простейший пример накопления суммы
numbers <- 1:5
result <- accumulate(numbers, `+`)
# Результат: [1] 1 3 6 10 15
Как это работает?:
● Начинает с первого элемента (1)
● Каждый следующий шаг - сумма предыдущего накопленного результата и текущего элемента
● 1 → (1+2=3) → (3+3=6) → (6+4=10) → (10+5=15)
Пример 2: Генерация последовательности Фибоначчи
fibonacci <- accumulate(1:10, function(acc, _) {
c(acc[2], sum(acc))
}, .init = c(0, 1))
# Результат: последовательность Фибоначчи
# [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]Детали реализации:
●
.init устанавливает начальное состояние● На каждой итерации берем второй элемент и сумму
● Создаем классическую последовательность Фибоначчи
Пример 3: Сложная трансформация данных
library(dplyr)
# Имитация сложного бизнес-процесса
transactions <- list(
list(amount = 100, tax_rate = 0.1),
list(amount = 200, tax_rate = 0.15),
list(amount = 150, tax_rate = 0.12)
)
total_calculation <- accumulate(transactions, function(acc, transaction) {
list(
total_amount = acc$total_amount + transaction$amount,
total_tax = acc$total_tax + (transaction$amount * transaction$tax_rate),
processed_count = acc$processed_count + 1
)
}, .init = list(
total_amount = 0,
total_tax = 0,
processed_count = 0
))
# Финальный результат в последнем элементе
final_result <- total_calculation[[length(total_calculation)]]
Сценарий:
● Накапливаем статистику по транзакциям
● Считаем общую сумму, налоги, количество обработанных записей
● Используем аккумуляцию для последовательной обработки
————————————
В пакете
purrr помимо accumulate() есть множество других полезных функционалов, которые могут заменить вам циклы for, и сделать ваш код более читабельным и оптимизированным. Тему циклов и функционалов я подробно рассматривал в бесплатном курсе "Циклы и функционалы в языке R", так что если есть желание погрузится в эту тему то велкам!
#заметки_по_R
👍25🔥6❤4
Разбираем функцию exec() из пакета rlang
Друзья! Сегодня разберём функцию
Что такое exec()?
Базовый синтаксис:
Практические примеры использования
1. Работа с API
2. Генерация отчётов
3. Обработка данных с динамическими параметрами
Советы
● Кэширование параметров
● Валидация параметров
————————————
● Работаете с конфигурируемыми параметрами
● Создаёте wrapper-функции для API
● Автоматизируете генерацию отчётов
● Обрабатываете данные из разных источников
#заметки_по_R
Друзья! Сегодня разберём функцию
exec(). Если вы работаете с API, создаёте отчёты или автоматизируете рабочие процессы - этот инструмент значительно упростит вашу жизнь.Что такое exec()?
exec() - это современная альтернатива базовой функции do.call(). Она позволяет динамически вызывать функции с аргументами, которые хранятся в списке или других структурах данных.Базовый синтаксис:
exec(fn, !!!args)
Практические примеры использования
1. Работа с API
# Конфигурация для разных API endpoints
api_configs <- list(
jira = list(
base_url = "https://jira.company.com",
auth = list(user = "user", token = "token"),
project = "PROJ"
),
gitlab = list(
base_url = "https://gitlab.company.com",
private_token = "token",
project_id = 123
)
)
# Функция для гибкого создания API запросов
create_api_request <- function(service, endpoint, ...) {
base_params <- api_configs[[service]]
extra_params <- list(...)
exec(
httr::GET,
url = file.path(base_params$base_url, endpoint),
!!!base_params,
!!!extra_params
)
}
# Использование
create_api_request("jira", "issues", query = list(status = "Open"))
2. Генерация отчётов
# Параметры для разных типов отчётов
report_params <- list(
daily = list(
period = "day",
metrics = c("users", "revenue"),
format = "xlsx",
email_to = "team@company.com"
),
weekly = list(
period = "week",
metrics = c("users", "revenue", "retention"),
format = "pdf",
email_to = c("manager@company.com", "ceo@company.com")
)
)
generate_report <- function(report_type, additional_params = list()) {
base_params <- report_params[[report_type]]
# Комбинируем базовые параметры с дополнительными
exec(
create_report,
!!!base_params,
!!!additional_params,
timestamp = Sys.time()
)
}
# Использование
generate_report("daily", list(department = "sales"))
3. Обработка данных с динамическими параметрами
Советы
● Кэширование параметров
# Создаём кэш часто используемых параметров
cached_params <- memoise::memoise(function(report_type) {
# Здесь может быть загрузка из базы данных или API
report_params[[report_type]]
})
generate_cached_report <- function(report_type, ...) {
params <- cached_params(report_type)
exec(create_report, !!!params, ...)
}
● Валидация параметров
validate_and_exec <- function(fn, args) {
required_args <- names(formals(fn))
missing_args <- setdiff(required_args, names(args))
if (length(missing_args) > 0) {
stop("Missing required arguments: ",
paste(missing_args, collapse = ", "))
}
exec(fn, !!!args)
}————————————
exec() - это не просто замена do.call(), а мощный инструмент для создания гибкого и поддерживаемого кода. Особенно полезен когда:● Работаете с конфигурируемыми параметрами
● Создаёте wrapper-функции для API
● Автоматизируете генерацию отчётов
● Обрабатываете данные из разных источников
#заметки_по_R
🔥15👍7
Гибкий импорт в R 4.5 с помощью use()
Всем привет, давно я тут ничего не писал, надо понемногу исправляться.
11 апреля 2025 года вышла новая версия R — R 4.5.0 “How About a Twenty-Six”. Как обычно, разработчики завезли кучу полезных мелочей и парочку реально классных фич. Одна из самых интересных — это функция
Если ты когда-нибудь писал на Python, то помнишь, как там удобно можно импортировать только нужные функции:
В R же приходилось выбирать между:
Или
Проблема второго способа в том, что разные пакеты могут переопределять друг друга. Яркий пример —
А если попробовать вызвать что-то не из списка, например
#новости_и_релизы_по_R
Всем привет, давно я тут ничего не писал, надо понемногу исправляться.
11 апреля 2025 года вышла новая версия R — R 4.5.0 “How About a Twenty-Six”. Как обычно, разработчики завезли кучу полезных мелочей и парочку реально классных фич. Одна из самых интересных — это функция
use(), которой давно в R не хватало.Если ты когда-нибудь писал на Python, то помнишь, как там удобно можно импортировать только нужные функции:
from numpy import array
array([1, 2, 3])
В R же приходилось выбирать между:
dplyr::filter(penguins, bill_len > 40)
Или
library(dplyr)
filter(penguins, bill_len > 40)
Проблема второго способа в том, что разные пакеты могут переопределять друг друга. Яркий пример —
filter() из dplyr и stats. Эту проблему можно было решить с помощью таких пакетов как conflicted, modules и import о чём я уже как то рассказывал тут. Так вот, в R 4.5.0 подвезли use() - аккуратный способ подключать только нужные функции из пакета:use("dplyr", c("filter", "select"))penguins |>
filter(bill_len > 40) |>
select(species:bill_dep)
А если попробовать вызвать что-то не из списка, например
n_distinct(), то R честно скажет, что такой функции в текущем окружении нет.#новости_и_релизы_по_R
👍32🔥6
Новый видеоурок: Использование LLM-моделей в языке R — на практике и бесплатно
В этом видео я показываю реальный кейс из своей работы, где мы встроили LLM-модели (на примере Gemini) в ежедневные процессы аналитики — всё с помощью языка R.
Весь показанный функционал реализован на 100% бесплатно, без покупки подписок или платных API.
На основе пакетов
В этом видео вы узнаете:
● Как бесплатно получить API-ключ Gemini и подключить его к R.
● Как настраивать и использовать объект chat.
● Как с помощью LLM извлекать структурированные данные из текста.
● Как добавить в чат сторонние API как "инструменты".
● Как построить простой, но мощный графический интерфейс с shinychat.
● Как дообучить модель своими данными — для точных ответов под ваш контекст.
Тайм коды:
00:00 О чём это видео
01:05 Кейс практического внедрения AI в рабочие процессы
06:49 Введение в пакет
08:20 Как бесплатно сгенерировать API ключ для работы с Gemini API
09:05 Аргументы конструктора LLM чатов
11:07 Создаём объект chat
13:01 Методы объекта chat
14:30 Отправляем запрос в LLM
17:03 Извлечение структурированных данных из текста
24:15 Добавляем в чат инструменты, работа со сторонними API
28:17 Создаём графический интерфейс для нашего чата с помощью
31:02 Как дообучить модель своими данными
33:50 Заключение
Ссылки:
- Код продемонстрированный в видео
#видео_уроки_по_R
В этом видео я показываю реальный кейс из своей работы, где мы встроили LLM-модели (на примере Gemini) в ежедневные процессы аналитики — всё с помощью языка R.
Весь показанный функционал реализован на 100% бесплатно, без покупки подписок или платных API.
На основе пакетов
ellmer и shinychat я шаг за шагом объясняю, как создать умного чат-бота, обрабатывать текст, подключать сторонние API и даже дообучать модель под себя.В этом видео вы узнаете:
● Как бесплатно получить API-ключ Gemini и подключить его к R.
● Как настраивать и использовать объект chat.
● Как с помощью LLM извлекать структурированные данные из текста.
● Как добавить в чат сторонние API как "инструменты".
● Как построить простой, но мощный графический интерфейс с shinychat.
● Как дообучить модель своими данными — для точных ответов под ваш контекст.
Тайм коды:
00:00 О чём это видео
01:05 Кейс практического внедрения AI в рабочие процессы
06:49 Введение в пакет
ellmer08:20 Как бесплатно сгенерировать API ключ для работы с Gemini API
09:05 Аргументы конструктора LLM чатов
11:07 Создаём объект chat
13:01 Методы объекта chat
14:30 Отправляем запрос в LLM
17:03 Извлечение структурированных данных из текста
24:15 Добавляем в чат инструменты, работа со сторонними API
28:17 Создаём графический интерфейс для нашего чата с помощью
shinychat31:02 Как дообучить модель своими данными
33:50 Заключение
Ссылки:
- Код продемонстрированный в видео
#видео_уроки_по_R
YouTube
Как использовать искусственный интеллект (ChatGPT / Gemini / Claude) в R: от ellmer до shinychat
В этом видео я покажу, как использовать большие языковые модели (LLM) в языке R, чтобы внедрить искусственный интеллект прямо в повседневные рабочие процессы аналитика.
Разберём реальный кейс автоматизации задач с помощью LLM, изучим работу с пакетом ellmer…
Разберём реальный кейс автоматизации задач с помощью LLM, изучим работу с пакетом ellmer…
🔥26👍19❤5
Опубликовал текстовую версию урока об использовании LLM моделей в R
Для тех кому текст лучше воспринимается опубликовал статью на основе урока "Использование LLM-моделей в языке R — на практике и бесплатно".
Содержание:
1. Как мы используем LLM в рабочих процессах
2. Генерация API ключа для работы с LLM
3. Работа с LLM в R
4. Как с помощью LLM извлекать структурированные данные из текста
5. Добавляем в чат инструменты
6. Создаём Shiny интерфейс для чата
7. Как дообучить модель своими данными
8. Заключение
#статьи_по_R
Для тех кому текст лучше воспринимается опубликовал статью на основе урока "Использование LLM-моделей в языке R — на практике и бесплатно".
Содержание:
1. Как мы используем LLM в рабочих процессах
2. Генерация API ключа для работы с LLM
3. Работа с LLM в R
4. Как с помощью LLM извлекать структурированные данные из текста
5. Добавляем в чат инструменты
6. Создаём Shiny интерфейс для чата
7. Как дообучить модель своими данными
8. Заключение
#статьи_по_R
👍18❤8🔥5⚡2
Новый видеоурок: Интеграция LLM моделей в Telegram-ботов на R
В этом видео я расскажу, как интегрировать искусственный интеллект в Telegram-бота, используя язык R и пакеты
В видео вы увидите:
● Как сгенерировать API-ключ для работы с LLM
● Как использовать пакет
● Как извлекать данные из текста и классифицировать сообщения
● Как интегрировать внешние API через LLM
● Как подключить LLM модель к вашему боту
● Как сохранить состояние чата между сессиями
● Как дообучить бота своими данными
Материал частично дублирует урок по
Тайм коды:
00:00 О чём это видео
00:46 Генерация API ключа
02:20 Введение в пакет ellmer
03:20 Создаём объект чата
06:44 Извлечение структурированных данных их текста с помощью LLM моделей
10:35 Классификация текста с помощью LLM моделей
13:53 Интеграция LLM моделей со сторонними API
18:33 Как интегрировать LLM модель в telegram бота
23:27 Как сохранять состояние чатов между разными сессиями бота
26:24 Как дообучить telegram бота своими данными
28:58 Заключение
Ссылки:
- Код продемонстрированный в видео
#видео_уроки_по_R
В этом видео я расскажу, как интегрировать искусственный интеллект в Telegram-бота, используя язык R и пакеты
telegram.bot и ellmer.В видео вы увидите:
● Как сгенерировать API-ключ для работы с LLM
● Как использовать пакет
ellmer для общения с LLM моделями● Как извлекать данные из текста и классифицировать сообщения
● Как интегрировать внешние API через LLM
● Как подключить LLM модель к вашему боту
● Как сохранить состояние чата между сессиями
● Как дообучить бота своими данными
Материал частично дублирует урок по
ellmer + shiny, кто его видел можете начинать просмотр этого видео сразу с 18 минуты.Тайм коды:
00:00 О чём это видео
00:46 Генерация API ключа
02:20 Введение в пакет ellmer
03:20 Создаём объект чата
06:44 Извлечение структурированных данных их текста с помощью LLM моделей
10:35 Классификация текста с помощью LLM моделей
13:53 Интеграция LLM моделей со сторонними API
18:33 Как интегрировать LLM модель в telegram бота
23:27 Как сохранять состояние чатов между разными сессиями бота
26:24 Как дообучить telegram бота своими данными
28:58 Заключение
Ссылки:
- Код продемонстрированный в видео
#видео_уроки_по_R
YouTube
Как встроить LLM модели (ChatGPT / Claude / Gemini) в Telegram-бота на языке R
В этом видео я покажу, как интегрировать LLM модели в Telegram-ботов, используя язык программирования R и пакеты telegram.bot и ellmer.
Мы пройдем весь путь от генерации API-ключа до создания продвинутого бота, который умеет:
● Извлекать структурированные…
Мы пройдем весь путь от генерации API-ключа до создания продвинутого бота, который умеет:
● Извлекать структурированные…
🔥23❤4👍1
Добавил главу про интеграцию LLM моделей в telegram ботов в учебник "Разработка Telegram ботов на языке R"
Содержание главы:
1. Как мы используем LLM в рабочих процессах
2. Генерация API ключа
3. Работа с LLM в R
3.1. Создание чата и отправка запроса
3.2. Извлечение структурированных данных из текста
3.3. Добавление в чат инструментов
4. Интеграция LLM модели в бот
4.1. Дообучение бота на своих данных
5. Заключение
Если вдруг кто впервые об этом учебнике слышит, то ниже его полное содержание:
1. Создаём бота и отправляем с его помощью сообщения в telegram
2. Добавляем боту поддержку команд и фильтры сообщений, класс Updater
3. Как добавить боту поддержку клавиатуры
4. Построение последовательного, логического диалога с ботом
5. Интегрируем в бота искусственный интеллект
6. Управление правами пользователей бота
7. Повышаем стабильность работы бота
8. Добавляем боту асинхронность
9. Упаковываем бота в Docker контейнер
10. Разворачиваем бота в облачных сервисах
Т.е. по этому учебнику вы с нуля научитесь писать telegram ботов любой сложности, и разворачивать их в некоторых облачных платформах или на своём сервере.
#учебники_по_R
Содержание главы:
1. Как мы используем LLM в рабочих процессах
2. Генерация API ключа
3. Работа с LLM в R
3.1. Создание чата и отправка запроса
3.2. Извлечение структурированных данных из текста
3.3. Добавление в чат инструментов
4. Интеграция LLM модели в бот
4.1. Дообучение бота на своих данных
5. Заключение
Если вдруг кто впервые об этом учебнике слышит, то ниже его полное содержание:
1. Создаём бота и отправляем с его помощью сообщения в telegram
2. Добавляем боту поддержку команд и фильтры сообщений, класс Updater
3. Как добавить боту поддержку клавиатуры
4. Построение последовательного, логического диалога с ботом
5. Интегрируем в бота искусственный интеллект
6. Управление правами пользователей бота
7. Повышаем стабильность работы бота
8. Добавляем боту асинхронность
9. Упаковываем бота в Docker контейнер
10. Разворачиваем бота в облачных сервисах
Т.е. по этому учебнику вы с нуля научитесь писать telegram ботов любой сложности, и разворачивать их в некоторых облачных платформах или на своём сервере.
#учебники_по_R
👍12❤🔥8🔥5❤3👏2
ellmer 0.2.0
3 предыдущие поста в канале так или иначе были связаны с пакетом
Breaking changes
● Изменения в преобразовании JSON → R
Теперь входы в
●
Функции типов (
●
Аргумент
Новые фичи
● Пакет теперь умеет в многопоточность и батчинг:
●
●
Эти функции пока экспериментальные — возможно, интерфейс будет дорабатываться.
Работа с файлами:
●
Работа с моделями:
Теперь можно получить список доступных моделей у разных провайдеров:
●
●
●
●
●
●
Возвращается data.frame с id и ценой за токены.
Генерация промптов:
●
●
Унифицированные параметры моделей:
●
Учёт стоимости:
●
Поддержка новых провайдеров:
Добавлены клиенты для:
● Hugging Face:
● Mistral:
● Portkey:
Переименования функций (с поддержкой старых имён):
●
●
●
Также обновлены дефолтные модели:
●
●
Фичи для разработчиков:
●
●
●
● Поддержка хуков
Работа с инструментами:
●
●
Новое в ContentToolResult:
● Можно возвращать прямо из
● Теперь есть extra, request, и error поля.
Мелкие улучшения и фиксы:
● Установлен кастомный User-Agent и увеличен timeout до 5 минут.
●
● Новые способы аутентификации в Gemini и Vertex через
●
Сам пока не обновлялся, только увидел новость о релизе.
#новости_и_релизы_по_R
3 предыдущие поста в канале так или иначе были связаны с пакетом
ellmer, и вот 17 мая на CRAN вышла его новая версия. Разбираю всё по порядку:Breaking changes
● Изменения в преобразовании JSON → R
Теперь входы в
tool() всегда автоматически преобразуются в стандартные структуры R (list, data.frame и т.д.). Если нужно сохранить оригинальные объекты, можно явно отключить это поведение с convert = FALSE.●
NULL → NAФункции типов (
type_boolean(), type_integer() и т.д.) теперь преобразуют NULL в NA, что делает работу с необязательными параметрами более предсказуемой.●
chat_ функции теперь без turnАргумент
turn удалён. Заменой служит Chat$set_turns(). Также Chat$tokens() переименован в Chat$get_tokens() и теперь возвращает корректно выровненные токены в виде data.frame.Новые фичи
● Пакет теперь умеет в многопоточность и батчинг:
●
batch_chat() и batch_chat_structured() — отправка батчей в OpenAI и Anthropic. Ответ может прийти в течение 24 часов, но стоит в 2 раза дешевле.●
parallel_chat() и parallel_chat_structured() — параллельные запросы, быстрее, но без экономии в цене.Эти функции пока экспериментальные — возможно, интерфейс будет дорабатываться.
Работа с файлами:
●
google_upload() — загрузка PDF, видео и других файлов для Gemini или Vertex AI.Работа с моделями:
Теперь можно получить список доступных моделей у разных провайдеров:
●
models_google_gemini()●
models_openai()●
models_anthropic()●
models_aws_bedrock()●
models_ollama()●
models_vllm()Возвращается data.frame с id и ценой за токены.
Генерация промптов:
●
interpolate() теперь векторизован: можно генерировать много промптов сразу.●
interpolate_package() — генерация из шаблонов внутри inst/prompts/.Унифицированные параметры моделей:
●
chat_anthropic(), chat_openai(), chat_gemini(), chat_azure() теперь принимают аргумент params, в который можно передать temperature, seed и пр. через params().Учёт стоимости:
●
Chat$get_cost(), tokens_usage(), и сам принт объекта Chat теперь показывают оценку стоимости (в токенах и долларах).Поддержка новых провайдеров:
Добавлены клиенты для:
● Hugging Face:
chat_huggingface()● Mistral:
chat_mistral()● Portkey:
chat_portkey() + models_portkey()Переименования функций (с поддержкой старых имён):
●
chat_azure() → chat_azure_openai()●
chat_bedrock() → chat_aws_bedrock()●
chat_gemini() → chat_google_gemini()Также обновлены дефолтные модели:
●
chat_anthropic() теперь использует Sonnet 3.7●
chat_openai() — GPT-4.1Фичи для разработчиков:
●
Chat$get_provider() — доступ к провайдеру.●
Chat$chat_async() и Chat$stream_async() поддерживают tool_mode = "sequential"/"concurrent" — влияет на последовательность вызова инструментов.●
Chat$stream() и stream_async() теперь могут стримить ContentToolRequest/Result.● Поддержка хуков
Chat$on_tool_request() и on_tool_result() — можно логировать или вмешиваться в обработку инструментов.Работа с инструментами:
●
tool() теперь поддерживает .annotations (через tool_annotations()), описывающие инструменты.●
tool_reject() — отказ от вызова инструмента с объяснением, почему.Новое в ContentToolResult:
● Можно возвращать прямо из
tool().● Теперь есть extra, request, и error поля.
Мелкие улучшения и фиксы:
● Установлен кастомный User-Agent и увеличен timeout до 5 минут.
●
chat_anthropic() теперь поддерживает content_image_url() и новый тип thinking.● Новые способы аутентификации в Gemini и Vertex через
GEMINI_API_KEY и Google ADC.●
chat_anthropic(max_tokens = ) теперь deprecated — используйте params =.Сам пока не обновлялся, только увидел новость о релизе.
#новости_и_релизы_по_R
👍7🔥5❤4
Анализ GitHub репозиториев с помощью AI
Попался на глаза ещё один интересный проект Хедли - GitAI. Это свежий инструмент в экосистеме R, предназначенный для извлечения знаний из Git-репозиториев с помощью больших языковых моделей (LLM).
GitAI — это R-пакет, который позволяет:
● Сканировать один или несколько Git-репозиториев (GitHub или GitLab).
● Извлекать содержимое определённых файлов, например, README.md.
● Обрабатывать это содержимое с помощью LLM, чтобы получить краткие описания или ответы на конкретные вопросы.
● Сохранять результаты в векторную базу данных для последующего семантического поиска или использования в Retrieval Augmented Generation (RAG) сценариях.
Пример использования
Вот пошаговый пример того, как использовать GitAI для анализа нескольких репозиториев:
Для работы кода необходимо указать через переменные среды API токены для работы с GitHub и Gemini (или другой LLM моделью).
Результат
Основные функции:
●
●
●
●
●
●
●
●
#заметки_по_R
Попался на глаза ещё один интересный проект Хедли - 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
🔥13👍1
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 лет.
В последнее время я стал писать здесь заметно реже — где-то пропала мотивация. Наверное, сказалось то, что уже около трёх лет канал практически не растёт, а в этом году число подписчиков даже немного уменьшилось.
Тем не менее я не собираюсь его бросать. Посты будут появляться, просто не так часто, как раньше. Возможно, появятся новые идеи, и получится вернуть регулярность и интерес к публикациям.
Спасибо всем, кто остаётся здесь всё это время. Есть несколько планов — как минимум хочу записать пару новых видео.
Остаёмся на связи.
В последнее время я стал писать здесь заметно реже — где-то пропала мотивация. Наверное, сказалось то, что уже около трёх лет канал практически не растёт, а в этом году число подписчиков даже немного уменьшилось.
Тем не менее я не собираюсь его бросать. Посты будут появляться, просто не так часто, как раньше. Возможно, появятся новые идеи, и получится вернуть регулярность и интерес к публикациям.
Спасибо всем, кто остаётся здесь всё это время. Есть несколько планов — как минимум хочу записать пару новых видео.
Остаёмся на связи.
❤75🎉34🔥20👍4🙏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🔥28❤7👍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 серв…
🔥22👍9❤2
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🔥7👍2