Сюжет. Эрик Клэптон однажды сказал: Хороший блюз состоит всего из трех вещей — мужчины, гитары и заката. Я также всегда верил в эту тринитарную теорию программирования: Хорошее программирование требует только 3 вещей — (человека), Emacs и компаньона по коду человеческого уровня. Эта троица похожа на экстремальное парное программирование с человеком на самом горячем новом языке программирования... английском. Человек в данном случае является программой.

Сегодня мы далеки от этого видения в программировании — нам нужны Github, Gists, W3Cschool, языковые площадки, реплики, StackOverflow, различные IDE с кривыми обучения и излишними UX-шиками и так далее.

Тогда возникает вопрос: достаточно ли хорош chatGPT (или его синоним), чтобы быть вашим единственным компаньоном по коду (вашей лучшей подругой по программированию)?

Если нет, что он уже заменяет, а что еще предстоит?

Упражнение. Что меня оттолкнуло от моего новогоднего решения не добавлять «шум» о chatGPT, так это этот зуд, который мне нужно было почесать. И так получилось, что решение имеет а) уровень сложности задания первокурсника CS undegrade и б) с количеством битов, которые я знаю, с которыми я был либо незнаком, либо заржавел (Langchain, API векторного хранилища и тому подобное) — так что достаточно хорошее упражнение, чтобы проверить, насколько полезным может быть chatGPT по сравнению с алфавитным супом из инструментов, описанных выше.

Мой вариант использования. Я продолжаю собирать статьи по определенным темам (20–30 сразу) и откладываю их чтение, потому что не могу выделить непрерывный блок времени. В частности, за праздники я собрал кучу статей о нейростимуляции, чтобы лучше понять, изменила ли игра Маска Neuralink или коммерциализирует известное состояние искусства. С очень небольшим словарным запасом Neuro за моим поясом эта работа по чтению списка чтения постоянно откладывалась.

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

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

Решение. Вам нужно несколько компонентов: упрощенное разделение документов на корпус для упрощения индексирования, современное индексирование (FAISS или лучше), векторное хранилище для ускорения обработки запросов, а затем диалоговое наложение поверх осколки со ссылками на исходный контент, чтобы сделать процесс потребительского запроса интуитивно понятным. Вы можете сделать это множеством способов, но один из них — получить все части из OpenAI и соединить их вместе с помощью цепочек подсказок.

Langchain — это новый пакет, который упрощает объединение LLM и традиционных хранилищ документов, что делает его хорошей основой для написания указанной пользовательской семантической поисковой системы. Основная идея, которую он упрощает, — это понятие цепочек подсказок (думайте об этом как о версии механизма правил 21-го века, но где правила работают с LLM). В частности, он предлагает что-то под названием Связывание приглашений с расширенной генерацией данных, которое упрощает большую часть приведенного ниже конвейера с предположением по умолчанию, что все службы (разбиение текста, суммирование, индексирование и т. д.) исходят от OpenAI. Очевидно, что интерфейсы на естественном языке предоставляются бесплатно, как и многоязычность, как и творческий подход (если вы установите температуру OpenAI на значение, отличное от 0).

Что дал мне chatGPT? Вместо того чтобы читать документацию по OpenAPI и Langchain, я решил изучить их «сократическим путем», просто спрашивая chatGPT по ходу дела. Его ответы о концепциях (а также о простых вещах, таких как программирование ключей openAI и оптимизация стоимости вызовов openAI) были на удивление убедительными. Код, который он написал, был хорош на 80 из 20, и я понял, что не собираюсь обращаться к StackOverflow, чтобы быстро перекусить вещами, которые я знал, но забыл. Удивительно, но его интеграция с Github была плохой, и в итоге я просмотрел исходный код Langchain для уточнения (это то, что Microsoft быстро исправит с «новой сделкой»). Краткое изложение вещей, которые он заменил (или не заменил) для меня (в 15–20 подсказках chatGPT, которые составляли наше парное программирование), приведен ниже.

Итак... по тринитарной шкале. Мы еще не находимся в состоянии нирваны, человеческого компаньона, но приближаемся к полезному промежуточному состоянию «программирования, ускоренного знаниями». Однако я ставлю на то, что chatGPT (под любым именем LLM) дойдет до точки, когда компаньоны, специфичные для кода (например, CoPilot), могут либо не понадобиться, либо смешаться с chatGPT, где у них будет человеческая личность, которая совместно разрабатывает программное обеспечение. с вами «как с личностью» (а не как надстройка для браузера).