Исаев Василий - заметки про it, python и ai


Channel's geo and language: not specified, not specified
Category: not specified



Channel's geo and language
not specified, not specified
Category
not specified
Statistics
Posts filter


Сегодня в 19-00 проведу воркшоп для ВШМ где читаю курс по агентам
поразгоняем про типичные проблемы доведения агентов до прода


Тут неожиданно приехала пачка любопытных новостей
Исследователь Jacob Coxon ушёл из Anthropic, заявив, что компания и OpenAI слишком быстро движутся к самоулучшающемуся ИИ и рискуют безопасностью человечества - выглядит немного странно - немного отдаёт PR-ходом.
Дарио Амодеи призвал замедлить развитие передовых моделей. Предлагает независимых проверяющих внутри лабораторий и согласованные ограничения для крупных ИИ-игроков, чтобы безопасность успевала за возможностями ИИ - в свете последних успехов OpenAI тоже есть сомнения в искренности.
Сэм Альтман исключил IPO OpenAI в 2026 году, сославшись на вопросы безопасности ИИ - по интернету уже гуляет гипотеза, что IPO = раскрытие финансов, с которыми у OpenAI может быть не всё так гладко (моя статья частично про это).
Трамп выступил против замедления: США должны сохранить преимущество перед Китаем, потому что «кто победит в ИИ, тот победит во всём остальном» - как ни странно - кажется самым «искренним», если можно так сказать - типа «не знаю чё там у вас за дела - ничего тормозить не будем, боремся за господство с Китаем» - вполне в его духе.
Я активно работаю с Astra и какого-то AGI на практике пока не вижу от слова совсем - галлюцинации/600 тестов проходят, но не ловят баги/удаление/затирание error-логов при запросе фиксить ошибки - всё на месте. Бенчи Astra, где они всех на голову выше, - на практике пока не особо чувствуются, а учитывая недавний хайп с тем, что Fable отменили из-за угроз человечеству, - а на практике опять же никакого вау-эффекта в комьюнити не обнаружилось, а также «голливудская» история про рой агентов, взломавший что-то там, и алармизм в отношении «роя» агентов (интересно, во сколько встанет этот рой с текущими ценами по API на те же Fable) - учитывая сокращающееся отставание открытых моделей, звучащие очень странно, - короче, похоже это всё на какой-то набор маркетинговых и финансовых трюков, чем на AGI.


I am going to sleep. You have 8 hours to code and launch a profitable B2B AI SaaS app that will earn me millions of dollars. Make no mistake. Take your time. Don’t ask anything - just do it.


Открыл для себя написание статей через надиктовывание в чатгпт - почитал бенчи/подписки и собрал все вместе в новой статье на хабре - го читать!

https://habr.com/ru/articles/1081060/


pydantic выпустил свой фреймворк для агентов - обещан рилтайм, ембеддинги, все типизированное(а не как в langchain) и ваще легко просто молодежно
постараюсь сделать обзорчик в ближайшее время - по quickstart пока нравится

https://pydantic.dev/docs/ai/overview/




openai дропнули астру https://openai.com/index/gpt-6-astra/

p.s. вчера ночью/вечером погонял на каких то сложных проектах с кодом - пока разницу не увидел с sol от слова совсем, будем посмотреть


Описал интересный кейс с работы - когда разработка пошла как будто с конца в начало - все началось не с требований а с навайбкоженного сервиса который потом пришлось приводить в порядок

https://habr.com/ru/articles/1076140/

p.s. моя первая статья на хабре - поддержите up-ами 🙈


Перед началом эксперимента мне казалось, что результат будет примерно одинаковым или чуть лучше у маленьких моделей с высоким уровнем рассуждений, но на моих задачах получилось довольно неожиданно.

Кейс 1: внести небольшие правки в код. Качество одинаковое, но Terra закончила задачу за 54 секунды, а Luna за 134 секунды. Terra использовала 111k токенов, а Luna 211k.

Кейс 2: большая задача по изменению бизнес-логики в среднем сервисе. Terra High 6,83/10, Sol Low 9,50/10. Sol Low оказался качественнее, быстрее и потратил в 2,5 раза меньше токенов.

Кейс 3: большая задача. Написать большой сервис, включая Bluetooth-логику и математику. По качеству результаты оказались довольно близкими, но Luna даже не стала запускать рантайм. Luna High 5,70/10, Sol Medium 6,63/10.

Какой тут можно сделать вывод?
Похоже, что небольшие модели имеют смысл только с low/medium уровнем рассуждений. Всё-таки лучше взять модель побольше, но с меньшим уровнем рассуждений. Она работает быстрее и дешевле.

Также есть вопросы к передовым моделям, например, к Soul 5.6 Ultra. Возникает ощущение, что они чуть лучше показывают себя на бенчмарках, а в реальных задачах не дают настолько большого прироста пользы. Но это уже тема отдельного поста.






Кто сильнее на реальных задачах?
Poll
  •   🧠 Маленькая моделька с большим ризонингом
  •   💪 Большая моделька с минимальным ризонингом
  •   Зависит от задачи
9 votes


Три недели как тыкаю max-подписку chatgpt - начинал с sol с high/ultra ризонинга, теперь добрался до Terra и даже до Luna - и для большинства задачи вполне хватает их с средним ризонингом

дальше пошел смотреть бенчи/цены/траты по токенам - и ничего особо мне это не дало, какую модельку то выбрать для маленького бага? а для сложного маленького бага? а для простого бага но в котором нужно проследить очень длинный трейс?

по этому решил забилить свой небольшой бенч - дать реальные задачи разным моделям с разным ризонингом и сравнить - качество и цену


За последние пол года активно работал с голосовыми агентами и открыл для себя pipecat
что то очень похожее на fastapi для api - очень удобный оркестратор для voice-pipelin-а
плюсом куча коннекторов и возможность кастомно докидывать любые из кубиков


общий пайплайн для voice-ассистентов обычно выглядит так:

микрофон → STT → LLM → TTS → динамик


в pipecat для этого есть удобные абстракции:

Frame - пакет данных: контент или event
FrameProcessor - блок работы с Frame
Pipeline - последовательность FrameProcessor
Transport - связь агента с браузером, мобильным клиентом/keycloak/внешними коннекторами
PipelineTask - life-cicle пайплайна
PipelineRunner - сам запуск


по коду в итоге все очень легко:

завели pipeline - основная сущность, в нем все степы:
pipeline = Pipeline(
[
transport.input(),
stt_service,
user_aggregator,
llm_service,
tts_service,
transport.output(),
assistant_aggregator,
]
)

создали из него task:

task = PipelineTask(
pipeline,
params=PipelineParams(
enable_metrics=True,
enable_usage_metrics=True,
),
)

в таск накидываем event-handlerov - on_start/on_join/on_error и тп:

@task.event_handler("on_pipeline_started")
async def on_pipeline_started(task, frame):
...


и просто запускаем все вместе:
runner = PipelineRunner(handle_sigint=handle_sigint)
await runner.run(task)


по сути главное - выбрать и реализовать(а чаще - просто подключить) step-ы Pipeline-а, продумать логику on_event и по сути все!
и это только базовое использование sdk - pipecat еще умеет в cloud, у него есть свой VAD и еще много чего




#нейрохрючево
системник

### No hasattr()
# ❌
if hasattr(obj, "model"):
model = obj.model


КОДИК:
def from_litellm(cls, response: Union[ModelResponse, ResponsesAPIResponse]) -> 'LLMResponse':
if isinstance(response, ResponsesAPIResponse):
model = response.model
content = ""
structured_data = None

# Extract content from output
if response.output:
for item in response.output:
if hasattr(item, 'type') and item.type == 'message':
# item is usually a ChatCompletionAssistantMessageParam-like object
# or a dict if it was dumped.
if hasattr(item, 'content'):
if isinstance(item.content, list):
for part in item.content:
if hasattr(part, 'type') and part.type == 'output_text':
content += part.text
elif isinstance(part, dict) and part.get('type') == 'output_text':
content += part.get('text', '')
elif isinstance(item.content, str):
content += item.content
elif isinstance(item, dict) and 'content' in item:
if isinstance(item['content'], list):
for part in item['content']:
if part.get('type') == 'output_text':
content += part.get('text', '')
elif isinstance(item['content'], str):
content += item['content']


Новая рубрика #нейрохрючево

Буду делиться самыми смешными ai-gen штуками, которые встречаю в работе.

Выпуск первый.
LLM генерила тесты и забыла поставить autocommit=True. Чтобы пофиксить — полезла в бизнес-логику:

if hasattr(self.repo._session, 'commit'):
await self.repo._session.commit()




Небольшое открытие про rate limits

Недавно понял, что всегда реализовывал rate-limit-ы и прочие ограничения у внешних сервисов вручную - счётчики , sleep-ы, retry-логика и т.п.
И только сейчас заметил, что для Python существует целый класс библиотек, решающих это из коробки.

Более того, есть shared rate limiters — которые используют общую БД или Redis для синхронизации лимитов между несколькими инстансами сервиса.

Наиболее интересные варианты, которые нашёл:
limits - самая популярная и довольно простая
asyncio-limiter - асинхронная и довольно низкоуровневая, если хочется что то сложное дописать поверх
redis-rate-limiters - понравилась больше всего, две довольно понятных концепции работы с токенами + атомарность


еще немного удивился что не нашел принципиально других лимитеров - кажется на поверхности лежит идея делать рейт-лимиты не для python-методов апи, а для доменов/урлов, например сделать либу-надстройку над httpx, которая позволяет клиенту httpx передать конфиг с рейт-лимитами по урлам, чтобы в коде дальше вообще про это не думать


Forward from: Data Secrets
Конспект LLM.pdf
38.0Mb
Большой коспект по LLM от нашей команды 👍

Мы долго трудились и наконец готовы представить вам наш большой авторский конспект по языковым моделям. Почти 50 страниц, 7 разделов и все, что нужно, чтобы понять, как работают современные LLM. Внутри:

➖ Краткая история LLM от перцептрона до ризонинг-моделей
➖ Необходимая математика: линал и матанализ на пальцах
➖ Все про механизм внимания и трансформеры от А до Я
➖ Дотошное объяснения процесса предобучения
➖ Практический гайд "Как самостоятельно затюнить модель"
➖ RL – с нуля до ризонинга

Все – в иллюстрациях, схемах и интуитивно понятных примерах.

Сохраняйте, делитесь с друзьями и ставьте ❤️

20 last posts shown.