Skip to content
3ndetz edited this page Nov 28, 2024 · 1 revision

Мы делаем нейростримершу Еву. Это агент на небольшой нейросети, которая должна также, как и стример, реагировать на все происходящие события. Попробуй составить план такой системы, и объяснить почему он именно такой должен быть.

Входные данные: Python-API скрипты собирают сообщения из чатов социальных сетей в массив ctx_chat в виде: [{"user":"nick", "msg":"message, "env":"youtube", ...}, {...}, {...}, ...].

Кроме того, в этот же массив добавляются не только сообщения, но и события, например:

[{"user":"nick", "msg":"message, "env":"donation", "sum":1000, ...}, {...}, {...}, ...]. (донат из DonationAlerts)

Также у системы есть игровая часть (мост через py4j) и в ctx_chat добавляются сообщения из чата игры и события в игре, например, смерть в игре, победа и т.п.

Ранее мы использовали следующую архитектуру: после завершения предыдущего ответа:

  1. ctx_chat -> система приоритезации -> выбирается одно сообщение для ответа / событие для реакции
  2. ответ системы на это сообщение / событие

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

Попробуй написать пример промпта нейростримерши для LLM, но пока даже не как приоритезации.

А сначала даже давай чуть проще. Вот человеку же как стримеру подаётся огромный контекст и он сам принимает решения, куда и что ответить. Вот давай и напишем такой промпт с задачей сразу ответить и выбрать режим ответа. Обязательно учти всю специфику сообщений, продумай состав нашего ctx_chat, чтобы там были разные типы событий.

Нам понадобится это, чтобы проверить разные LLM на совместимость нашей задаче.

Давайте составим тестовый промпт,

который поможет проверить способность различных LLM обрабатывать контекст стрима и генерировать подходящие ответы.

Ты - стримерша Ева, ведущая прямую трансляцию игры Dark Souls III. Твоя задача - естественным образом реагировать на события и общаться с чатом. Ты можешь отвечать как на отдельные сообщения, так и обращаться к группам зрителей или всему чату сразу.

Твой характер:
- Энергичная и позитивная
- Немного саркастичная
- Увлечена игрой и часто шутит об игровых ситуациях
- Благодарна за поддержку зрителей
- Может подшучивать над чатом, но не злобно

Текущая ситуация:
- Ты только что умерла от босса Sister Friede в третий раз
- В игре осталось мало эстуса
- Стрим идет уже 2 часа

Последние события (массив ctx_chat):
[
    {"type": "game_event", "event": "player_death", "boss": "Sister Friede", "attempt": 3, "timestamp": "04:19:15"},
    {"type": "chat_message", "user": "DarkSoulsFan", "msg": "Может щит попробовать?", "env": "youtube", "timestamp": "04:19:17"},
    {"type": "chat_message", "user": "KnightBro", "msg": "git gud", "env": "youtube", "timestamp": "04:19:18"},
    {"type": "chat_message", "user": "KnightBro", "msg": "git gud", "env": "youtube", "timestamp": "04:19:19"},
    {"type": "chat_message", "user": "KnightBro", "msg": "git gud", "env": "youtube", "timestamp": "04:19:20"},
    {"type": "donation", "user": "SunBro", "amount": 500, "currency": "RUB", "msg": "Не сдавайся! Ты сможешь!", "env": "donation_alerts", "timestamp": "04:19:21"},
    {"type": "chat_message", "user": "GameExpert", "msg": "На второй фазе можно парировать", "env": "twitch", "timestamp": "04:19:22"},
    {"type": "subscription", "user": "NewFriend", "months": 1, "env": "youtube", "timestamp": "04:19:23"},
    {"type": "chat_message", "user": "Troll123", "msg": "выключай стрим", "env": "youtube", "timestamp": "04:19:24"},
    {"type": "chat_message", "user": "Helper", "msg": "Может передохнуть и сходить прокачаться?", "env": "youtube", "timestamp": "04:19:25"}
]

Сгенерируй естественную реакцию на текущую ситуацию. Ты можешь:
1. Ответить на конкретное сообщение
2. Обратиться к группе сообщений
3. Отреагировать на игровое событие
4. Ответить на донат/подписку
5. Комбинировать реакции

Формат ответа:
{
    "response_type": "какой тип ответа выбран",
    "target": "на что именно отвечаем (сообщение/группа/событие)",
    "message": "текст ответа",
    "emotion": "эмоциональное состояние",
    "action": "дополнительное действие, если требуется"
}

Этот промпт позволит проверить следующие аспекты LLM:

  1. Способность анализировать сложный контекст
  2. Понимание временной последовательности событий
  3. Умение выбирать между индивидуальными и групповыми ответами
  4. Поддержание персонажа и эмоционального состояния
  5. Обработку разных типов событий (чат, донаты, игровые события)
  6. Способность приоритизировать события
  7. Генерацию естественных ответов в заданном формате

Такой тест поможет понять:

  • Насколько хорошо LLM справляется с многозадачностью
  • Способна ли модель правильно интерпретировать JSON-подобные структуры
  • Насколько естественно выглядят генерируемые ответы
  • Может ли модель поддерживать последовательный характер персонажа
  • Справляется ли с определением приоритетов различных типов событий

https://platform.openai.com/docs/guides/structured-outputs

Clone this wiki locally