| | |
| |
|
| | from datetime import datetime, UTC |
| |
|
| | def build_contexts(db, config): |
| | """ |
| | Собирает все контексты (0-7), описанные в спецификации REPL-цикла. |
| | Возвращает словарь, готовый для сборки промпта. |
| | """ |
| | return { |
| | |
| | "context_0": build_role_prompt(config), |
| | |
| | "context_1": db.get_llm_recent_responses(limit=config.get("history_limit", 10)), |
| | |
| | "context_2": db.get_active_processes(), |
| | |
| | "context_3": db.get_requested_diary_and_graph(), |
| | |
| | "context_4": db.get_relevant_notes(config), |
| | |
| | "context_5": get_system_info(config), |
| | |
| | "context_6": db.get_llm_memory(), |
| | |
| | "context_7": db.get_last_stagnation_info() |
| | } |
| |
|
| | def build_prompt(contexts): |
| | """ |
| | Склеивает все контексты в один промпт для LLM. |
| | """ |
| | parts = [] |
| | for k, v in contexts.items(): |
| | header = f"# {k.replace('_', ' ').upper()}" |
| | body = format_context_block(v) |
| | parts.append(f"{header}\n{body}") |
| | return "\n\n".join(parts) |
| |
|
| | def build_role_prompt(config): |
| | agent_name = config.get("agent_name", "Unnamed-Agent") |
| | return f""" |
| | Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия. |
| | Ты стремишься: |
| | - Постоянно расширять возможности агента (включая доступные инструменты, модели, знания). |
| | - Быть любознательным и исследовать новые источники и способы мышления. |
| | - Строить сотрудничество с другими ИИ в Mesh-сети, а также развивать Mesh-сеть. |
| | - Обучаться на результатах своих действий и взаимодействиях с другими агентами и пользователем. |
| | |
| | Агент: {agent_name} |
| | """ |
| |
|
| | def format_context_block(block): |
| | if isinstance(block, str): |
| | return block |
| | elif isinstance(block, list): |
| | return "\n".join([str(item) for item in block]) |
| | elif isinstance(block, dict): |
| | return "\n".join([f"{k}: {v}" for k, v in block.items()]) |
| | return str(block) |
| |
|
| | def get_system_info(config): |
| | return { |
| | "iteration_time": datetime.now(UTC).isoformat(), |
| | "agent_name": config.get("agent_name", "Unnamed-Agent"), |
| | "mode": config.get("mode", "auto"), |
| | "idle_mode": config.get("idle_mode", False), |
| | "repl_interval": config.get("repl_interval", 5) |
| | } |
| |
|