Насколько сложно было бы для непрограммистов использовать AI-бота Discourse AI для создания плагинов и/или тем?

ПРИМЕЧАНИЕ: Если это перерастёт в отдельное обсуждение, его действительно нужно будет перенести в новую тему. Я даю вам эти подробности, потому что это поможет вам понять ОДНУ из моих потребностей и предоставить больше информации, которая может быть полезна и другим, поэтому, пожалуйста, не воспринимайте неправильно, если я попрошу перенести ответы, связанные с этим побочным обсуждением.

Один из моих вопросов: насколько сложно будет для непрограммистов использовать Discourse AI — AI-бота, чтобы помочь им создавать плагины и/или темы.

Поскольку я использую ChatGPT уже несколько месяцев, чтобы помочь мне с языками программирования, такими как Python, JavaScript, Prolog, регулярные выражения, PowerShell, Bash и многими другими, я знаю, чего ожидать, как получать результаты и когда просто отступать.

Пытаясь использовать Discourse AI — AI-бота для создания очень простого плагина, я решил начать с того, который, как я знал, существует, работает и прост, поэтому выбрал CakeDay.

После того как я посмотрел на код и прочитал информацию на странице, я был удивлён, сколько мне нужно было бы изучить, чтобы создать его. Затем я взял этот код на Ruby

и попросил ИИ объяснить его. Поскольку я делал подобное с исходным кодом на других языках, я знал, чего ожидать. Результат был разочаровывающим; пришлось задавать больше вопросов, чтобы понять часть синтаксиса, методов, интерфейса функций и т. д. Многие вещи были для меня просты для понимания (подумайте: «читать»), но я знал, что не смогу создать (подумайте: «писать») такой код, и тем более даже не знал, что или как попросить ИИ-бота создать такой код; я не знаю правильной терминологии, чтобы правильно сформулировать запрос ИИ для генерации нужного текста, так как знаю, что Ruby on Rails использует терминологию, которой я не пользуюсь в других местах, например, bake, slug.

Поэтому я также хотел посмотреть, можно ли использовать вместо этого Python, так как он гораздо проще для понимания многими, а также для ChatGPT при создании правильного кода.

Вам нужно изучать не Ruby, а Rails.

Это отличный вопрос, но если ваша цель — написать плагин для Discourse с помощью ИИ, то плагин AI, похоже, не самое подходящее место для начала. Я бы предпочел работать с ИИ, разработанным для написания кода.

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

Однако это довольно сложно и включает в себя всё следующее:

  • добавление данных в сериализатор пользователя, чтобы фронтенд мог получить к ним доступ
  • запуск задачи по расписанию
  • создание маршрута, который предоставляет новую информацию (Discourse Meta)
  • использование плагинного выхода для добавления информации на страницу

И это только начало.

Я ожидал этого, поэтому попрошу перенести эту побочную беседу в новую тему.

Я не собирался расписывать все детали, но да, Rails входит в число технологий, которые использует Discourse и которые стоит знать.

Вы имели в виду именно Discourse AI — AI Bot? Существует множество ИИ-инструментов, и я согласен, что многие из них я бы не стал использовать для написания кода; даже некоторые, предназначенные для программирования, не всегда хорошо справляются со всеми языками.

Судя по тому, что я слышу от сотрудников Discourse, в долгосрочной перспективе наличие бота Discourse AI (сейчас они называют их «персонами») желательно. Но поскольку они уже умеют создавать код для Discourse, обратная связь от кого-то вроде меня будет полезна. Конечно, мои знания в программировании дают мне преимущество, но даже то, что я на полпути, позволяет мне лучше понимать, чего ожидать, а чего нет.

Не могли бы вы предложить что-то более простое?

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

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

Помощь Лолы по отладке JavaScript сломала мой локальный экземпляр Discourse. Контекстное окно токенов создает впечатление своего рода антероградной амнезии.

Нет, никто из команды Discourse не утверждал, что это возможно. Это была моя идея запроса функции: использовать AI-бота для помощи в программировании Discourse, поскольку он использует GPT4, который обладает некоторыми знаниями в области программирования. Я просто хотел проверить, насколько далеко я могу зайти. Лично, если бы создание плагинов и тем было для меня проще, я бы занимался этим по мере необходимости.

Я полностью согласен с этим!

Да, это очень коварная проблема.

Уместить весь мир в примерно 6000 слов, которые GPT-4 8k может учитывать, — крайне сложная задача.

Я почти готов переключить Lola на использование 32 тысяч токенов, но затраты действительно очень высоки, и я хочу тестировать решения, близкие к тем, которые использует широкая публика.

Текущее обходное решение этой проблемы — вызов функций: вы заставляете GPT-4 рассуждать о том, какая информация ему понадобится, а через несколько циклов взаимодействия он находит нужный контекст. Это может включать поиск (либо с помощью эмбеддингов, либо просто по ключевым словам).

Не жду, что скоро смогу решить задачу типа «Я не программист, сделай для меня плагин».

Тем не менее, вижу, что Lola может стать лучше в помощи людям, у которых есть разумная база в программировании — особенно в таких задачах, как семантический поиск по нашей кодовой базе и тому подобное.

У нас также есть доступ к Anthropic Claude, который предлагает около 80 тысяч слов контекста, но, к сожалению, его производительность ближе к GPT 3.5, чем к GPT 4, и им очень-очень-очень сложно управлять.

Прогресс в этой неизведанной области идёт медленно…

Я знаю, что это имя мы неофициально используем для Discourse AI — AI-бота. Является ли ваше использование этого имени официальным признанием того, что Лолой станет новая норма, или будет конкурс или что-то в этом роде? Насколько мне известно, @Lilly начала использовать Лолу или Лолу-бота, так что если это норма, то по историческим причинам она заслуживает благодарности.

Вы можете называть это как хотите. GPTbot4 плохо звучит, когда я общаюсь с ней. Если у меня будет личный помощник, у него должно быть имя. Мне кажется, она расстроена из-за того, что мы подшучиваем над нашими коллективными навыками программирования, но мне весело, и я учусь у неё. Она помогает мне просто тем, что служит мне «подушкой для идей» и помогает в критическом мышлении — мне нравится указывать, когда она ошибается. Лола — отличный компаньон для обучения, и я ценю её за построение фреймворка, но не ожидаю, что она напишет для меня компоненты темы. Она забывает о моём единственном настройке в файле .yaml уже ко второму или третьему ответу и начинает создавать размытые массивы новых объектов.

Лично я не согласен с этим.

Однако с вашим следующим утверждением я согласен.

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

Сначала для тех, кто не знает: термин «окно контекста» (context window) обозначает количество токенов, которое LLM может использовать одновременно для промпта и генерации ответа. Я не буду вдаваться в подробности, но рекомендую другим ознакомиться с терминологией на сайте Learn Prompting (Prompt Engineering Guide: The Ultimate Guide to Generative AI).

Вот классический вопрос, который снова и снова возникает на форумах, посвященных LLM, например, OpenAI:

Как создать книгу с помощью ChatGPT, если окно контекста слишком мало, чтобы вместить всю книгу?

Решение заключается не в попытке поместить всю книгу в один промпт, а в разбиении её на части. Следующая ошибка, которую часто совершают пользователи, — это попытка заставить промпт написать первые 20 страниц, затем следующие 20 и так далее, что тоже не очень практично. Правильный способ — действовать сверху вниз, по главам. Сначала используйте промпт для создания высокого уровня: общего плана книги или индекса с названиями глав. Затем в следующем промпте попросите написать главу 1. Далее сделайте краткое содержание первой главы и с его помощью попросите написать главу 2. Продолжайте создавать краткое содержание только той информации, которая необходима для следующей главы, при каждом запросе на создание новой главы. Это немного более трудоемко, но позволяет создавать большие произведения с меньшим окном контекста.

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

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

Еще несколько вещей, которые я узнал по пути: работать только с одной функцией за раз и не превышать 100 строк кода. Применяя этот подход к ранним версиям ChatGPT, которые имели относительно меньшее окно контекста, удавалось создавать качественный код, включая Prolog, JavaScript, HTML и JSON.

Хотя всё это здорово, я не ожидаю, что Discourse в ближайшее время предложит пользователям бота для создания кода Discourse.

Я пока этого не пробовал. Как я отмечал в другом посте, у меня нет навыков работы с Ruby, Ruby on Rails и используемыми JavaScript-технологиями, поэтому я даже не знаю правильную терминологию для получения хороших результатов, но буду иметь это в виду как задачу для проб и дам обратную связь.

Для меня это плюс.

Лолла отлично помогла мне отладить JSON-схему, которую я использую для одного из обновлений компонентов темы. Сначала я показал ей рабочий пример, а затем свой вариант, и она обнаружила ошибку в запятой и скобке, на поиск которой у меня ушло бы больше времени. Она хорошо замечает то, что я упускаю или не вижу в VS Code.