| |
|
|
| 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) |
| } |
|
|