Использование богатых интеграций LLM для повышения релевантности и надежности в Muse Chat

Unity Muse помогает вам исследовать, создавать идеи и итерации в 3D в режиме реального времени благодаря возможностям искусственного интеллекта. Muse Chat - это один из нескольких инструментов, которые можно использовать для ускорения процесса создания. Благодаря знаниям о Unity и редакторе Muse Chat станет вашим помощником, предоставляя полезную информацию, в том числе советы по отладке, использованию генерации кода для первого наброска и многое другое, и все это в контексте редактора Unity и вашего проекта.
Чтобы показать вам, как именно Muse Chat разработан для предоставления полезных решений, мы собираемся заглянуть под капот, чтобы узнать, как мы структурируем план для создания ответа. Мы также расскажем вам о наших текущих исследованиях и предстоящих разработках в области LLM.
Muse Chat построен как конвейер, состоящий из нескольких различных систем и интеграций Large Language Model (LLM) для планирования запросов и арбитража различных частей информации. Для каждого входящего запроса Chat разрабатывает план действий, определяющий формат предстоящего ответа на основе подборки редактора или предоставленной вами информации и проблемы, которую вы пытаетесь решить.
"Я создавал и кодировал все сам, используя Muse в качестве личного помощника. Конечно, меня поддерживали коллеги, но я не думаю, что смог бы добиться такого результата за столь короткое время, если бы рядом со мной не было Muse".
- Жессика Соуза, создательница игры Space Purr-suit
При сборе надежного ответа возникают две проблемы. Одна из них - поиск релевантной информации для создания ответа, а другая - обеспечение того, чтобы эта информация была полезно включена в ответ, исходя из контекста и истории разговора.
Знания Muse Chat собраны для решения обеих этих задач и содержат более 800 000 фрагментов информации, таких как разделы документации или фрагменты кода. Куски обрабатываются и обогащаются ссылками на окружающую информацию, так что каждый из них представляет собой полезную и самостоятельную единицу информации. Они каталогизированы как по содержанию, так и по уникальному контексту, прослеживаемому в документации. Она обеспечивает прозрачность и интерпретируемость системы, а также позволяет эффективно находить совместимую информацию. Смотрите схему и описание ниже, чтобы узнать, как устроена остальная часть нашего текущего трубопровода.

- ЗАПРОС: Ваш запрос поступил.
- КОНТЕКСТ РЕДАКТОРА: Если вы находитесь в редакторе, соответствующий контекст динамически извлекается из редактора вместе с запросом, чтобы передать Muse нужную информацию.
- РАСШИРЕНИЕ ЗАПРОСОВ: Система первоначального планирования выполняет расширение запросов, которое предназначено для получения точных планов. Мы поручаем LLM предпринять все возможные попытки воспроизвести формат каталога знаний и воссоздать идеальную структуру фрагмента для каждого шага. Такой подход позволяет системе вычислить вкрапление, которое передает нужный контекст, содержание и сценарий использования искомого фрагмента. Каждый из этих этапов плана используется для тонкого семантического поиска.
- ПОИСК ЗНАНИЙ: Чтобы найти релевантную информацию, мы используем симметричный семантический поиск и фильтрацию метаданных, чтобы получить фрагменты в нашем каталоге знаний, которые больше всего похожи на идеальный предполагаемый фрагмент, определенный на этапе расширения запроса.
- ФОРМУЛА: Чтобы подготовить окончательный вариант ответа, мы используем другой LLM для составления ответа, основанного на подробном конспекте, содержащем как отфильтрованные шаги оригинального плана, так и источники, необходимые для передачи соответствующей базовой информации.
- ОТВЕТ: Muse Chat отвечает на этот вопрос.
Чтобы углубиться в работу по обеспечению доступности Muse Chat в редакторе, мы представили второй этап конвейера - извлечение контекста из редактора. Добавив это в самое начало конвейера, мы анализируем запрос, чтобы определить, что нужно извлечь из редактора, и разбираем его, чтобы сообщить Muse о дальнейших шагах. Основываясь на ваших отзывах, мы начали с настройки проекта, параметров проекта, GameObjects/Prefabs и доступа к консоли.
Теперь, если у вас возникнет консольная ошибка с предупреждениями или сообщениями, просто щелкните соответствующую строку (строки) в консоли, чтобы добавить ошибку в выборку. В приведенном ниже примере мы вызвали ошибку из-за отсутствия фигурной скобки в скрипте.

Рассмотрим простой пример ответа на вопрос "Как создать скриптовую функцию и добавить ее в универсальный рендерер?" в новом разговоре в редакторе. Это будет преобразовано в шаги плана:
- ЗАПРОС: "Как создать скриптовую функцию, подходящую для моего конвейера рендеринга?"
- КОНТЕКСТ РЕДАКТОРА: Muse определяет, какой конвейер рендеринга используется, какая версия Unity запущена, какие настройки проекта имеют отношение к вопросу. Затем он извлекает динамический контекст вместе с любым выбором редактора.
- РАСШИРЕНИЕ ЗАПРОСОВ: LLM генерирует план со следующими шагами плана:
Ознакомьтесь с концепцией и назначением скриптовых функций для URP.
Объясните шаги по созданию функции со сценарием в URP.
Приведите пример, показывающий, как добавить скриптовую функцию в Universal Renderer.
- ПОИСК ЗНАНИЙ: В данном примере запрос выполняется путем выполнения шагов по получению информации из встраивания.
- ФОРМУЛА: LLM опосредует окончательный ответ.
- ОТВЕТ: Вы получите ответ, как показано ниже, вместе с фрагментом кода.

В приведенном выше примере с URP окончательный план ответа состоит из введения, построенного на основе раздела "Что такое Scriptable Renderer Feature" в документации URP, пошаговых инструкций в "Create a scriptable Renderer Feature and add it to the Universal Renderer" и инструкций в подразделе по окончательному добавлению пользовательской Renderer Feature в актив Universal Renderer.
Таким образом, мы можем эффективно обменивать общую информацию, полученную из базовых знаний LLM, на конкретные знания Unity из сторонних источников, касающиеся рекомендуемых подходов или деталей реализации. Несмотря на то, что появление иногда неточной информации в некоторой степени неизбежно при использовании LLM, наша система построена таким образом, чтобы минимизировать их частоту, полагаясь на доверенные знания Unity.
Мы работаем над созданием широкой экосистемы, состоящей из моделей, ориентированных на конкретные задачи. Расширяя возможности взаимодействия с редактором, мы хотим ускорить рабочий процесс, чтобы лучше удовлетворять ваши потребности. Мы считаем, что ключевым фактором для этого является принятие и развитие культуры, позволяющей быстро адаптироваться к исследованиям и промышленным разработкам для проведения быстрых экспериментов.
Muse Chat служит компаньоном для создания с помощью искусственного интеллекта прямо в редакторе. В настоящее время мы работаем над расширением контекста, который вы можете выбрать в редакторе, включая полную иерархию и окно проекта, а также связанный код для игрового объекта. Кроме того, мы инвестируем в повсеместные улучшения системы, улучшаем наши показатели производительности в области знаний Unity и генерации кода, а также готовимся к будущему с включенным поведением агента, чтобы Muse мог выполнять действия от вашего имени в редакторе.
На GDC мы показали, как можно использовать все пять возможностей Muse вместе, чтобы настроить игровой цикл в сцене сада нашего примера проекта URP. Посмотрите нашу сессию "Unity Muse: Ускорение создания прототипов в редакторе Unity с помощью AI", чтобы узнать, как можно использовать все возможности Muse для быстрой настройки сцены проекта и игрового процесса. Взаимодействие между функциями Muse будет только увеличиваться по мере того, как мы будем внедрять новые улучшения в Muse Chat.
Мы обновили процесс регистрации в Muse, чтобы упростить начало бесплатной пробной версии Muse и добавление пакетов Muse в ваши проекты. Посетите новую страницу Muse Explore, чтобы начать работу, и сообщите нам, что вы думаете о новейших возможностях и улучшениях в Discussions.