Код для ИИ с целью создания историй
Автор: Каваев ИгорьПользуйтесь на здоровье.
class StoryGenerator:
def __init__(self):
# 12 архетипов (по Кэрол Пирсон)
self.archetypes = {
"Герой": "Стремится к победе и славе.",
"Бунтарь": "Бросает вызов системе.",
"Сирота": "Ищет дом/семью.",
"Мудрец": "Ищет истину.",
"Славный малый": "Защищает простое добро.",
"Любовник": "Жертвует ради чувств.",
"Творец": "Создает новую реальность.",
"Шут": "Меняет мир через абсурд.",
"Опекун": "Спасает других.",
"Искатель": "Ищет смысл.",
"Правитель": "Контролирует порядок.",
"Маг": "Меняет правила игры."
}
# 36 ситуаций Польти (упрощённо)
self.polt_conflicts = [
"Спасение", "Месть", "Жертва", "Бунт",
"Погоня", "Тайна", "Воскрешение", "Потеря"
]
# Метафоры (а-ля Борхес)
self.metaphors = {
"Лабиринт": "Символ запутанного пути.",
"Зеркало": "Двойственность реальности.",
"Сон": "Грань между мирами.",
"Двойник": "Внутренняя/внешняя тень."
}
def generate_story(self, genre, main_archetype, secondary_archetype, conflict, metaphor):
# Проверка на шаблонность
if main_archetype == secondary_archetype:
raise ValueError("Архетипы не должны повторяться!")
# Шаг 1: Определение структуры
story_template = {
"Жанр": genre,
"Архетипы": {
"Основной": f"{main_archetype}: {self.archetypes[main_archetype]}",
"Второстепенный": f"{secondary_archetype}: {self.archetypes[secondary_archetype]}"
},
"Конфликт": f"{conflict} ({self.polt_conflicts[conflict]})",
"Метафора": f"{metaphor}: {self.metaphors[metaphor]}",
"Акт 1 (Завязка)": "",
"Акт 2 (Конфликт)": "",
"Акт 3 (Катарсис)": ""
}
# Шаг 2: Заполнение актов
story_template["Акт 1 (Завязка)"] = (
f"{main_archetype} в обычном мире. "
f"Триггер: {self.polt_conflicts[conflict]}. "
f"Метафора: {metaphor}."
)
story_template["Акт 2 (Конфликт)"] = (
f"{main_archetype} и {secondary_archetype} сталкиваются с серией препятствий. "
f"Кульминация: {self.metaphors[metaphor]}"
)
story_template["Акт 3 (Катарсис)"] = (
f"Жертва/Выбор: {main_archetype} трансформируется. "
f"Итог: Новый статус-кво через {self.metaphors[metaphor].split('.')[0]}."
)
return story_template
# Пример использования
generator = StoryGenerator()
# Параметры для истории (можно менять)
story = generator.generate_story(
genre="Военная драма",
main_archetype="Славный малый",
secondary_archetype="Мудрец",
conflict=1, # Индекс из polt_conflicts (Месть)
metaphor="Лабиринт"
)
# Вывод результата
print("ШАБЛОН ИСТОРИИ:")
print("---------------")
print(f"Жанр: {story['Жанр']}")
print(f"Архетипы:\n- {story['Архетипы']['Основной']}\n- {story['Архетипы']['Второстепенный']}")
print(f"Конфликт: {story['Конфликт']}")
print(f"Метафора: {story['Метафора']}")
print("\nСтруктура:")
print(f"Акт 1: {story['Акт 1 (Завязка)']}")
print(f"Акт 2: {story['Акт 2 (Конфликт)']}")
print(f"Акт 3: {story['Акт 3 (Катарсис)']}")