Конечные автоматы: волшебная палочка для распутывания сложной логики
#информатика #конечныеавтоматы
В одном из прошлых постов я коротко освятил тему конечных автоматов: как они могут помочь при написании кода со сложной логикой и где они встречаются в жизни
Теперь покажу классический пример реализации логики турникета, который открывается при опускании жетона
Для примера я буду использовать язык Python
Типичный подход к решению таких задач часто выглядит как набор условных операторов if-else:
У такого кода есть проблемы: его практически невозможно масштабировать и он подвержен ошибкам при добавлении новых условий
Кроме того, он просто не красивый из-за большого количества вложенных условий
Элегантное решение с помощью паттерна конечного автомата
Конечный автомат (finite state machine) — это математическая модель, которая в любой момент времени может находится только в одном состояний из конечного множества
В ответ на внешнее воздействие автомат может перейти из одного состояния в другое по заданным правилам
Давайте подумаем: какие состояния могут быть у турникета?
Естественно, он может быть либо открыт, либо закрыт:
А какое воздействие на него можно оказать?
Можно попытаться пройти через закрытый турникет и столкнуться с суровой реальностью, а можно опустить жетон и не привлекать внимание охранника
Следовательно, мы можем определить действия как:
Затем, вместо вложенных условий if-else можно определить правила перехода из состояния в состояние для каждой комбинации состояние-действие:
Это еще называется таблицей переходов
Преимущества такого подхода очевидны:
Детерминированность (определенность)
Система всегда находится в одном из заранее определенных состояний и каждый переход однозначно определен. Следовательно, поведение системы предсказуемо
Масштабируемость
Таблицу переходов легко расширить в будущем, а новые правила не создают конфликтов в работе старых правил
Тестируемость
Каждый переход можно протестировать изолированно
Пример работы программы
Чтобы запустить программу достаточно создать экземпляр «турникета», а затем отправлять ему действия, которые и будут служить внешним воздействием:
В результате получим:
Реальные применения
В этом примере было всего 2 состояния и 2 действия, то есть 2*2 = 4 сценариев поведения
А представьте сложную систему, у которой может быть значительно больше состояний и действий. Описывать такую логику в виде условий if-else — очень сложно, к тому же это может создать ошибки
Конечные автоматы — это не просто теоретическая концепция, а практический инструмент, способный значительно упростить логику вашего приложения
В частности, большинство чат-ботов работают именно по такому же принципу:
На вход они получают текстовое сообщение, которое преобразуется в действие. Затем происходит переход в новое состояние: отправляется сообщение, файл или совершается любое другое действие
Полный код примера с турникетом я опубликовал в открытом доступе на Python Fiddle
#информатика #конечныеавтоматы
В одном из прошлых постов я коротко освятил тему конечных автоматов: как они могут помочь при написании кода со сложной логикой и где они встречаются в жизни
Теперь покажу классический пример реализации логики турникета, который открывается при опускании жетона
Для примера я буду использовать язык Python
Типичный подход к решению таких задач часто выглядит как набор условных операторов if-else:
def process_turnstile(action):
# Если закрыто:
if current_state == "locked":
if action == "coin":
# Логика при опускании жетона
elif action == "push":
# Логика при нажатии на турникет
# Если открыто:
elif current_state == "unlocked":
if action == "coin":
# Логика при опускании жетона
elif action == "push":
# Логика при нажатии на турникет
# И так далее...
У такого кода есть проблемы: его практически невозможно масштабировать и он подвержен ошибкам при добавлении новых условий
Кроме того, он просто не красивый из-за большого количества вложенных условий
Элегантное решение с помощью паттерна конечного автомата
Конечный автомат (finite state machine) — это математическая модель, которая в любой момент времени может находится только в одном состояний из конечного множества
В ответ на внешнее воздействие автомат может перейти из одного состояния в другое по заданным правилам
Давайте подумаем: какие состояния могут быть у турникета?
Естественно, он может быть либо открыт, либо закрыт:
class State:
LOCKED = "ЗАКРЫТО"
UNLOCKED = "ОТКРЫТО"
А какое воздействие на него можно оказать?
Можно попытаться пройти через закрытый турникет и столкнуться с суровой реальностью, а можно опустить жетон и не привлекать внимание охранника
Следовательно, мы можем определить действия как:
class Action:
COIN = "ЖЕТОН"
PUSH = "НАЖАТЬ"
Затем, вместо вложенных условий if-else можно определить правила перехода из состояния в состояние для каждой комбинации состояние-действие:
transitions = {
(State.LOCKED, Action.COIN): State.UNLOCKED,
(State.LOCKED, Action.PUSH): State.LOCKED,
(State.UNLOCKED, Action.COIN): State.UNLOCKED,
(State.UNLOCKED, Action.PUSH): State.LOCKED
}
Это еще называется таблицей переходов
Преимущества такого подхода очевидны:
Детерминированность (определенность)
Система всегда находится в одном из заранее определенных состояний и каждый переход однозначно определен. Следовательно, поведение системы предсказуемо
Масштабируемость
Таблицу переходов легко расширить в будущем, а новые правила не создают конфликтов в работе старых правил
Тестируемость
Каждый переход можно протестировать изолированно
Пример работы программы
Чтобы запустить программу достаточно создать экземпляр «турникета», а затем отправлять ему действия, которые и будут служить внешним воздействием:
# Демонстрация работы
t = Turnstile()
t.process(Action.PUSH) # Останется LOCKED
t.process(Action.COIN) # Станет UNLOCKED
t.process(Action.COIN) # Останется UNLOCKED
t.process(Action.PUSH) # Станет LOCKED
В результате получим:
НАЖАТЬ | ЗАКРЫТО → ЗАКРЫТО
ЖЕТОН | ЗАКРЫТО → ОТКРЫТО
ЖЕТОН | ОТКРЫТО → ОТКРЫТО
НАЖАТЬ | ОТКРЫТО → ЗАКРЫТО
Реальные применения
В этом примере было всего 2 состояния и 2 действия, то есть 2*2 = 4 сценариев поведения
А представьте сложную систему, у которой может быть значительно больше состояний и действий. Описывать такую логику в виде условий if-else — очень сложно, к тому же это может создать ошибки
Конечные автоматы — это не просто теоретическая концепция, а практический инструмент, способный значительно упростить логику вашего приложения
В частности, большинство чат-ботов работают именно по такому же принципу:
На вход они получают текстовое сообщение, которое преобразуется в действие. Затем происходит переход в новое состояние: отправляется сообщение, файл или совершается любое другое действие
Полный код примера с турникетом я опубликовал в открытом доступе на Python Fiddle
Python-Fiddle
Python-Fiddle: Online Python IDE, Compiler, and Interpreter
Run Python code in your browser. Share code snippets with others.
👍5
Может ли AI сам исправлять факты, не меняя смысл?
#neira #разработка
Работая над Neira, я решил протестировать фактчекинг, потому что планирую создавать AI-экспертов, таких как аналитики, которые должны опираться на реальные данные
Для примера я взял отрывок сообщения с сайта neira.chat, которое я сгенерировал на скорую руку:
Выглядит убедительно. Но правда ли это? 🤔
Я составил промпт так, чтобы модель не переписывала текст, а затем прогнал текст через новую модель Perplexity Sonar Reasoning (которая, кстати на базе DeepSeek R1) и получил исправленную версию со ссылкой на источник:
Рост рынка — 17.63% в год (а не 25%)
Прогнозируемый объем — $5.9B к 2031 (а не $5.3B к 2025)
AI не переписал текст полностью, а точечно исправил цифры и даты, сохранив исходный текст
Возможно, в будущем я буду использовать подобный фактчекинг, хотя он и может выйти дороже из-за повторного прогона одного и того же сообщения
#neira #разработка
Работая над Neira, я решил протестировать фактчекинг, потому что планирую создавать AI-экспертов, таких как аналитики, которые должны опираться на реальные данные
Для примера я взял отрывок сообщения с сайта neira.chat, которое я сгенерировал на скорую руку:
Рынок AI контент-генерации растет на 25% ежегодно, с прогнозируемым объемом $5.3B к 2025 году.
Выглядит убедительно. Но правда ли это? 🤔
Я составил промпт так, чтобы модель не переписывала текст, а затем прогнал текст через новую модель Perplexity Sonar Reasoning (которая, кстати на базе DeepSeek R1) и получил исправленную версию со ссылкой на источник:
Рост рынка — 17.63% в год (а не 25%)
Прогнозируемый объем — $5.9B к 2031 (а не $5.3B к 2025)
AI не переписал текст полностью, а точечно исправил цифры и даты, сохранив исходный текст
Возможно, в будущем я буду использовать подобный фактчекинг, хотя он и может выйти дороже из-за повторного прогона одного и того же сообщения
👏6👍2🦄1
Вайб-кодинг — новый подход к разработке или лень?
На этой неделе Андрей Карпаты (один из основателей OpenAI и бывший руководитель ИИ в Tesla) сделал пост о новом подходе, который использует при написании кода: вайб-кодинге
Если коротко, то суть в следующем:
Получается своего рода креативный процесс — он полностью погружается в процесс создания без вникания в детали реализации
Мне этот подход очень напоминает процесс рисования или игры на музыкальном инструменте
Но чтобы так делать, нужно уже иметь опыт
Тогда получится это делать легко, потому что можно представить конечный результат в голове. Иначе очень легко запутаться и в результате получить нерабочую груду кода
Я не думаю, что это понижает качество продукта, если правильно этим пользоваться. Это просто еще один пример того, как ИИ ускоряет работу специалистов
На этой неделе Андрей Карпаты (один из основателей OpenAI и бывший руководитель ИИ в Tesla) сделал пост о новом подходе, который использует при написании кода: вайб-кодинге
Если коротко, то суть в следующем:
Он использует нейросеть для написания кода, а управляет ей голосом. Он не проверяет и не вчитывается в код, а просто смотрит на результат. Если баг не исчезает, просит внести случайные правки
Получается своего рода креативный процесс — он полностью погружается в процесс создания без вникания в детали реализации
Мне этот подход очень напоминает процесс рисования или игры на музыкальном инструменте
Но чтобы так делать, нужно уже иметь опыт
Тогда получится это делать легко, потому что можно представить конечный результат в голове. Иначе очень легко запутаться и в результате получить нерабочую груду кода
Я не думаю, что это понижает качество продукта, если правильно этим пользоваться. Это просто еще один пример того, как ИИ ускоряет работу специалистов
1👍3❤1💯1
Лучший способ понять как работает ChatGPT
В продолжение предыдущего поста хочу обратить ваше внимание на то, что совсем недавно Андрей Карпаты выложил видео, в котором подробно рассказывает о том, как устроены современные языковые модели вроде ChatGPT. Он это делает практически без кода и скучных технических деталей
Это полноценная бесплатная лекция на 3 часа, в которой Андрей объясняет, как устроены языковые модели:
— как эти модели обучаются
— как слова превращаются в числа
— почему на выходе считаются «токены», а не буквы
и множество других интересных деталей
https://www.youtube.com/watch?v=7xTGNNLPyMI
В продолжение предыдущего поста хочу обратить ваше внимание на то, что совсем недавно Андрей Карпаты выложил видео, в котором подробно рассказывает о том, как устроены современные языковые модели вроде ChatGPT. Он это делает практически без кода и скучных технических деталей
Это полноценная бесплатная лекция на 3 часа, в которой Андрей объясняет, как устроены языковые модели:
— как эти модели обучаются
— как слова превращаются в числа
— почему на выходе считаются «токены», а не буквы
и множество других интересных деталей
https://www.youtube.com/watch?v=7xTGNNLPyMI
YouTube
Deep Dive into LLMs like ChatGPT
This is a general audience deep dive into the Large Language Model (LLM) AI technology that powers ChatGPT and related products. It is covers the full training stack of how the models are developed, along with mental models of how to think about their "psychology"…
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое нейронные сети на самом деле?
В прошлом посте я упомянул новое видео Андрея Карпаты, где он рассказывает как устроен ChatGPT
Сейчас очень много шума вокруг искусственного интеллекта, а с появлением ChatGPT и развитием больших языковых моделей у людей вообще снесло крышу
Однако, полезно понимать, что стоит за такими технологиями и как они устроены. Поэтому хочу рассказать как устроены нейронные сети в целом, а не языковые модели в частности
Я начал работать с нейронными сетями задолго до появления ChatGPT, еще где-то в 2017 году. Помню как сейчас: я писал простую программу на C#, где обучалась очень простая «нейронная сеть». На самом деле она была настолько простая, что состояла всего из одного нейрона 😁
Программа и скриншоты ее работы доступны на GitHub
В то время как раз получил второе дыхание новый подход к обучению нейронных сетей — глубинное обучение или deep learning. Это подход, в котором обучается не просто несколько нейронов, а несколько слоев нейронов
Продолжение ниже ⬇️
В прошлом посте я упомянул новое видео Андрея Карпаты, где он рассказывает как устроен ChatGPT
Сейчас очень много шума вокруг искусственного интеллекта, а с появлением ChatGPT и развитием больших языковых моделей у людей вообще снесло крышу
Однако, полезно понимать, что стоит за такими технологиями и как они устроены. Поэтому хочу рассказать как устроены нейронные сети в целом, а не языковые модели в частности
Я начал работать с нейронными сетями задолго до появления ChatGPT, еще где-то в 2017 году. Помню как сейчас: я писал простую программу на C#, где обучалась очень простая «нейронная сеть». На самом деле она была настолько простая, что состояла всего из одного нейрона 😁
Программа и скриншоты ее работы доступны на GitHub
В то время как раз получил второе дыхание новый подход к обучению нейронных сетей — глубинное обучение или deep learning. Это подход, в котором обучается не просто несколько нейронов, а несколько слоев нейронов
Продолжение ниже ⬇️
👍3
На рисунке красным отмечены сами нейроны, а в правой части видно несколько слоев из нейронов
Важно отметить, что все нейронные сети работают с числами: числа на входе — числа на выходе. Поэтому для того, чтобы сеть могла работать с картинками, текстом или звуком, вся эта информация тоже преобразуется в числа с помощью вложений
Магия, которая происходит в нейронных сетях, происходит из-за того, что все соседние нейроны связаны между собой
Каждой такой связи соотвествует число от 0 до 1
Например:
В зависимости от комбинации таких чисел нейросеть реагирует по разному. То есть связи между нейронами образую своего рода память — сеть «запоминает» соответствия входа и выхода
Возникает логичный вопрос:
Именно эту проблему и решает процесс обучения нейронной сети самый популярный на текущий момент алгоритм:
Метод обратного распространения ошибки
В следующем посте расскажу о том, как Андрей Карпаты помог мне понять суть этого метода
Важно отметить, что все нейронные сети работают с числами: числа на входе — числа на выходе. Поэтому для того, чтобы сеть могла работать с картинками, текстом или звуком, вся эта информация тоже преобразуется в числа с помощью вложений
Магия, которая происходит в нейронных сетях, происходит из-за того, что все соседние нейроны связаны между собой
Каждой такой связи соотвествует число от 0 до 1
Например:
0.345613
В зависимости от комбинации таких чисел нейросеть реагирует по разному. То есть связи между нейронами образую своего рода память — сеть «запоминает» соответствия входа и выхода
Возникает логичный вопрос:
Как узнать, какие числа нужно назначить связям?
Именно эту проблему и решает процесс обучения нейронной сети самый популярный на текущий момент алгоритм:
Метод обратного распространения ошибки
В следующем посте расскажу о том, как Андрей Карпаты помог мне понять суть этого метода
👍2
Как обучаются нейронные сети: руководство для простых смертных
👆 На картинках выше представлен один и тот же процесс (опуская технические детали), который называется метод обратного распространения ошибки / error backpropagation
Разница лишь в том, что на первой картинке — типичное описание в статьях или учебниках. Обычно об этом методе любят рассказывать так:
В результате получается путаница, которую даже я не могу понять, имея высшее образование. Несомненно, какой-нибудь хардкорный математик скажет, что там все легко и я просто не шарю. Но факт в том, что 90% программистов, которые будут реализовать это просто не поймут как это сделать
Я достаточно долго искал материалы, чтобы понять как же работает этот метод и в один прекрасный момент нашел Стэнфордский курс CS213n, соавтором которого как раз является Андрей Карпаты
Продолжение ниже ⬇️
👆 На картинках выше представлен один и тот же процесс (опуская технические детали), который называется метод обратного распространения ошибки / error backpropagation
Разница лишь в том, что на первой картинке — типичное описание в статьях или учебниках. Обычно об этом методе любят рассказывать так:
Берем вот эти переменные, по ним берем производную, эту производную умножаем на производную и повторяем эту процедуру 10 раз
В результате получается путаница, которую даже я не могу понять, имея высшее образование. Несомненно, какой-нибудь хардкорный математик скажет, что там все легко и я просто не шарю. Но факт в том, что 90% программистов, которые будут реализовать это просто не поймут как это сделать
Я достаточно долго искал материалы, чтобы понять как же работает этот метод и в один прекрасный момент нашел Стэнфордский курс CS213n, соавтором которого как раз является Андрей Карпаты
Продолжение ниже ⬇️
👍2
На второй картинке представлен тот же самый процесс распространения ошибки, что и в первом
Разница в визуализации концепции — коллосальная
Вместо стены уравнений и длинной цепочки дифференциальных уравнений — лаконичная и визуальная демонстрация того, как ошибка протекает в обратную сторону внутри нейронной сети: от выхода ко входу
Разумеется, невозможно рассказать в деталях о том, как работает этот алгоритм в формате постов в Telegram, однако я хотел рассказать свою историю того, как я начал изучать нейронные сети и постараться мотивировать вас на изучение того, что интересно именно вам
Важный посыл, который я хотел донести заключается в том, что сейчас очень много качественных образовательных ресурсов и даже если вы не студент Стэнфорда, то вы также можете воспользоваться первоклассными материалами
Курс, по сверточным нейронным сетям:
CS231n: Convolutional Neural Networks for Visual Recognition
Андрей Карпаты далеко не единственный топовый преподаватель, материалы которого я использую для обучения
В будущем я планирую еще делиться с вами другими своими находками из сферы науки и техники, не обязательно из области машинного обучения
Разница в визуализации концепции — коллосальная
Вместо стены уравнений и длинной цепочки дифференциальных уравнений — лаконичная и визуальная демонстрация того, как ошибка протекает в обратную сторону внутри нейронной сети: от выхода ко входу
Разумеется, невозможно рассказать в деталях о том, как работает этот алгоритм в формате постов в Telegram, однако я хотел рассказать свою историю того, как я начал изучать нейронные сети и постараться мотивировать вас на изучение того, что интересно именно вам
Важный посыл, который я хотел донести заключается в том, что сейчас очень много качественных образовательных ресурсов и даже если вы не студент Стэнфорда, то вы также можете воспользоваться первоклассными материалами
Курс, по сверточным нейронным сетям:
CS231n: Convolutional Neural Networks for Visual Recognition
Андрей Карпаты далеко не единственный топовый преподаватель, материалы которого я использую для обучения
В будущем я планирую еще делиться с вами другими своими находками из сферы науки и техники, не обязательно из области машинного обучения
👍4
⭐️ Нас уже больше 100! (и это без учета ботов tgstat)
Я начал вести этот канал для того, чтобы делиться с вами своим опытом, мыслями, проектами и интересными идеями
Однако это желание появилось у меня не потому, что я хочу сказать: «Смотрите, как много я знаю и умею»
Мой канал — это в первую очередь про тягу к знаниям
Поэтому, помимо своих мыслей и идей, я также люблю делиться материалами, которые помогают мне узнавать новое и глубже понимать мир
За годы обучения и набора опыта я нашёл множество потрясающих людей, которые вдохновляют меня учиться каждый день. Именно они во многом сделали меня тем специалистом, которым я стал:
— Lex Fridman / ведёт один из самых известных подкастов в мире, где задаёт глубокие вопросы лучшим специалистам в самых разных областях, в том числе науке и технике: Roger Penrose, Max Tegmark, Steven Wolfram, Joscha Bach, Lee Cronin и многие другие
— Grant Sanderson / создатель популярного YouTube-канала 3Blue1Brown, где просто и понятно рассказывает о сложных абстрактных математических концепциях
— Brady Haran / видео-журналист, который берёт интервью у преподавателей и учёных в лучших университетах Англии. У него есть два проекта: Numberphile и Computerphile
— Ben Eater / популяризатор математики и электроники. Благодаря нему я и многие другие смогли собрать свой 8-битный компьютер просто из груды компонентов
— Andrej Karpathy / учёный в области искусственного интеллекта, один из лучших преподавателей машинного обучения в мире
— Andrew Ng / исследователь искусственного интеллекта и один из основателей Coursera. Благодаря ему я узнал как работают нейронные сети. Его курс по глубинному обучению был первым курсом на Coursera и доступен всем без ограничений до сих пор)
— Hank Green / популяризатор науки, создатель научно-популярного YouTube-канала SciShow
— Sal Khan / инженер и преподаватель, основатель бесплатной образовательной платформы Khan Academy
Когда я начал составлять этот список, оказалось, что таких людей даже больше, чем я думал. Поэтому вместить их всех в один пост просто невозможно
Идея этого поста в том, что я сам стою на плечах гигантов, которые вдохновляют меня. А я, в свою очередь, стараюсь передать это вдохновение вам через свои посты
Спасибо что читаете 💛
Я начал вести этот канал для того, чтобы делиться с вами своим опытом, мыслями, проектами и интересными идеями
Однако это желание появилось у меня не потому, что я хочу сказать: «Смотрите, как много я знаю и умею»
Мой канал — это в первую очередь про тягу к знаниям
Поэтому, помимо своих мыслей и идей, я также люблю делиться материалами, которые помогают мне узнавать новое и глубже понимать мир
За годы обучения и набора опыта я нашёл множество потрясающих людей, которые вдохновляют меня учиться каждый день. Именно они во многом сделали меня тем специалистом, которым я стал:
— Lex Fridman / ведёт один из самых известных подкастов в мире, где задаёт глубокие вопросы лучшим специалистам в самых разных областях, в том числе науке и технике: Roger Penrose, Max Tegmark, Steven Wolfram, Joscha Bach, Lee Cronin и многие другие
— Grant Sanderson / создатель популярного YouTube-канала 3Blue1Brown, где просто и понятно рассказывает о сложных абстрактных математических концепциях
— Brady Haran / видео-журналист, который берёт интервью у преподавателей и учёных в лучших университетах Англии. У него есть два проекта: Numberphile и Computerphile
— Ben Eater / популяризатор математики и электроники. Благодаря нему я и многие другие смогли собрать свой 8-битный компьютер просто из груды компонентов
— Andrej Karpathy / учёный в области искусственного интеллекта, один из лучших преподавателей машинного обучения в мире
— Andrew Ng / исследователь искусственного интеллекта и один из основателей Coursera. Благодаря ему я узнал как работают нейронные сети. Его курс по глубинному обучению был первым курсом на Coursera и доступен всем без ограничений до сих пор)
— Hank Green / популяризатор науки, создатель научно-популярного YouTube-канала SciShow
— Sal Khan / инженер и преподаватель, основатель бесплатной образовательной платформы Khan Academy
Когда я начал составлять этот список, оказалось, что таких людей даже больше, чем я думал. Поэтому вместить их всех в один пост просто невозможно
Идея этого поста в том, что я сам стою на плечах гигантов, которые вдохновляют меня. А я, в свою очередь, стараюсь передать это вдохновение вам через свои посты
Спасибо что читаете 💛
2🔥9❤🔥4👏2💯1
Выше я упоминал Эндрю Ына (Andrew Ng). И вот как раз недавно я наткнулся на видео, в котором он рассказывает об «агентном» подходе в ИИ, который называет «Agentic AI»
Я заметил, что Эндрю довольно активно в последнее время продвигает идею такого подхода (это не первое видео, в котором он рассказывает об этом). Однако это навело меня на некоторые мысли:
До сих пор нет четкого определения, что такое «агентский ИИ»
На самом деле, в области ИИ очень много терминов, у которых ещё нет точной трактовки и это один из них
Сейчас все чаще начинают обсуждать использование агентского подхода и по моим наблюдениям есть две интерпретации:
1. Агентный ИИ в смысле, что есть несколько отдельных агентов ИИ 👾👾👾
Каждый из них умеет делать что-то одно и специализируется на этом
В результате получается система, в которой несколько ИИ агентов работают совместно:
— один рисует картинки
— другой ищет информацию в интернете
— третий общается с пользователем и координирует работу
Но есть второй подход, который не выделяет роли в отдельных агентов. Вместо этого вся система — это один агент (как агент Смит):
2. Агент ИИ как виртуальный пользователь
В этом случае это единая система, которая может делать все самостоятельно: и в интернет сходить, и картинку нарисовать, и что-то посчитать, и текст написать
Второй подход — это то, как видит общий искусственный интеллект (AGI) Сэм Альтман из OpenAI
И честно говоря не до конца понятна грань между этими подходами. Ведь ничего не мешает сделать сложную систему, состоящую из нескольких «агентов», но скрыть их и сделать вид как-будто это одна умная система
Надеюсь, что по этому пути OpenAI не пойдут и у них действительно получится сделать что-то принципиально новое
Я заметил, что Эндрю довольно активно в последнее время продвигает идею такого подхода (это не первое видео, в котором он рассказывает об этом). Однако это навело меня на некоторые мысли:
До сих пор нет четкого определения, что такое «агентский ИИ»
На самом деле, в области ИИ очень много терминов, у которых ещё нет точной трактовки и это один из них
Сейчас все чаще начинают обсуждать использование агентского подхода и по моим наблюдениям есть две интерпретации:
1. Агентный ИИ в смысле, что есть несколько отдельных агентов ИИ 👾👾👾
Каждый из них умеет делать что-то одно и специализируется на этом
В результате получается система, в которой несколько ИИ агентов работают совместно:
— один рисует картинки
— другой ищет информацию в интернете
— третий общается с пользователем и координирует работу
Но есть второй подход, который не выделяет роли в отдельных агентов. Вместо этого вся система — это один агент (как агент Смит):
2. Агент ИИ как виртуальный пользователь
В этом случае это единая система, которая может делать все самостоятельно: и в интернет сходить, и картинку нарисовать, и что-то посчитать, и текст написать
Второй подход — это то, как видит общий искусственный интеллект (AGI) Сэм Альтман из OpenAI
И честно говоря не до конца понятна грань между этими подходами. Ведь ничего не мешает сделать сложную систему, состоящую из нескольких «агентов», но скрыть их и сделать вид как-будто это одна умная система
Надеюсь, что по этому пути OpenAI не пойдут и у них действительно получится сделать что-то принципиально новое
YouTube
Andrew Ng Explores The Rise Of AI Agents And Agentic Reasoning | BUILD 2024 Keynote
In recent years, the spotlight in AI has primarily been on large language models (LLMs) and emerging large multi-modal models (LMMs). Now, building on these tools, a new paradigm is emerging with the rise of AI agents and agentic reasoning, which are proving…
👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
На днях завирусилось видео, в котором два ИИ-ассистента общаются с помощью «gibberlink» — протокола, который позволяет передавать данные с помощью звука по аналогии с азбукой Морзе
Я решил копнуть глубже и разобраться:
Хотя это видео выстрелило только сейчас, сама технология, которая лежит в основе называется ggwave и была реализована Георгием Гергановым как минимум 4 года назад (не считая прототипов)
Протокол поддерживает несколько форматов, которые отличаются по скорости и даже поддерживает ультразвук 🙉
Сам ggwave можно попробовать прямо в браузере:
👉 https://ggwave-js.ggerganov.com
Просто откройте на любом устройстве с микрофоном и нажмите «Start capturing». В поле будет появляться принятый текст сообщения.
Также можно создать собственный файл с помощью HTTP API
#интересное
Я решил копнуть глубже и разобраться:
Хотя это видео выстрелило только сейчас, сама технология, которая лежит в основе называется ggwave и была реализована Георгием Гергановым как минимум 4 года назад (не считая прототипов)
Протокол поддерживает несколько форматов, которые отличаются по скорости и даже поддерживает ультразвук 🙉
Сам ggwave можно попробовать прямо в браузере:
👉 https://ggwave-js.ggerganov.com
Просто откройте на любом устройстве с микрофоном и нажмите «Start capturing». В поле будет появляться принятый текст сообщения.
Также можно создать собственный файл с помощью HTTP API
#интересное
1👍4❤1🔥1😱1
Послание
Послание для вас в формате ggwave, которое можно расшифровать здесь: https://ggwave-js.ggerganov.com
😁2
Давненько я не рассказывал о том, как продвигается разработка #neira
Если честно, последнее время у меня было мало времени на этот проект. Фриланс отнимает много сил, а тут ещё и аспирантура в активной фазе — сейчас занимаюсь подачей документов в диссертационный совет, планирую защищаться уже в мае
А пока я в начале пути — хочу поделиться с вами интересным решением, которое я начал использовать для разработки:
Обычно я много работаю с Docker контейнерами 🐳
Это невероятно удобно, когда проект состоит из разных сервисов — базы данных (MySQL), кеша (Redis) и прочего
Docker позволяет развернуть изолированную копию любого сервиса специально под проект, и что самое крутое — сделать это можно где угодно без каких-либо дополнительных настроек
Это решает огромную головную боль многих разработчиков: когда используешь несколько окружений для разработки, без контейнеров пришлось бы постоянно заново настраивать базу данных и другие сервисы 😑
Но сейчас я в основном работаю под Windows, а Docker здесь капризничает и работает не так стабильно, как хотелось бы (похоже, опять пришло время переустанавливать систему)
Поэтому я решил сделать эксперимент: арендовал облачный сервер и настроил всю среду разработки прямо там
Теперь я просто подключаюсь из Cursor по SSH к серверу, а все данные, проекты и запущенные сервисы крутятся на сервере независимо от моего компьютера
Честно сказать, я не заметил никакой разницы в качестве работы и удобстве пользования, хотя я довольно привередлив к сетевым задержкам и прочим тормозам
Получается, что теперь я могу работать с любого устройства, и оно даже не обязательно должно быть мощным. Достаточно просто иметь интернет и возможность запустить VS Code (или Cursor, который я сейчас использую)
#разработка #опыт
Если честно, последнее время у меня было мало времени на этот проект. Фриланс отнимает много сил, а тут ещё и аспирантура в активной фазе — сейчас занимаюсь подачей документов в диссертационный совет, планирую защищаться уже в мае
А пока я в начале пути — хочу поделиться с вами интересным решением, которое я начал использовать для разработки:
Обычно я много работаю с Docker контейнерами 🐳
Это невероятно удобно, когда проект состоит из разных сервисов — базы данных (MySQL), кеша (Redis) и прочего
Docker позволяет развернуть изолированную копию любого сервиса специально под проект, и что самое крутое — сделать это можно где угодно без каких-либо дополнительных настроек
Это решает огромную головную боль многих разработчиков: когда используешь несколько окружений для разработки, без контейнеров пришлось бы постоянно заново настраивать базу данных и другие сервисы 😑
Но сейчас я в основном работаю под Windows, а Docker здесь капризничает и работает не так стабильно, как хотелось бы (похоже, опять пришло время переустанавливать систему)
Поэтому я решил сделать эксперимент: арендовал облачный сервер и настроил всю среду разработки прямо там
Теперь я просто подключаюсь из Cursor по SSH к серверу, а все данные, проекты и запущенные сервисы крутятся на сервере независимо от моего компьютера
Честно сказать, я не заметил никакой разницы в качестве работы и удобстве пользования, хотя я довольно привередлив к сетевым задержкам и прочим тормозам
Получается, что теперь я могу работать с любого устройства, и оно даже не обязательно должно быть мощным. Достаточно просто иметь интернет и возможность запустить VS Code (или Cursor, который я сейчас использую)
#разработка #опыт
👍6💅1
Посмотрел новое видео на канале Veritasium, в котором Дерек рассказывает о принципе наименьшего действия в квантовой физике
На примере фотонов света он показывает, что частицы на самом деле «исследуют» все возможные пути, а видим мы конкретный луч только потому, что это — путь наименьшего действия
Меня больше всего заставил задуматься и вдохновил тот факт, что таким образом можно рассматривать вообще любые частицы: получается, что все электроны во всех атомах всех молекул аналогично действуют по такому же принципу 🤔
Ещё мне очень понравилось объяснение модели атома с использованием этой концепции: когда каждый энергетический уровень атома можно рассматривать как «стоячую» волну с периодом, кратным какому-либо целому числу N
В этом смысле действительно можно считать, что в планетарной модели атома электроны не летают на орбитах, а образуют кольцо в виде стоячей волны
И хотя я довольно далек от физики, но такие вещи однозначно вдохновляют ✨
#наука #физика
На примере фотонов света он показывает, что частицы на самом деле «исследуют» все возможные пути, а видим мы конкретный луч только потому, что это — путь наименьшего действия
Меня больше всего заставил задуматься и вдохновил тот факт, что таким образом можно рассматривать вообще любые частицы: получается, что все электроны во всех атомах всех молекул аналогично действуют по такому же принципу 🤔
Ещё мне очень понравилось объяснение модели атома с использованием этой концепции: когда каждый энергетический уровень атома можно рассматривать как «стоячую» волну с периодом, кратным какому-либо целому числу N
В этом смысле действительно можно считать, что в планетарной модели атома электроны не летают на орбитах, а образуют кольцо в виде стоячей волны
И хотя я довольно далек от физики, но такие вещи однозначно вдохновляют ✨
#наука #физика
YouTube
Something Strange Happens When You Trust Quantum Mechanics
Does light take all possible paths at the same time? 🌏 Get exclusive NordVPN deal here ➵ https://NordVPN.com/veritasium It’s risk free with Nord’s 30 day money-back guarantee!✌
A massive thank you to Dr. Andrew Mitchell for all his help and expertise. If…
A massive thank you to Dr. Andrew Mitchell for all his help and expertise. If…
👍7🔥2🤯1
Этот пост может показаться вам странным
Он о моей внутренней борьбе как разработчика
Сейчас я разрабатываю neira.chat — ИИ-чат в формате мастермайнда. И каждый, кто когда-либо запускал новый продукт, знает золотое правило: сначала создаешь максимально грубый MVP, быстро тестируешь гипотезу, а потом уже думаешь об архитектуре и технических красотах
Но у меня проблема. Я в первую очередь инженер. Моя суперсила и одновременно проклятие — непреодолимое желание писать фреймворки:
Каждый раз, когда я начинаю новый проект, технический перфекционист внутри меня начинает шептать:
Проблема здесь в том, что так можно застрять на годы
Мне кажется я наконец-то нашел лайфхак
Neira для меня — это не только продукт, но и эксперимент по созданию бизнеса с нуля в одиночку. Ну, почти в одиночку — вместе с искусственным интеллектом
Хочу привести в пример недавний случай:
Вместо того чтобы самому продумывать архитектуру проекта и налаживать процессы сборки и отладки, я делегировал это Claude
Работая в Cursor буквально за несколько часов мы вместе создали архитектуру, которая сочетает лучшие практики из Laravel и других популярных фреймворков, но с учетом всех моих технических предпочтений
Я получил удовлетворение от хорошей архитектуры, но без обычных временных затрат. А теперь могу сконцентрироваться на том, что действительно важно — создании ценности для пользователей
Кстати, это похоже на подход к борьбе с вредными привычками: вместо того, чтобы бороться с ними, можно найти хитрый способ их обойти
Если вы эксперт, то наверняка у вас тоже проявляется перфекционизм
А как вы справляетесь со своим перфекционизмом при запуске новых проектов?
#neira #разработка
Он о моей внутренней борьбе как разработчика
Сейчас я разрабатываю neira.chat — ИИ-чат в формате мастермайнда. И каждый, кто когда-либо запускал новый продукт, знает золотое правило: сначала создаешь максимально грубый MVP, быстро тестируешь гипотезу, а потом уже думаешь об архитектуре и технических красотах
Но у меня проблема. Я в первую очередь инженер. Моя суперсила и одновременно проклятие — непреодолимое желание писать фреймворки:
Дайте мне создать свой фреймворк, и еще один, и еще, и еще... ведь остальные недостаточно элегантны или слишком громоздки!
Каждый раз, когда я начинаю новый проект, технический перфекционист внутри меня начинает шептать:
Давай сначала построим идеальную архитектуру, а потом займемся бизнесом
Проблема здесь в том, что так можно застрять на годы
Мне кажется я наконец-то нашел лайфхак
Neira для меня — это не только продукт, но и эксперимент по созданию бизнеса с нуля в одиночку. Ну, почти в одиночку — вместе с искусственным интеллектом
Хочу привести в пример недавний случай:
Вместо того чтобы самому продумывать архитектуру проекта и налаживать процессы сборки и отладки, я делегировал это Claude
Работая в Cursor буквально за несколько часов мы вместе создали архитектуру, которая сочетает лучшие практики из Laravel и других популярных фреймворков, но с учетом всех моих технических предпочтений
Я получил удовлетворение от хорошей архитектуры, но без обычных временных затрат. А теперь могу сконцентрироваться на том, что действительно важно — создании ценности для пользователей
Кстати, это похоже на подход к борьбе с вредными привычками: вместо того, чтобы бороться с ними, можно найти хитрый способ их обойти
Если вы эксперт, то наверняка у вас тоже проявляется перфекционизм
А как вы справляетесь со своим перфекционизмом при запуске новых проектов?
#neira #разработка
neira.chat
Нейра — твой личный AI-мастермайнд
Создайте команду мечты под любой проект. Нейра — это чат с искуственным интеллектом, который выходит за рамки обычного диалога.
👍6
Для разработки 🟢 Neira я использую AdonisJS — это клон Laravel для TypeScript. Уже как год назад вышла 6 версия, в интернете есть много вопросов и ответов по прошлым версиям
Поэтому даже если попытаться спросить ChatGPT или Claude как что-то сделать в нем, то он будет отвечать, опираясь на информацию о старой версии фреймворка, которая значительно отличается
Казалось бы, как использовать языковые модели в этом случае?
А у меня получилось 😮
Я работаю в Cursor, использую Claude 3.7 Sonnet и у меня возникла проблема — не выполнялась команда для создания миграции базы данных
Вместо создания файла, команда просто запускала приложение и зависала. Я спросил Claude в агентном режиме (это когда он может редактировать файлы и выполнять команды), после чего он:
— подумал (thinking mode, все-таки)
— проанализировал структуру проекта
— попробовал воспроизвести ошибку, запустив команду
— догадался в чем проблема и предложил решение
Не вайб-кодинг, но удобный помощник 🤔
#neira #разработка
Поэтому даже если попытаться спросить ChatGPT или Claude как что-то сделать в нем, то он будет отвечать, опираясь на информацию о старой версии фреймворка, которая значительно отличается
Казалось бы, как использовать языковые модели в этом случае?
А у меня получилось 😮
Я работаю в Cursor, использую Claude 3.7 Sonnet и у меня возникла проблема — не выполнялась команда для создания миграции базы данных
node ace make:migration
Вместо создания файла, команда просто запускала приложение и зависала. Я спросил Claude в агентном режиме (это когда он может редактировать файлы и выполнять команды), после чего он:
— подумал (thinking mode, все-таки)
— проанализировал структуру проекта
— попробовал воспроизвести ошибку, запустив команду
— догадался в чем проблема и предложил решение
Не вайб-кодинг, но удобный помощник 🤔
#neira #разработка
👍4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Сейчас работаю над статьей о разнице между базовыми и instruct моделями на основе примера, который приводит Andrej Karpathy в своем видео про устройство ChatGPT
Взял я, значит, за основу базовую модель Llama 3 8b и запустил ее без системного промпта, задав вопрос: «Почему небо голубое?»
На что в ответ получил довольно глубокий ответ, который описывает всю суть человечества и вообще может вызвать экзистенциальный кризис
Ссылка на конкретное выполнение replicate: https://replicate.com/p/n65g0034cdrj40cns2e8g2zs9r
Оформил ответ сети в виде песни, сгенерированной в Udio
Текст в комментариях 👇
Взял я, значит, за основу базовую модель Llama 3 8b и запустил ее без системного промпта, задав вопрос: «Почему небо голубое?»
<|user|>Почему небо голубое?<|end|>
На что в ответ получил довольно глубокий ответ, который описывает всю суть человечества и вообще может вызвать экзистенциальный кризис
Ссылка на конкретное выполнение replicate: https://replicate.com/p/n65g0034cdrj40cns2e8g2zs9r
Оформил ответ сети в виде песни, сгенерированной в Udio
Текст в комментариях 👇
Только что размышлял над фрагментом интервью Бреди (Computerphile) с главой Nvidia Дженсеном Хуангом, в котором он упомянул вскользь о своих первых языках программирования — Fortran, Pascal и awk 🤔
Фрагмент про языки программирования навел меня на мысль: у каждого человека часто свой первый язык, с которого он начинал — это понятно
Но языков ограниченное количество
Как правило люди из одного поколения или среды (школа/университет) начинают с одного языка программирования
Моя мысль заключается в том, что у каждого человека всегда свои уникальные программы. Даже если язык программирования один и тот же
Все, кроме, пожалуй, "Hello, World!" — это уникальное выражение мыслей и опыта человека
Имена переменных, функций, текст, выводимый в консоль — все это не повторяется
Это подвело меня к другой мысли:
Получается, что подходы к проектированию и разработке программ — это попытка «укротить» подобного рода уникальность
И ведь действительно в сфере разработки софта есть разделение:
• Одни пытаются привести область и строгой стандартизации и регламентам, как любую другую инженерную специальность
• Другие говорят, что разработка — это творчество, что каждый делает как художник, который так видит
Есть еще такой термин: craftsmanship, который периодически пытаются применить к процессу разработки
Лично мне иногда не хватает стандартизации в процессах, чтобы не приходилось выбирать в очередной раз из 5 разных библиотек, которые делают одно и то же
А вы как думаете?
Было бы лучше, если разработка была бы больше похоже на инженерную дисциплину?
#разработка
Фрагмент про языки программирования навел меня на мысль: у каждого человека часто свой первый язык, с которого он начинал — это понятно
Но языков ограниченное количество
Как правило люди из одного поколения или среды (школа/университет) начинают с одного языка программирования
Моя мысль заключается в том, что у каждого человека всегда свои уникальные программы. Даже если язык программирования один и тот же
Все, кроме, пожалуй, "Hello, World!" — это уникальное выражение мыслей и опыта человека
Имена переменных, функций, текст, выводимый в консоль — все это не повторяется
Это подвело меня к другой мысли:
Получается, что подходы к проектированию и разработке программ — это попытка «укротить» подобного рода уникальность
И ведь действительно в сфере разработки софта есть разделение:
• Одни пытаются привести область и строгой стандартизации и регламентам, как любую другую инженерную специальность
• Другие говорят, что разработка — это творчество, что каждый делает как художник, который так видит
Есть еще такой термин: craftsmanship, который периодически пытаются применить к процессу разработки
Лично мне иногда не хватает стандартизации в процессах, чтобы не приходилось выбирать в очередной раз из 5 разных библиотек, которые делают одно и то же
А вы как думаете?
Было бы лучше, если разработка была бы больше похоже на инженерную дисциплину?
#разработка
YouTube
Jensen Huang on GPUs - Computerphile
Nvidia CEO and co-founder Jensen Huang on various applications of GPUs and the rise of AI in all aspects of parallel processing.
#nvidia #JensenHuang #Ai #ComputerScience #gaming #GPU #GTC2025
Computerphile is supported by Jane Street. Learn more about…
#nvidia #JensenHuang #Ai #ComputerScience #gaming #GPU #GTC2025
Computerphile is supported by Jane Street. Learn more about…
🔥2👍1