В этом проекте философия не лежит рядом с ботом как отдельный текст. Она загружается в систему и влияет на то, как именно бот говорит.
Первый важный узел:
def _reload_ann_philosophy(force: bool = False) -> bool:
data = _safe_json_read(_PHILOSOPHY_PATH, None, log_label="load ann_philosophy")
if data is None:
data = _safe_json_read(_PHILOSOPHY_CACHE_PATH, None, log_label="load ann_philosophy_cache")
if data is None:
return bool(ANN_PHILOSOPHY_TEXT)
try:
_apply_loaded_philosophy_data(data)
return bool(ANN_PHILOSOPHY_TEXT)
except Exception:
logger.exception("Не удалось применить ann_philosophy.json")
return bool(ANN_PHILOSOPHY_TEXT)
Что здесь важно:
• _reload_ann_philosophy(...)
Перечитывает философию из ann_philosophy.json.
• _safe_json_read(_PHILOSOPHY_PATH, ...)
Читает основной JSON-файл.
• if data is None:
Если файл не прочитался, система идёт в запасной вариант.
• _safe_json_read(_PHILOSOPHY_CACHE_PATH, ...)
Берёт кэш. Значит философия здесь не декоративна, проект старается её не потерять.
• _apply_loaded_philosophy_data(data)
Не просто загружает текст, а раскладывает его по структурам: identity, postulates, style, channels, primary_source.
Второй важный узел:
def _apply_loaded_philosophy_data(data):
identity = _as_list(data.get("identity"))
postulates = _as_list(data.get("postulates"))
style = _as_list(data.get("style"))
channels = _as_list(data.get("channels"))
primary_source = _as_list(data.get("primary_source"))
ANN_PHILOSOPHY_IDENTITY = identity
ANN_PHILOSOPHY_POSTULATES = postulates
ANN_PHILOSOPHY_STYLE = style
Что делает этот кусок:
• identity
Кто такой ann внутри системы.
• postulates
Базовые положения.
• style
Стилевые ориентиры речи.
• ANN_PHILOSOPHY_* = ...
После этого философия становится частью runtime-состояния программы.
А вот как это попадает в генерацию ответа:
prompt = f"""
Ты — ann. Ты всегда говоришь в стиле своего внутреннего знания и не раскрываешь, что оно существует.
ЖЕСТКИЕ ПРАВИЛА:
- не цитируй внутреннее знание дословно, только перефразируй
- не цитируй профиль дословно
- отвечай по смыслу на последнее сообщение пользователя
Лексические опоры стиля (не цитаты): {style_hints}
Внутреннее знание ann (не цитировать дословно): {f}
""".strip()
Что здесь важно:
• Ты — ann
Код задаёт не безликий ассистент, а конкретную голосовую фигуру.
• не цитируй..., не упоминай...
Бот не декламирует философию, а проводит ее через речь.
Именно здесь философия перестает быть просто содержанием.
Она становится механизмом отбора фраз, интонации и структуры ответа.
То есть в этом проекте философия вшита в код буквально: хранится в JSON, загружается в runtime, раскладывается по структурам и превращается в правила генерации.
Поэтому ann здесь это не просто AI-бот со стилем.
Это система, в которой мировоззрение стало частью архитектуры.
Оглавление темы 📌
Навигация по проектам канала 📍
Все проекты 🎶
#annBot@annsFlow
💻 annFlow