[AIGC] Последние результаты AI-Agents - Интерпретация исходного кода Stanford AI Town
[AIGC] Последние результаты AI-Agents - Интерпретация исходного кода Stanford AI Town

То, что я писал ранее:

Ранее в этом году исследователи из Стэнфорда и Google создали миниатюрную версию The Sims. RPG виртуальный мир, в котором 25 персонажи по GPT и Контроль пользовательского кода,и вarxivВариант статьи был представлен на,Это вызвало широкое обсуждение игр AIGC+;

Август,Этот проект находится вGitHubОфициально с открытым исходным кодом,Хотя новостей еще много,Однако относительно мало дискуссий о технологии и методах реализации.,До сих пор я видел только одного замечательного человека на Чжиху на отечественных сайтах.изСтолбецИметь соответствующие концепции и процессы генерациииз Интерпретация,В этой статье также будут приведены некоторые анализы автора.

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

PS: 目前还有一个AIмаленький городокPlusВерсияизAI-TownПроект такжеGitHubОткрытый исходный код,Это более масштабируемо,Автор представит этот проект в следующей статье.


общая архитектура

Средой этого проекта является Python3.9.12, игровая логика разработана движком H5 Phaser3, а серверная часть использует Django в качестве сервера для предоставления веб-сервисов.

Как показано на рисунке ниже, поскольку в самой «игре» нет пользовательских операций, страница H5 предназначена только для отображения;

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

Связи во всей архитектуре не длинные, и пользователям очень мало вещей, которые нужно поддерживать самостоятельно. «Запускать» проект очень легко, но это также показывает, что масштабируемость и свобода проекта невысоки.


Режим работы

Веб-сервисы

Первый - это Django за кулисами Сервер, запускай environment/frontend_server в каталоге

Язык кода:shell
копировать
python manage.py runserver

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

После успешного запуска команды вы можете получить доступ к URL-адресу, установленному Django, в браузере и увидеть интерфейс инициализации всего города.

Уведомление:открыть эту страницуизTABЛучше всего оставить на рабочем столе,Не сворачивайте и не скрывайте,Если обнаружено, что страница TAB не находится в активном состоянии,,Фоновый процесс вычислений зависнет.

Simulation Server

Предыдущий запуск из Веб-сервисов фактически предоставляет только среду песочницы по умолчанию.,Эта среда статична.,Он будет отображаться после обновления трека действий агентов.,Таким образом, этот этап запуска заключается в создании и отправке инструкций интеллектуальному агенту.,В проекте он называется Simulation Server.

Чтобы запустить эту программу, вам нужно запустить ее в каталоге reverie/backend_server.

Язык кода:shell
копировать
python reverie.py

Процесс блокировки, управляемый пользователем, обычно делится на два этапа:

Сначала вам нужно выбрать предустановленную сцену, например официальный пример, чтобы открыть сцену с тремя NPC и ввести

Язык кода:shell
копировать
base_the_ville_isabella_maria_klaus

Затем вам нужно ввести собственное имя, чтобы уникально представлять эту симуляцию (обратите внимание, что это имя будет использоваться в качестве пути сохранения всех файлов этой симуляции. Имя не может быть одинаковым, и «память» этой симуляции также может быть). быть унаследованы позже.

Язык кода:shell
копировать
test-simulation // Вы можете выбрать любой

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

Язык кода:shell
копировать
run 10 //Имитируем 10 шагов поведения NPC

После выполнения этой команды обратите внимание, что NPC не будет двигаться сразу. Программа сначала вызовет интерфейс OpenAI, чтобы сформулировать план действий на весь день, а затем шаг за шагом смоделирует поведение NPC.

Через некоторое время NPC выполнит соответствующие действия в соответствии с инструкциями. Если вы хотите продолжить симуляцию, продолжайте вводить приведенные выше инструкции для симуляции.

Наконец, в проекте также предусмотрена функция сохранения и воспроизведения процесса моделирования, а также вы можете продолжить последнее моделирование. Я не буду здесь вдаваться в подробности. Ниже в основном обсуждается, как реализуется весь проект.


Анализ кода

Веб-сервисы

Давайте сначала посмотрим, как Веб-сервисы построены на основе Django.,Служитьиз Запустить порталдокументдаmanage.py

Каталог — это стандартная структура каталогов Django.,urlКонфигурация находится по адресуfrontend_server/settings/urls.pyдокумент,переписыватьсяизhandlerродыfrontend_server/translator/views.pyдокумент Вниз

Основные функции:

  • simulator_home(переписыватьсяизhandlerдаhome) - Основной интерфейс города обновляет положение и действия NPC в реальном времени. Логика этой функции относительно проста, хранилище считывается отдельно. каталоге последнего документа среды NPCи, отображаемого на странице
  • replay(переписыватьсяизhandlerдаreplay)пройти спецификациюизsim_code,То есть указанный пользователем смоделированный идентификатор.,Используется для воспроизведения соответствующего процесса моделирования.

Остальные методы также включают официальные примеры и т.п., которые здесь подробно описываться не будут.

игровой движок

Потому что по сути это "игра", но НПЦ управляется AI Agent Захвачено, поэтому карты, NPC Конструкция контроллера основана на Phaser3 игровой движок, который в основном используется для создания HTML5-игр. Используемый язык — JS/TS. Я не буду подробно рассказывать о его использовании. Если вам интересно, вы можете перейти к проекту. environment/frontend_server/templates Посмотреть код игры в каталоге

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

Модуль AI-агента

Ядро AI Agent Модуль запускается из основной функции. Входной файл находится внутри. reverie/reverie.py,что создает ReverieServer объекта и выполнять операции инициализации, включая, помимо прочего, инициализацию состояния агента, карты, конфигурации системы и т. д., а затем вызов ReverieServer из open_server Метод, запуск основного цикла

Весь процесс показан на рисунке:

Модуль работает под управлением командной строки пользователя.,Весь цикл не будет моделироваться сразу,Вместо этого время работы (время игры) определяется на основе количества шагов, введенных пользователем. Здесь есть один очень дружелюбный момент:,Потому что после работы в обычном режиме весь модуль находится в состоянии черного ящика.,и в это нельзя вмешиваться,Но на самом деле, заглянув в исходный код, можно обнаружить, что различные типы debug Режим доступен для выбора пользователями, и можно увидеть промежуточное состояние и процесс вывода. Конкретные команды можно прочитать. reverie.py документ

Самая важная часть основного цикла — вызов agent.move() После функции, как сделать каждый Agent Для принятия соответствующих решений здесь необходимо ввести несколько основных классов (структур данных):

  • Класс Maze (класс карты) Mazeкласс использует определенныйизструктура данных для представления всей песочницымиризкарта,Я случайно увидел, что блоггер, который писал об анализе этого проекта, обновил статью о структуре карты.,Введение концепции может быть непосредственно отнесено кЭта статья

其实关键点就да为了便于позволятьAgentвоплощениеиз Понимание песочницымиризпространственная структура,Вся 2D-карта отображается в следующую древовидную структуру.,Каждый тайл (или каждая координата) на карте,будет содержать эту информацию

Язык кода:txt
копировать
> мир World -> область Sector -> место Arenas -> вещь Game Objects

Помимо создания такой структуры данных, класс Maze,Также предусмотрены некоторые распространенные методы.,Например, получить определенную координатную точку из приведенной выше структурной информации, получить все координаты в определенном диапазоне видимости (например, в поле зрения персонажа). в определенную точку координат、Установить определенную точку координатизвещьстатус и т. д.,相当于提供了一个карта以及与карта交互изинтерфейс

  • Scratch,AssociativeMemory,MemoryTree класс (поток памяти) Эти три класса связаны с построением потока памяти.,Scratch Класс представляет кратковременную память,AssociativeMemory Представляет ассоциативную память,MemoryTree Представляет пространственную память, которая работает вместе в агенте принятия решений. Scratch 类даAgentизкратковременная память,Включает в себя отдельных лиц имир Связанныйизпараметр、Персональный план (долгосрочный、в тот день、почасовой план)、В настоящее время выполняет действие, уже запланированное по пути действия и т. д.,并提供所有параметриз Исправлятьинтерфейс; AssociativeMemory Класс – это Агент ассоциативной памяти, его основная функция – поддержание Список объектов ConceptNode. Узлы ConceptNode могут быть событиями, идеями или разговорами. Ниже приведен пример ConceptNode:

MemoryTree 类даAgentдлямирпространственная структураизограниченная память(Они не обязательно понимают всюмиризструктура),его обслуживаниеиз空间记忆структураимирструктура类似,Это тоже древовидная структура

  • Класс Персона (Класс Агента) Самая важная категория,Он определяет, как Агент выполняет действия.,В основном цикле будет вызываться метод перемещения каждого класса Persona.,Диаграмма просто представляет входные и выходные данные.

Вы можете видеть, что метод перемещения передает текущее состояние карты.、список объектов агента、и текущее местоположениеивремя,Решите агентизационное действие

В частности, метод и процесс можно разделить на:

  1. Определите, является ли текущий день новым днем ​​(или более особенным днем) на основе времени,в первый день),Долгосрочное планирование/планирование в тот же день требуется, когда наступает новый день,Это соответствует человеческим привычкам
  2. вызовperceiveметод(Восприятие),Этот метод используется для определения того, что происходит вокруг Агента.,и отсортировать их по диапазону появления,Возвращает список ConceptNode (описан выше).
  3. вызовretrieveметод,Получите воспринимаемые мысли пользователя на основе метода восприятия.,т.е. список ConceptNode в качестве входных данных,Вывод отсортированного набора связанных событий и идей.
  4. вызовplanметод(план),Этот метод имитирует мыслительный процесс человека.,Возьмите метод извлечения из вывода в качестве входных данных,в целом делится на несколько этапов: Если это новый день,Стройте долгосрочные планы ⇒ Если текущие действия прекратятся.,Определите следующее действие, которое необходимо выполнить ⇒ на основе текущего воспринимаемого события.,Решите, на чем сосредоточиться в данный момент ⇒ На событии, на котором вы сейчас сосредоточены.,решить, какое действие предпринять(Есть три действия:поговорить с кем-то、реагировать на события、Нетреагировать на события)
  5. вызовreflectметод,На китайский это следует перевести как «отражение».,Также обратитесь кЭта статьяконцепция отраженияизобъяснять; С точки зрения непрофессионала,Вышеупомянутый мыслительный процесс представляет собой поверхностный уровень восприятия и реакции на события.,Но у людей есть методы мышления более высокого уровня, такие как подведение итогов, уточнение и исследование потенциальных намерений.,«Отражение» означает имитацию такого образа мышления.,Думая на более высоком уровне о недавних событиях,И сохраняйте результаты мышления как часть потока памяти.
  6. Вызов метода выполнения,На данный момент агент решил, что он хочет делать.,В методе выполнения оптимальный путь будет выбран на основе пункта назначения.,Или подожди, где ты
Интерактивный модуль LLM

Далее мы в основном изучим,Как построить подсказку и взаимодействовать с GPT в проекте,Эта часть будет посвящена объяснению кода.

Из пути вызова кода видно, что основное использование интерфейсаиздокумента, связанного с GPT: converse.py(Генерация диалога),plan.py(плангенерировать),reflect.py(Отражение),Код очень подробный,Ниже приведен типичный случай вызова для каждого документа:

plan.py 包含进行每日план、почасовой Создавайте шаблоны вопросов и ответов, такие как план, конкретные действия и т. д.,В качестве примера возьмем ежедневный план:

Это указанный формат запроса,в начале дня,Соответствующие параметры будут переданы, и GPT продолжит запись.,Здесь важнееизда Commonset и Lifestyle

в Commonsetда一个верно角色из Свернуть набор описаний,Включите следующую частичную информацию

Lifestyleявляется более кратким,Как правило, это описание характера и образа жизни, привычек.

на стадии планирования,В основном через предустановленные жизненные привычки агента и подсказку по созданию предыстории персонажа.,План дня продолжает GPT (примечание автора: степень свободы плана здесь на самом деле достаточно низкая),GPT了解Нет到除了设定中给到из Место/Кроме персонажейиз Другая информация)

converse.pyпредоставлено вGPTгенерировать可能产生из Диалоги персонажейизинтерфейс,Он также включает в себя обобщение ключевых моментов диалога персонажей, обобщение взаимоотношений персонажей посредством диалога и т. д.,Ниже приведен пример генерации диалога персонажа из интерфейса.

здесь из <INPUT 2> обратитесь кизда在此之前да否有已经发生过издиалог,<INPUT 3>изContext则даобратитесь к该диалог发生из上Вниз文(время、Место、Персонажи и т. д.),实际决定这段диалогизтема обсужденияиз其实да <INPUT 6>и<INPUT 10>,Эти два параметра берутся из результатов другого вызова GPT.

reflect.pyизверноGPTизвызов过程同样可以参考Эта статья

Ссылаясь на описание процесса отражения в цитируемой статье, все шаги 2 и 4 содержат вызовы GPT.

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


Урожай и проблемы

Урожай

Этот проект демонстрирует создание AI-агента на примере.,有很多для现实миричеловеческий разумиз抽象да可以借鉴из,Конкретное место:

  • Как построить поток памяти,Поскольку агент может принимать ограниченный контекст,В настоящее время большие языковые модели не могут преодолеть это ограничение. Через долговременную память/ассоциативную память/пространственную память.,и «рефлексивный» способ обобщения воспоминаний более высокого уровня.,Обеспечьте точный и оптимизированный контекст для принятия агентом решений.,Этому стоит научиться из
  • реальностьмир Абстрактно как деревоиз数据структура,Помогает агенту быстро понять окружающую среду
  • план и реакция,Чтобы позволить Агенту генерировать заслуживающие доверия модели поведения,Генерация долгосрочных/краткосрочных планов сверху вниз для каждого Агента,И когда Агент сталкивается с некоторыми чрезвычайными ситуациями,,Может совмещать планы и чрезвычайные ситуации для принятия поведенческих решений (это тоже соответствует человеческим привычкам, хотя комментарии к коду проекта очень подробные,Но действительно есть некоторые ошибки в мастер-процессе карты.
  • LLM отражает, что мудрость ограничена данным контекстом.,LLM не так сильно генерирует поведение и диалог.,Лучше сказать, что информация подается в сводном контексте.,и сделать выбор,Или скажем так,Agent Интеллект больше зависит от способа кодирования проекта, чем от LLM изспособность。可能我们для大模型有更多изожидания,Например, дано только одномирвид,Уменьшите некоторые ограничения,позволять Agent Можете ли вы иметь больше места для свободной игры?
  • Агентиз"персонажа",имеющего разные личностииз Agent В настоящее время в проекте не рассматривается, имеет ли конкретная вещь дифференцированную реакцию. Agent Уделяйте больше внимания соответствию логике «человеческого» поведения.

я участвуюСпециальный тренировочный лагерь Tencent Technology Creation 2023, Второй выпуск Конкурс эссе, получивший приз, чтобы разделить призовой фонд в 10 000 юаней и часы с клавиатурой

boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0