Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Искусственный интеллект на Ruby - RubyLLM: Искусство общения с AI (artificial intelligence) на языке Ruby

В мире, где нейросети стремительно завоевывают всё больше областей нашей жизни, разработчики всё чаще ищут простые и удобные способы интеграции искусственного интеллекта (ИИ) в свои приложения. Проблема в том, что каждый ИИ-провайдер имеет свою специфику, свои библиотеки и форматы общения, и разработчикам приходится буквально жонглировать сложными зависимостями и громоздким кодом.

Недавно на просторах GitHub появился проект, который способен существенно облегчить жизнь Ruby-разработчикам: RubyLLM. Автором библиотеки выступает разработчик crmne, и уже на старте RubyLLM демонстрирует всё то, за что Ruby так любят миллионы программистов — лаконичность, ясность и выразительность.

Чем привлекает RubyLLM?

Проект позиционирует себя как элегантное решение для работы с различными ИИ-сервисами, такими как OpenAI, Anthropic, Google Gemini и DeepSeek. Основная идея заключается в едином API для общения с разными нейросетевыми моделями, без необходимости написания бесконечных обработчиков и путаницы с форматами данных.

Вместо многочасовых мучений с конфигурацией вам понадобится буквально пара строк, и вот вы уже задаёте вопросы нейросети, генерируете изображения или анализируете документы.

Например, простой запрос выглядит так:

chat = RubyLLM.chat
chat.ask "Как лучше всего изучать Ruby?"

Особенности, которые выделяют RubyLLM на фоне конкурентов:

  • Чаты и диалоги: Поддержка многоходовых разговоров и стриминга ответов в реальном времени.
  • Работа с мультимедиа: Анализ изображений и аудио.
  • Обработка PDF: Анализ и суммаризация документов.
  • Генерация изображений: DALL-E и аналогичные сервисы.
  • Создание эмбеддингов: Поддержка векторного поиска и семантического анализа.
  • Интеграция с пользовательским Ruby-кодом: AI может выполнять пользовательские функции прямо в вашем приложении.

Почему это важно и перспективно?

RubyLLM не просто библиотека, это фактически мост между миром классического Ruby-программирования и современной ИИ-экосистемой. Особенно радует возможность глубокого взаимодействия ИИ с собственным Ruby-кодом — можно создать свой инструмент, который будет доступен для решения конкретных задач.

Например, вот так нейросеть может использовать калькулятор, написанный прямо в вашем приложении:


class Calculator < RubyLLM::Tool
  description "Выполняет математические расчёты"
  param :expression, type: :string, desc: "Математическое выражение для вычисления"

  def execute(expression:)
    eval(expression).to_s
  end

end

chat.with_tool(Calculator).ask "Сколько будет 123 * 456?"

Rails-интеграция и удобное хранение данных

Особо интересен подход к интеграции с Rails-приложениями, где чаты и сообщения сохраняются в базе данных через ActiveRecord. Это удобно для веб-приложений, которые ведут долгие беседы с пользователями и хотят иметь под рукой всю историю общения.

Более того, RubyLLM уже поддерживает технологии вроде Turbo Streams от Basecamp, благодаря чему разработка интерактивных приложений становится ещё проще.

Личное мнение и будущее проекта

RubyLLM, по моему мнению, не просто библиотека, а шаг вперёд к тому, чтобы Ruby вновь занял заслуженное место среди наиболее удобных инструментов для ИИ-разработки. Это ещё одна демонстрация, насколько красивым и выразительным может быть код на Ruby, и как элегантно он может упрощать сложные задачи.

Главная задача авторов теперь — сохранить минимализм и простоту по мере роста библиотеки. Если это удастся, RubyLLM может стать незаменимым инструментом в арсенале любого Ruby-разработчика, который активно использует ИИ в своих продуктах.

Интересные факты и детали реализации

  • Библиотека опирается всего на две базовые зависимости: Faraday и Zeitwerk — ничего лишнего.
  • RubyLLM тщательно придерживается Ruby Style Guide и проверяется с помощью RuboCop для поддержания кода в идеальном состоянии.
  • Поддержка потокового ответа реализована в виде классических Ruby-блоков, что делает API максимально естественным и нативным для Ruby-разработчиков.
  • Проект уже насчитывает 435 звёзд на GitHub и активно развивается сообществом.

Первые шаги с RubyLLM

Чтобы установить RubyLLM, достаточно добавить строчку в Gemfile вашего проекта:

gem 'ruby_llm'

И выполнить команду:

bundle install

Затем просто настроить API-ключи нужных вам сервисов и наслаждаться общением с нейросетями:

RubyLLM.configure do | config |
  config.openai_api_key = ENV['OPENAI_API_KEY']
  config.gemini_api_key = ENV['GEMINI_API_KEY']
end

Вывод и взгляд в будущее

Проект RubyLLM — яркий пример того, как нужно создавать библиотеки для разработчиков: просто, элегантно и без лишнего шума. Уже сейчас, несмотря на свою молодость, RubyLLM уверенно набирает популярность (435 звёзд на GitHub всего за месяц).

Если вы любите Ruby и хотите работать с нейросетями красиво и удобно, RubyLLM — это именно то, что стоит попробовать уже сегодня.

Документация и примеры на rubyllm.com