Work & Beer Balance
1.54K subscribers
117 photos
5 videos
4 files
188 links
Авторский канал @Akiyamka
Поддержать автора можно здесь:
buymeacoffee.com/cherrytea
Download Telegram
Forwarded from artalog (artalar)
Хватит боятся LLM

С начала года я, перебарывая себя, активно стараюсь использовать LLM во всех задачах связанных с работой. Мне было дискомфортно и не удобно это делать в начале, и абсолютно так же я чувствую себя сейчас!

АИшки выдают непредсказуемый результат, абсолютно в любой момент времени они могут начать нести чушь. С ними невозможно построить даже простой надежный пайплайн работы, что-то обязательно будет постоянно выстреливать. Неопределенность создает для меня дискомфорт и повышает мою тревожность, Думаю, очевидно, что все это очень плохо.

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

Я понимаю, что LLM может сделать меня эффективнее в общем. Да, где-то я могу просесть - по качеству или по менталочке 🙂 Но для конечного заказчика моей работы я раза в два полезнее при использовании LLM на максимуме.

Самое главное, АИшка пришла к нам в дружелюбном представлении чата и кому-то она может показаться живой или кто-то может ассоциировать такие свойства с ней, но это не так! Это просто инструмент - и это очень важно понимать.

Я вижу что так же как TypeScript лет 7 назад многие не хотели "покупать" потому что он не дает настоящую типобезопасность в рантайме, так же и сейчас не доверяют АИшке потому что она может подложить свинью там где ты этого не ждешь.
Но, я вас уверяю, с LLM можно достичь правила Парето и повысить свою эффективность.

По своему результату это просто очень быстрый, но очень тупой джун. Умение пользоваться АИшкой не сделает этого джуна умнее, в лучшем случае вы сможете получить как бы больше таких джунов (распараллелить работу). Но да, результат надо постоянно перепроверять.

При этом, если кто-то делает код или любой другой контент АИшкой и не перепроверяет его - это нормально! Это то же самое что отдать работу на аутсорс и не проверить результат - бывает. Все зависит от того каких целей вы хотите достичь - закрыть таску или закрыть ее хорошо. Зависит от контекста продукта, конечно.

Я это все к чему. Многие тригернулись на то что я признался (а мог бы не признаваться) что написал статью с АИ. Это необъективная предвзятость меня очень тревожит. Меня вообще тревожит не объективность 🙂 Никто не поинтересовался а с чем именно, в каком соотношении, мне помогла LLM. И это не правильно.
Статья хорошая вышла, я старался. Да, потратил раз в пять меньше времени на нее, чем если бы писал полностью сам, но это не о качестве статьи говорит, а о моих способностях. Да и не было бы никакой статьи без АИшки, а так есть, и лично я этому рад.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🤡2
Интересно наблюдать как крупные энтерпрайзы включаются в игру.

Вот только недавно IBM анонсировала что их новая модель Granite 4.0 tiny выдает хороший результат при весьма скромных запросах (целятся на то чтобы быть вашим домашним LLM для автокомплита), как сегодня я обнаруживаю что даже продавец лопат не смог пройти мимо.

Nvidia, та самая которая просьбы выложить драйвера или хотябы CUDA полностью в опенсорс игнорирует (так что у нас теперь есть целый зоопарк альтернатив - ZLUDA, SYCL, ROCm) взяла и опубликовала набор из трех OCR (Open Code Reasoning) Nemotron - 32, 14 и 7b (instructed вариант)

Пишут что делают упор именно на "instruction-following, reasoning, and multi-step code problem solving", для чего был собран специальный датасет. Здесь уже явно целятся на то чтобы быть аишкой под агенты.

Похоже сейчас каждый крупный игрок ищет себе более узкую нишу в которой их модель будет преуспевать.
👍4
Intel Arc Pro B50 16GB за $299 это вкусно

Intel Arc Pro B60 24GB за $500 это интересно

Project Battlematrix 192GB - за $5000 - сомнительно, но если вам очень надо запустить 70b модель локально, то это вариант.

Больше деталей тут
ntfy.sh

Прилага показывает пуш уведомление, которое можно тригерить по http.

Применение придумайте сами.
(То что надо для моего esp32 проекта!)
👍7
Статья про LLM компиляторы это прикольно, но насколько надо быть уверенным в своих тестах. Да, можно покрыть код на 100% тестами, но даже в этом случае мы знаем лишь то что наша программа корректна в известных нам кейсах (при условии что мы все тесты написали без ошибок). Эта ситуация потревожила мои воспоминания о лямбда кубе и AGDA.

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

Но чтобы решать на них практические задачи надо быть этаким одаренным математиком. А вот LLM возможно справилась бы с задачей выражения того что мы хотим сделать в форме математики. И на основе выводов компилятора который проверит все формулы - дать обратную связь о чем надо бы еще подумать.
👍5😁1😢1
Целый день сегодня пытаюсь задебажить почему в моей fedora падают некоторые тесты.
Докопался до того что падает вот эта апи -
https://w3c.github.io/webdriver/#switch-to-frame

Она позволяет перейти в контекст iframe с родительской страницы.
Кто не в теме работает это так -
x = $('iframe') // аналог querySelector у webdriver
browser.switchToFrame(x)

В этот момент вэбдрайвер делает POST запрос к своему внутреннему серверу /session/{session_id}/frame с JSON который содержит какую-то айди которая очень похожа на поинтер.
а тот отвечает что такого нету с 400 ошибкой.

Сначала я думал это как то связано с wayland, но переключение на xorg ничего не изменило
Так как в CI тоже линух, теперь думаю а не из-за SELinux ли это
🔥1
Интересный лайфхак - чтобы пошарить что-то всем iframe на любом уровне вложенности можно создать в корневом документе пустой iframe и добавлять все что нужно в него.
👍1
Пишу тут тесты на vitest и обнаружил для себя пару новых приемов:

1. beforeEach и afterEach более не актуальны
Раньше я писал так
type TestCtx = {
mock: Mock
}

describe<TestCtx>("Test", (ctx) => {
beforeEach(async (ctx) => {
const mock = await createMock();
ctx.mock = mock;
return async () => {
await mock.destroy();
}
});

it<TestCtx>("uses mock", async ({ mock }) => {
mock.doSmth()
expect(mock.getState).toBe(expectedState);
});
}


Теперь можно (а согласно документации даже нужно) вот так
const itWithCtx = test.extend({
mock: async ({}, use) => {
const mock = await createMock();
// Все что до use - это beforeEach
await use(mock);
// Все что до после use - это afterEach
await mock.destroy();
}
})

itWithCtx("uses mock", async ({ mock }) => {
mock.doSmth()
expect(mock.getState).toBe(expectedState);
});
👍212👎2
Второй прием - тестирование функций которые какие-то события оборачивают в промисы:

Раньше я писал так:
  itWithMock('test getFooFromEvents', async ({ ctx }) => {
const { mock, api } = ctx;
const getFooFromEventsSpy = vi.fn(getFooFromEvents);
getFooFromEventsSpy(api);

const eventPayload = {
foo: 'bar',
};
mock.emit('event', eventPayload);

await pause(100);

expect(getFooFromEventsSpy).toHaveResolvedWith(eventPayload);
});

И честно признаюсь мне никогда не нравилась часть с const getFooFromEventsSpy = vi.fn(getFooFromEvents);
потому что она ощущалась мусорным болиерплейтом, который даже в beforeEach вынесешь только хуже сделаешь (потому goToReferenece по тестируемой функции приведет на место оборачивания в vi.fn вместо сорс кода функции)

да и await pause(100); будем честны тоже грязновато.

Теперь я пишу так
  itWithMock('test getFooFromEvents', async ({ ctx }) => {
const { mock, api } = ctx;

const eventPayload = {
foo: 'bar',
};

const assertion = expect(getFooFromEventsSpy(api)).resolves.toEqual(eventPayload);
mock.emit('event', eventPayload);
await assertion;
});


Второй вариант мне кажется намного чище, а вам?
5
Обнаружил интересный и стабильно работающий сценарий с которым агент справляется на отлично (по крайней мере пока) - добавить логи для дебага процесса или проверки теории, и потом - удалить логи добавленные ранее для дебага.
👍12🤔2
Не делайте кнопку копирования как zed, делайте как vscode. Потому что вы почти наверняка накосячили с Clipboard API (все нормально, это встречается повсеместно) и ваша кнопка ничего не делает у части пользователей. Просто дайте им скопировать вручную этот чертов текст
😁4
В zed можно менять json файл темы и он сразу же применяется как только файл был сохранен - удобно. Накидал себе тему за 20 мин
Meta пошарила всему свету о чем люди там шептались с их AI чатом.
Красавцы. А у вас есть такие диалоги которые бы вы никому не хотели показывать?
В zed завезли поддержку DAP.
Теперь он совсем взрослый!

На это ушло 8 месяцев разработки, 977 коммитов и более 25 тысяч строк кода
🔥9
термины CHIPS, FSA, FedCM, RWS вам о чем нибудь говорят?
Я прошла афганскую войну
Если вы делаете какие-нибудь встроенные виджеты, или у вас SSO,
все это вам может понадобиться в скором будущем когда тридпати куки отключат совсем.
В целом вот тут довольно хорошо объяснено, даже я понял

Спойлер - проще всего проверить понадобится или нет - врубить флаг chrome://flags/#test-third-party-cookie-phaseout и посмотреть как у вас будет не работать