Очень интересную фишечку обнаружил в Google Таблицах, оказывается можно редактировать/анализировать таблицу общаясь в формате чатика с Gemini интегрированную прямо в редактор.
Но что-то не могу разобраться как это себе настроить, удалось ли кому попробовать эту штуку и если да, то что надо для этого сделать?
Но что-то не могу разобраться как это себе настроить, удалось ли кому попробовать эту штуку и если да, то что надо для этого сделать?
Google
Работа с Gemini в Google Таблицах (Workspace Labs) - Cправка - Редакторы Google Документов
С помощью Gemini в Google Таблицах вы можете: создавать таблицы; создавать формулы; анализировать данные и получать статистику; создавать диаграммы и графики; получать краткий пересказ сод
Посмотрел посты блогеров которые по инерции всё ещё следят за анонсами новых продуктов от OpenAI.
Вот краткий пересказ:
Новые революционные модели стали на сколько-то там процентов лучше предыдущих и по мнению экспертов ещёвкуснее умнее.
Они доступны только по API, так что вкусить их смогут только самые упрямые.
На всяких редитах основной вопрос это нейминг, релизить модель 4.1 после 4.5 идея странная.
Лично я надеялся на релиз опенсорс моделей, но видимо придется подождать ещё немного.
Вот краткий пересказ:
Новые революционные модели стали на сколько-то там процентов лучше предыдущих и по мнению экспертов ещё
Они доступны только по API, так что вкусить их смогут только самые упрямые.
На всяких редитах основной вопрос это нейминг, релизить модель 4.1 после 4.5 идея странная.
Лично я надеялся на релиз опенсорс моделей, но видимо придется подождать ещё немного.
21👍10❤3
Forwarded from Хабр / ML & AI
Помощник читателя: визуализируем сюжет
Пишем AI-помощника для анализа художественных произведений. С помощью языковой модели для анализа текста и небольшой обвязки для визуализации полученного структурированного ответа генерируем:
- граф связей между героями;
- хронологию событий;
- карту мест действия. Читать далее
#python #machine_learning #artificial_intelligence #natural_language_processing #литература | @habr_ai
Пишем AI-помощника для анализа художественных произведений. С помощью языковой модели для анализа текста и небольшой обвязки для визуализации полученного структурированного ответа генерируем:
- граф связей между героями;
- хронологию событий;
- карту мест действия. Читать далее
#python #machine_learning #artificial_intelligence #natural_language_processing #литература | @habr_ai
Хабр
Помощник читателя: визуализируем сюжет
В текущих кодогенеративных реалиях создать что-то новое с нуля до уровня худо-бедной демонстрации стало предательски просто. Только успевай доходчиво формулировать свои хотелки, да вовремя давать по...
👍12❤4
Fish Speech API
Представляю вашему вниманию кастомный OpenAI-подобный API-сервер для генерации голоса, основанный на fish-speech-1.5 от FishAudio.
Поддерживает как обычный text-to-speech (TTS), так и подмену голоса через референс-аудио.
Работает через REST, всё максимально похоже на формат OpenAI
✅ Что умеет:
- Генерация речи на базе модели
- Стилизация речи под голос из аудио
- Кастомные параметры:
- Работает в докере или вручную через Python 3.12
🛠 Быстрый старт:
Пример запроса:
🎧 Хотите "подменить" голос? Просто добавьте
🔗 Исходники тут: https://github.com/EvilFreelancer/docker-fish-speech-server
Если у вас возникнут вопросы или потребуется помощь, вы можете задать свой вопрос в чате канала Pavel Zloi.
Представляю вашему вниманию кастомный OpenAI-подобный API-сервер для генерации голоса, основанный на fish-speech-1.5 от FishAudio.
Поддерживает как обычный text-to-speech (TTS), так и подмену голоса через референс-аудио.
Работает через REST, всё максимально похоже на формат OpenAI
/v1/audio/speech, так что можно просто подменить endpoint и не менять клиент.✅ Что умеет:
- Генерация речи на базе модели
fish-speech-1.5- Стилизация речи под голос из аудио
- Кастомные параметры:
top_p, temperature, max_new_tokens и др.- Работает в докере или вручную через Python 3.12
Работает только на Nvidia.
🛠 Быстрый старт:
git clone https://github.com/EvilFreelancer/docker-fish-speech-server
cd fish-speech-api
cp docker-compose.dist.yml docker-compose.yml
docker compose up -d
Пример запроса:
curl http://localhost:8000/audio/speech \
-X POST \
-F model="fish-speech-1.5" \
-F input="Hello, this is a test of Fish Speech API" \
--output "speech.wav"
🎧 Хотите "подменить" голос? Просто добавьте
reference_audio.🔗 Исходники тут: https://github.com/EvilFreelancer/docker-fish-speech-server
Если у вас возникнут вопросы или потребуется помощь, вы можете задать свой вопрос в чате канала Pavel Zloi.
5❤9👍6
🚀 Обновление моего публичного API-сервера
Я перенёс своё решение с самописного OpenAI-совместимого API-сервера на прокси LiteLLM, что позволило значительно упростить поддержку и расширить функциональность.
Теперь мой API-сервер поддерживает не только распознавание речи (ASR), но и генерацию речи (TTS) и текстовое общение с большими языковыми моделями (LLM).
🌊 Модель для генерации речи из текста — fish-speech-1.5
Добавлена поддержка модели
Для тестирования этой возможности я подготовил скрипт на Python: openai-tts.py
А это пример cURL запроса:
💬 Думающая большая языковая модель — deepseek-r1:8b
Также теперь через API теперь можно общаться с thinking моделью
Скрипт-пример общения с моделью: openai-chat.py
А это пример cURL запроса:
Обе новые модели работают на одной RTX 4090.
🧠 Всё это благодаря LiteLLM работает в рамках OpenAI-совместимого API, и по-прежнему доступно по тожму же адресу и тому же токену, пока что бесплатно:
Документацию обновил и дополнил: https://api.rpa.icu/docs/
———
Раньше я думал, что давать доступ к моделям только через API — это удел ленивых инженеров. Но спецы из OpenAI намедни показали мне, что это на самом деле общепризнанная мировая практика, и теперь я, как и положено, действую по заветам лидеров рынка. 😎
#rpa
Я перенёс своё решение с самописного OpenAI-совместимого API-сервера на прокси LiteLLM, что позволило значительно упростить поддержку и расширить функциональность.
Теперь мой API-сервер поддерживает не только распознавание речи (ASR), но и генерацию речи (TTS) и текстовое общение с большими языковыми моделями (LLM).
🌊 Модель для генерации речи из текста — fish-speech-1.5
Добавлена поддержка модели
fish-speech-1.5, которая позволяет выполнять преобразование текста в речь используя формат OpenAI-совместимых клиентов.Для тестирования этой возможности я подготовил скрипт на Python: openai-tts.py
А это пример cURL запроса:
curl https://api.rpa.icu/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer https://news.1rj.ru/str/evilfreelancer" \
-d '{
"model": "fish-speech-1.5",
"input": "Hello, this is a test of Fish Speech API",
"voice": "english"
}' \
--output "speech.wav"
💬 Думающая большая языковая модель — deepseek-r1:8b
Также теперь через API теперь можно общаться с thinking моделью
deepseek-r1:8b, которая благодаря тому, что основана на LLaMA 3.1 8B, поддерживает function calling.Скрипт-пример общения с моделью: openai-chat.py
А это пример cURL запроса:
curl https://api.rpa.icu/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer https://news.1rj.ru/str/evilfreelancer" \
-d '{
"model": "deepseek-r1:8b",
"messages": [
{
"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."
}
]
}'
Обе новые модели работают на одной RTX 4090.
🧠 Всё это благодаря LiteLLM работает в рамках OpenAI-совместимого API, и по-прежнему доступно по тожму же адресу и тому же токену, пока что бесплатно:
OPENAI_BASE_URL=https://api.rpa.icu
OPENAI_API_KEY=https://news.1rj.ru/str/evilfreelancer
Документацию обновил и дополнил: https://api.rpa.icu/docs/
———
Раньше я думал, что давать доступ к моделям только через API — это удел ленивых инженеров. Но спецы из OpenAI намедни показали мне, что это на самом деле общепризнанная мировая практика, и теперь я, как и положено, действую по заветам лидеров рынка. 😎
#rpa
1🔥19
Добавил в апишку модель ReZero-v0.1:3b-250404, а если точнее то конвертированную в GGUF версию.
Модель поддерживает
Подробнее о модели ReZero можно почитать тут, а тут исходники.
Пример использования:
#rpa
Модель поддерживает
function calling и судя по описанию в карточке очень упрямая, она будет рефлексировать и вызывать тул до тех пор пока не получит необходимый ответ.Подробнее о модели ReZero можно почитать тут, а тут исходники.
Пример использования:
curl https://api.rpa.icu/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer https://news.1rj.ru/str/evilfreelancer" \
-d '{
"model": "ReZero-v0.1:3b-250404",
"messages": [
{"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."}
]
}'
#rpa
52❤7👍2🔥2
Pavel Zloi
Fish Speech API Представляю вашему вниманию кастомный OpenAI-подобный API-сервер для генерации голоса, основанный на fish-speech-1.5 от FishAudio. Поддерживает как обычный text-to-speech (TTS), так и подмену голоса через референс-аудио. Работает через REST…
Добавил в Fish Speech API поддержку голосов
Теперь при помощи параметра
Пример использования:
Помимо этого добавил в апишку возможность работать в режиме отправки JSON запросов:
И ещё одно очень важное наблюдение
Модель Fish Speech очень плохо делает короткие сообщения, если хотите получить приемлемое качество то стоит присылать ей сразу абзац текста целиком, и если она начинает повторяться то ещё и
Теперь при помощи параметра
voice вы можете выбрать голос из заранее подготовленных сэмплов, полный список в папке examples, а взял я их со спейса fishaudio/fish-speech-1 на HuggingFace.Пример использования:
curl http://localhost:8000/audio/speech \
-X POST \
-F model="fish-speech-1.5" \
-F voice="english-nice" \
-F input="Dr. Eleanor Whitaker, a quantum physicist from Edinburgh, surreptitiously analyzed the enigmatic hieroglyphs while humming Für Elise —her quizzical expression mirrored the cryptic symbols perplexing arrangement, yet she remained determined to decipher their archaic secrets." \
--output "speech.wav"
Помимо этого добавил в апишку возможность работать в режиме отправки JSON запросов:
curl http://localhost:8000/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "fish-speech-1.5",
"input": "Dr. Eleanor Whitaker, a quantum physicist from Edinburgh, surreptitiously analyzed the enigmatic hieroglyphs while humming Für Elise —her quizzical expression mirrored the cryptic symbols perplexing arrangement, yet she remained determined to decipher their archaic secrets.",
"reference_audio": "=base64..."
}' \
--output "speech.wav"
И ещё одно очень важное наблюдение
Модель Fish Speech очень плохо делает короткие сообщения, если хотите получить приемлемое качество то стоит присылать ей сразу абзац текста целиком, и если она начинает повторяться то ещё и
repetition_penalty побольше делать.🔥6❤2
Gist
LiteLLM usage (total, prompt, completion) promepteus exporter by user by llm model
LiteLLM usage (total, prompt, completion) promepteus exporter by user by llm model - Dockerfile
Провозился несколько часов c LiteLLM, моя цель была сделать Prometheus Exporter чтобы считать сколько тот или иной юзер израсходовал токенов у какой модели.
Однако, оказалось, что разработчики LiteLLM лукавят заверяя нас, что их детище это полностью OpenSource проект, тут как говорится есть нюанс, чтобы заработали такие штуки как Prometheus Exporter, SSO и прочие полезности надо занести им немного денег за лицензию.
В общем перебрав с десяток вариантов, начиная с логирования запросов в файл, заканчивая альтернативными прокси, плюнул на это дело и полез в базу данных смотреть, что там по факту логируется и как, оказалось есть несколько таблиц с красивыми реляциями, с которых можно очень удобно снимать данные. Ну а собрать их и упаковать в формат экспортера это уже дело техники.
В результате чего у меня получился вот такой скрипт сервера, пользуйтесь на здоровье.
Однако, оказалось, что разработчики LiteLLM лукавят заверяя нас, что их детище это полностью OpenSource проект, тут как говорится есть нюанс, чтобы заработали такие штуки как Prometheus Exporter, SSO и прочие полезности надо занести им немного денег за лицензию.
В общем перебрав с десяток вариантов, начиная с логирования запросов в файл, заканчивая альтернативными прокси, плюнул на это дело и полез в базу данных смотреть, что там по факту логируется и как, оказалось есть несколько таблиц с красивыми реляциями, с которых можно очень удобно снимать данные. Ну а собрать их и упаковать в формат экспортера это уже дело техники.
В результате чего у меня получился вот такой скрипт сервера, пользуйтесь на здоровье.
# HELP llm_tokens_by_user_total Total tokens used per user_email and model
# TYPE llm_tokens_by_user_total gauge
llm_tokens_by_user_total{model="deepseek-r1:8b",type="prompt",user_email="user@example.com"} 88.0
llm_tokens_by_user_total{model="deepseek-r1:8b",type="completion",user_email="user@example.com"} 3177.0
llm_tokens_by_user_total{model="deepseek-r1:8b",type="total",user_email="user@example.com"} 3265.0
👍9🔥1
Forwarded from Dealer.AI
This media is not supported in your browser
VIEW IN TELEGRAM
Дядя помнит, когда приму курил его дед. А теперь "раскуривать" новый распределённый аналог llama.cpp нам.
So, prima.cpp is a distributed implementation of llama.cpp that lets you run 70B-level LLMs on your everyday devices—💻 laptops, 🖥️ desktops, 📱 phones, and tablets.(с)
В пачке Примы:
- Heterogeneous, low-resource, cross-platform clusters (e.g., home devices connected by Wi-Fi);
- Quantization (Q4K and IQ1);
- Mixed CPU/GPU computing
Disk offloading;
- Piped-ring parallelism with prefetching;
- Automatic workload distribution.
Подробнее тут: https://huggingface.co/papers/2504.08791
So, prima.cpp is a distributed implementation of llama.cpp that lets you run 70B-level LLMs on your everyday devices—💻 laptops, 🖥️ desktops, 📱 phones, and tablets.(с)
В пачке Примы:
- Heterogeneous, low-resource, cross-platform clusters (e.g., home devices connected by Wi-Fi);
- Quantization (Q4K and IQ1);
- Mixed CPU/GPU computing
Disk offloading;
- Piped-ring parallelism with prefetching;
- Automatic workload distribution.
Подробнее тут: https://huggingface.co/papers/2504.08791
🔥13👍7❤3
Добавил в апишку несколько новых моделей
На этот раз все модели семейства GigaChat, использовать так:
Полный список всех новых моделей:
- GigaChat
- GigaChat-Max
- GigaChat-Plus
- GigaChat-Pro
- GigaChat-2
- GigaChat-2-Max
- GigaChat-2-Pro
И на десерт сберовский инстанс полноразмерной дипсик:
- Sber-DeepSeek-R1
#rpa
На этот раз все модели семейства GigaChat, использовать так:
curl https://api.rpa.icu/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer https://news.1rj.ru/str/evilfreelancer" \
-d '{
"model": "GigaChat-2-Pro",
"messages": [
{"role": "user",
"content": "Расскажи, снегурочка, где была?"}
]
}'
Полный список всех новых моделей:
- GigaChat
- GigaChat-Max
- GigaChat-Plus
- GigaChat-Pro
- GigaChat-2
- GigaChat-2-Max
- GigaChat-2-Pro
И на десерт сберовский инстанс полноразмерной дипсик:
- Sber-DeepSeek-R1
#rpa
1🔥14👍5
Canary-Serve
Представляю вашему вниманию проект EvilFreelancer/docker-canary-serve - это небольшой FastAPI-сервер позволяющий работать с моделями NVIDIA Canary, выполняет быстрое многоязычное распознавание речи и умеет генерировать субтитры.
Поддерживает все основные модели семейства Canary:
- nvidia/canary-1b
- nvidia/canary-1b-flash
- nvidia/canary-180m-flash
Запустить так:
Юзать так:
Ограничения:
- Работает только на видеокартах Nvidia
- Базовые модели поддерживают только несколько языков:
- Для работы 180m модели нужно 2.5Гб VRAM, для работы 1B модели нужно 14Гб VRAM
Представляю вашему вниманию проект EvilFreelancer/docker-canary-serve - это небольшой FastAPI-сервер позволяющий работать с моделями NVIDIA Canary, выполняет быстрое многоязычное распознавание речи и умеет генерировать субтитры.
Поддерживает все основные модели семейства Canary:
- nvidia/canary-1b
- nvidia/canary-1b-flash
- nvidia/canary-180m-flash
Запустить так:
git clone https://github.com/EvilFreelancer/docker-canary-serve.git
cd docker-canary-serve
cp docker-compose.dist.yml docker-compose.yml
docker-compose up -d
Юзать так:
curl http://localhost:9000/inference \
-F file=@sample.wav \
-F language=en \
-F response_format=srt
Ограничения:
- Работает только на видеокартах Nvidia
- Базовые модели поддерживают только несколько языков:
en, de, fr, es- Для работы 180m модели нужно 2.5Гб VRAM, для работы 1B модели нужно 14Гб VRAM
👍10🔥3
Пару слов про аспектно-ориентированное программирование
По одному проекту пишу компактный индексатор документов в ManticoreSearch, ну и в общем потребовалось мне добавить в него профилировщик простой, чтобы можно было отследить сколько времени было затрачено на полную индексацию и в логах показать.
В этом индесаторе несколько разных режимов предусмотрено и изначальный план был вызывать метод логирования времени как-то из каждой функции.
Как не пытался сделать, всё фигня получалась, потом вспомнил, что я в одном проекте на PHP (который некоторыми недальновидными компаниями не считается за опыт) нечто подобное делал при помощи декораторов.
Попробовал на питоне, сработало идеально.
Надеюсь этот простой метод профилирования через дектораторы пригодится и вам.
По одному проекту пишу компактный индексатор документов в ManticoreSearch, ну и в общем потребовалось мне добавить в него профилировщик простой, чтобы можно было отследить сколько времени было затрачено на полную индексацию и в логах показать.
В этом индесаторе несколько разных режимов предусмотрено и изначальный план был вызывать метод логирования времени как-то из каждой функции.
Как не пытался сделать, всё фигня получалась, потом вспомнил, что я в одном проекте на PHP (который некоторыми недальновидными компаниями не считается за опыт) нечто подобное делал при помощи декораторов.
Попробовал на питоне, сработало идеально.
Надеюсь этот простой метод профилирования через дектораторы пригодится и вам.
🔥7👍3
Кейс про сборку приватного LLM-чата
Намедни завершил один любопытный проект — приватный чат с ИИ на базе Open WebUI с возможностью работы с моделями провайдеров OpenAI и Google Gemini, с централизованным управлением и мониторингом.
Проект решил построить на нескольких ключевых компонентах:
– Traefik в режиме reverse proxy для маршрутизации и автоматического получения сертификтов Let's Encrypt
– LiteLLM в режиме прокси с OpenAI-совместимым API, позволяющий подключать разные LLM-провайдеры через единую точку входа
– Open WebUI интерфейс для чата, настроенный на работу через LiteLLM, с управлением доступом пользователей
– Связка Prometheus и Grafana для сбора и визуализации метрик (количество созданных чатов, активности пользователей и частоту использования моделей)
Всё поднял через Docker Compose, при этом конфигами и ключами управление происходит через .env файл.
Мониторинг — это была отдельная головная боль, изначально планировал использовать LiteLLM в режиме exporter, но оказывается в OpenSource проекте это удовольствие стоит денег, пробовал поднять альтернативный exporter-litellm, но он к сожалению не давал детализации по конкретным пользователям и моделям, пошёл по другому пути, через экспортер Open WebUI, нашёл подходящий проект exporter-openwebui, вот он уже выдал почти все нужные данные, кроме количества токенов, но заказчика это устроило.
В общем такая вот простая и красивая система получилась, ничего лишнего, работает отлично. Пишите если интересно собрать что-то подобное — архитектура достаточно универсальна, можно адаптировать под свои задачи.
Намедни завершил один любопытный проект — приватный чат с ИИ на базе Open WebUI с возможностью работы с моделями провайдеров OpenAI и Google Gemini, с централизованным управлением и мониторингом.
Проект решил построить на нескольких ключевых компонентах:
– Traefik в режиме reverse proxy для маршрутизации и автоматического получения сертификтов Let's Encrypt
– LiteLLM в режиме прокси с OpenAI-совместимым API, позволяющий подключать разные LLM-провайдеры через единую точку входа
– Open WebUI интерфейс для чата, настроенный на работу через LiteLLM, с управлением доступом пользователей
– Связка Prometheus и Grafana для сбора и визуализации метрик (количество созданных чатов, активности пользователей и частоту использования моделей)
Всё поднял через Docker Compose, при этом конфигами и ключами управление происходит через .env файл.
Мониторинг — это была отдельная головная боль, изначально планировал использовать LiteLLM в режиме exporter, но оказывается в OpenSource проекте это удовольствие стоит денег, пробовал поднять альтернативный exporter-litellm, но он к сожалению не давал детализации по конкретным пользователям и моделям, пошёл по другому пути, через экспортер Open WebUI, нашёл подходящий проект exporter-openwebui, вот он уже выдал почти все нужные данные, кроме количества токенов, но заказчика это устроило.
В общем такая вот простая и красивая система получилась, ничего лишнего, работает отлично. Пишите если интересно собрать что-то подобное — архитектура достаточно универсальна, можно адаптировать под свои задачи.
🔥15👍7❤2❤🔥1🫡1🆒1
После нескольких дней размышлений о компактности и эффективности охлаждения, принял решение заменить кулеры Снеговик M-T4 на систему жидкостного охлаждения
Выбор пал на односекционную СЖО BlackWater-120, которая, по заявлениям производителя, способна справляться с процессорами до 150 ватт TDP, чего для моих трудяг, паре
Ну и как не сложно догадаться, освободившееся пространство позволит поселить в сервер новых видеожильцов, но об этом в другой раз расскажу, а пока что полез на антресоль, снимать сервер чтобы поставить новый охлад, фоточки пришлю позже.
#server
ExeGate BlackWater-120. Причина? Высота радиаторов из комплекта Снеговика, несмотря на их достойные характеристики, они стали проблемой для установки дополнительных видеокарт в сервер gpu01.Выбор пал на односекционную СЖО BlackWater-120, которая, по заявлениям производителя, способна справляться с процессорами до 150 ватт TDP, чего для моих трудяг, паре
Intel Xeon E5-2690 v2 с TDP в 130 ватт - как-раз должно быть впору.Ну и как не сложно догадаться, освободившееся пространство позволит поселить в сервер новых видеожильцов, но об этом в другой раз расскажу, а пока что полез на антресоль, снимать сервер чтобы поставить новый охлад, фоточки пришлю позже.
#server
❤6👍4🔥3
Несколько дней раздумываю над проектом тестирования LLM на русском языке в режиме маршрутизатора.
Мне прежде всего интересно установить как модели справляются с:
1) вопросами и маршрутами описанными на русском языке
2) минималистичным structured output который позволил был выполнить интеграцию модели в уже работающие системы
3) сколько роутов модели могут вытянуть максимально
И бонусный вопрос
4) зависимость точности от размера контекста
Пока что набросал небольшой скрипт, в котором используются датасеты полученные в процессе работы над некоторыми моими заказами.
На скриншоте результат теста нескольких квантованных моделей, каждая определяет маршрут без учёта контекста диалога (по последнему вопросу) и на 4-8 маршрутах (в среднем 5).
В планах написать генератор синтетических вопросов и роутов, чтобы можно было выполнять оценку по разным метрикам.
Мне прежде всего интересно установить как модели справляются с:
1) вопросами и маршрутами описанными на русском языке
2) минималистичным structured output который позволил был выполнить интеграцию модели в уже работающие системы
3) сколько роутов модели могут вытянуть максимально
И бонусный вопрос
4) зависимость точности от размера контекста
Пока что набросал небольшой скрипт, в котором используются датасеты полученные в процессе работы над некоторыми моими заказами.
На скриншоте результат теста нескольких квантованных моделей, каждая определяет маршрут без учёта контекста диалога (по последнему вопросу) и на 4-8 маршрутах (в среднем 5).
В планах написать генератор синтетических вопросов и роутов, чтобы можно было выполнять оценку по разным метрикам.
🔥6
Почему я считаю, что RAG это call?
Пару часов назад Александр на своем канале Dealer AI снова обратил внимание на RAG-системы с точки зрения важности тестирования и оценки метрик до внедрения указанных систем в продакшен.
Я полностью разделяю эту точку зрения и всегда прошу заказчиков, по возможности, предоставлять хотя бы общий тестовый датасет, на базе которого можно будет выполнить предварительную оценку точности работы проекта и произвести его тонкую настройку до публичного релиза.
Как-то раз общался с заказчиком по одному проекту и пытался объяснить ему важность предварительного сбора бенчмарков для оценки качества системы. Логика у меня была простая: если предположим, некая RAG-система состоит из трёх последовательных звеньев (эмбеддер, ретривер, LLM), каждое из которых имеет точность, скажем, 90%, то интуитивно кажется, что и общая точность будет примерно на том же уровне. Однако на самом деле всё сложнее.
Согласно теории надёжности, в последовательных системах ошибки наследуются, и итоговая точность определяется перемножением точностей всех звеньев. Если каждый из трёх модулей даёт точность 90% (0.9), то реальная точность системы будет равна:
Это значит, что при последовательном соединении звеньев системы и с увеличением их количества вероятность ошибки увеличивается.
Подробнее о наследовании ошибок можно почитать в публикации про закон Люссера.
С другой стороны, интуитивно (без учёта наследования ошибок) может показаться, что точность системы определяется её самым слабым компонентом, в нашем примере — 90%, и, как следствие, заказчик принимает решение пренебречь предрелизным тестированием, так как верит в надёжность RAG-системы, полагаясь на интуицию.
Подобное заблуждение, как мне кажется, связано с психологическими особенностями человеческого мышления, описанными Даниэлом Канеманом в его книге "Думай медленно... решай быстро". Канеман подчёркивает, что решения, принимаемые на основе интуиции, часто приводят к систематическим ошибкам, поскольку наш мозг упрощает сложные задачи или подменяет их более простыми, игнорируя важные факторы, такие как накопление ошибок в последовательных звеньях.
Приведу ещё один пример. Если мы используем сверхточный эмбеддер (99%), средний по качеству ретривер (90%) и относительно слабую языковую модель (70%), общая точность станет:
Иными словами, замена одного компонента на более точный не всегда существенно повышает общую точность, если остальные компоненты остаются слабыми.
Понимание того, какой компонент является критически важным в нашей RAG-системе, а какой даёт слишком большую ошибку, и есть причина, по которой необходимо иметь бенчмарки ещё в процессе разработки.
Пару часов назад Александр на своем канале Dealer AI снова обратил внимание на RAG-системы с точки зрения важности тестирования и оценки метрик до внедрения указанных систем в продакшен.
Я полностью разделяю эту точку зрения и всегда прошу заказчиков, по возможности, предоставлять хотя бы общий тестовый датасет, на базе которого можно будет выполнить предварительную оценку точности работы проекта и произвести его тонкую настройку до публичного релиза.
Как-то раз общался с заказчиком по одному проекту и пытался объяснить ему важность предварительного сбора бенчмарков для оценки качества системы. Логика у меня была простая: если предположим, некая RAG-система состоит из трёх последовательных звеньев (эмбеддер, ретривер, LLM), каждое из которых имеет точность, скажем, 90%, то интуитивно кажется, что и общая точность будет примерно на том же уровне. Однако на самом деле всё сложнее.
Согласно теории надёжности, в последовательных системах ошибки наследуются, и итоговая точность определяется перемножением точностей всех звеньев. Если каждый из трёх модулей даёт точность 90% (0.9), то реальная точность системы будет равна:
0.9 = 0.9
0.9 * 0.9 ≈ 0.81 (81%)
0.9 * 0.9 * 0.9 ≈ 0.729 (72.9%)
0.9 * 0.9 * 0.9 * 0.9 ≈ 0.656 (65.6%)
Это значит, что при последовательном соединении звеньев системы и с увеличением их количества вероятность ошибки увеличивается.
Подробнее о наследовании ошибок можно почитать в публикации про закон Люссера.
С другой стороны, интуитивно (без учёта наследования ошибок) может показаться, что точность системы определяется её самым слабым компонентом, в нашем примере — 90%, и, как следствие, заказчик принимает решение пренебречь предрелизным тестированием, так как верит в надёжность RAG-системы, полагаясь на интуицию.
Подобное заблуждение, как мне кажется, связано с психологическими особенностями человеческого мышления, описанными Даниэлом Канеманом в его книге "Думай медленно... решай быстро". Канеман подчёркивает, что решения, принимаемые на основе интуиции, часто приводят к систематическим ошибкам, поскольку наш мозг упрощает сложные задачи или подменяет их более простыми, игнорируя важные факторы, такие как накопление ошибок в последовательных звеньях.
Приведу ещё один пример. Если мы используем сверхточный эмбеддер (99%), средний по качеству ретривер (90%) и относительно слабую языковую модель (70%), общая точность станет:
0.99 * 0.9 * 0.7 ≈ 0.623 (62.3%)
Иными словами, замена одного компонента на более точный не всегда существенно повышает общую точность, если остальные компоненты остаются слабыми.
Понимание того, какой компонент является критически важным в нашей RAG-системе, а какой даёт слишком большую ошибку, и есть причина, по которой необходимо иметь бенчмарки ещё в процессе разработки.
Telegram
Dealer.AI
Жоский ИИ Дядя
Твой личный поставщик AI 🦾🤖
Канал о мире интересного AI: GenAI, RecSys, поиск, classic ML, бизнес приклад и ai-meme👾
Для связи @dealer_ai
(реклама и консультации)
Head of ML, AI.
Kaggle: https://www.kaggle.com/andrilko
РКН: 6348592885
Твой личный поставщик AI 🦾🤖
Канал о мире интересного AI: GenAI, RecSys, поиск, classic ML, бизнес приклад и ai-meme👾
Для связи @dealer_ai
(реклама и консультации)
Head of ML, AI.
Kaggle: https://www.kaggle.com/andrilko
РКН: 6348592885
👍21🔥8❤2
Telegram
Хабр / ML & AI
Меня заставили повайбкодить
Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие…
Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие…
Прочел отличную публикацию на Хабр про вайбкодинг с точки зрения сеньора программиста.
Очень понравились аналогии приведенные автором и то как подробно он описал свое первое знакомство с данным паттерном и как потом постигал дзен итеративной разработки.
Расскажу как я вайбкожу.
Если надо быстренько сваять простенький прототип, то я обычно заранее продумываю требования к проекту на абзац или больше текста, либо перефразирую описание из тикета, затем ищу примеры похожих реализаций и ссылки.
Далее прошу модель проанализировать полученную информацию и составить шаблон классов с заглушками функций и структуру проекта. Классы прошу делать с учетом паттернов solid, dry, kiss и прочие.
На следующем шаге предоставляю модели класс и привожу чуть более детальные требования которые от класса хочу получить, потом следующий класс и так далее.
На этом этапе важно выстроить процесс генерации таким образом, чтобы первыми модель сгенерировала классы без зависимостей от других классов, потом те которые зависят от первых и так далее. Чтобы в проекте не было ссылок на кирпичики которых ещё нет и как следствие которые нельзя протестировать.
Далее каждый класс прошу протестировать отдельно, минимальный тест это просто инициализация с параметрами и вызов главных функци, если это проходит без ошибок то можно генерировать юнит тесты и встраивать их в пайплайн тестирования.
Подобный подход называют итеративным вайбкодингом, а llm в этой схеме выступает в роли продвинутого Т9 забирающая на себя рутину.
Среди нескольких подходов которые я попробовал, и столкнулся с проблемами изложенными в статье, описанный выше оказался единственным при котором я не теряю контроль, получаю адекватный продукт соотвествующий требованиям и при этом имею полное понимаете кодовой базы.
Очень понравились аналогии приведенные автором и то как подробно он описал свое первое знакомство с данным паттерном и как потом постигал дзен итеративной разработки.
Расскажу как я вайбкожу.
Если надо быстренько сваять простенький прототип, то я обычно заранее продумываю требования к проекту на абзац или больше текста, либо перефразирую описание из тикета, затем ищу примеры похожих реализаций и ссылки.
Далее прошу модель проанализировать полученную информацию и составить шаблон классов с заглушками функций и структуру проекта. Классы прошу делать с учетом паттернов solid, dry, kiss и прочие.
На следующем шаге предоставляю модели класс и привожу чуть более детальные требования которые от класса хочу получить, потом следующий класс и так далее.
На этом этапе важно выстроить процесс генерации таким образом, чтобы первыми модель сгенерировала классы без зависимостей от других классов, потом те которые зависят от первых и так далее. Чтобы в проекте не было ссылок на кирпичики которых ещё нет и как следствие которые нельзя протестировать.
Далее каждый класс прошу протестировать отдельно, минимальный тест это просто инициализация с параметрами и вызов главных функци, если это проходит без ошибок то можно генерировать юнит тесты и встраивать их в пайплайн тестирования.
Подобный подход называют итеративным вайбкодингом, а llm в этой схеме выступает в роли продвинутого Т9 забирающая на себя рутину.
Среди нескольких подходов которые я попробовал, и столкнулся с проблемами изложенными в статье, описанный выше оказался единственным при котором я не теряю контроль, получаю адекватный продукт соотвествующий требованиям и при этом имею полное понимаете кодовой базы.
👍23❤5🔥3👏1😱1
Forwarded from Старший Авгур
Открытая версия Suno (генератора музыки и песен): https://ace-step.github.io/
Модель: https://huggingface.co/ACE-Step/ACE-Step-v1-3.5B
Код: https://github.com/ace-step/ACE-Step
Поддерживает русский до какой-то степени, на сайте есть пример на нём. По качеству как ранние версии Suno, в принципе довольно хорошо, но косяки всё равно слышны, особенно в вокале.
Модель: https://huggingface.co/ACE-Step/ACE-Step-v1-3.5B
Код: https://github.com/ace-step/ACE-Step
Поддерживает русский до какой-то степени, на сайте есть пример на нём. По качеству как ранние версии Suno, в принципе довольно хорошо, но косяки всё равно слышны, особенно в вокале.
👍7❤1
Telegram
Хабр / ML & AI
Как превратить ChatGPT в кофаундера: личный опыт и практические приёмы
Я «нанял» ChatGPT в кофаундеры — делюсь результатами, промптом, пятью масками и чек‑листом рисков, которые внедряются за вечер Читать далее
#openai #chatgpt #prompt #prompt_engineering…
Я «нанял» ChatGPT в кофаундеры — делюсь результатами, промптом, пятью масками и чек‑листом рисков, которые внедряются за вечер Читать далее
#openai #chatgpt #prompt #prompt_engineering…
Прочёл публикацию "Как превратить ChatGPT в кофаундера: личный опыт и практические приёмы", очень неплохо придумал автор, я как-то даже не задумывался над тем чтобы превратить модельку в советчика по бизнес-вопросам.
Надо будет забавы ради создать что-то типа чат-бота или композиции из агентов которые бы нечто подобное делали, но конечно чуть расширив, добавив разные режимы работы типа спринта или оценки или планирования тасков в джире с учётом юзер кейсов, сторипоинтов и так далее.
Надо будет забавы ради создать что-то типа чат-бота или композиции из агентов которые бы нечто подобное делали, но конечно чуть расширив, добавив разные режимы работы типа спринта или оценки или планирования тасков в джире с учётом юзер кейсов, сторипоинтов и так далее.
1🔥8