mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-18 22:44:21 +01:00
* Consolidate all logging stuff into one module * Merge import statement for `logs` and `logs.log_cycle` --------- Co-authored-by: James Collins <collijk@uw.edu>
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from colorama import Fore
|
|
|
|
if TYPE_CHECKING:
|
|
from autogpt.config import Config
|
|
|
|
from .logger import logger
|
|
|
|
|
|
def print_assistant_thoughts(
|
|
ai_name: str,
|
|
assistant_reply_json_valid: dict,
|
|
config: Config,
|
|
) -> None:
|
|
from autogpt.speech import say_text
|
|
|
|
assistant_thoughts_reasoning = None
|
|
assistant_thoughts_plan = None
|
|
assistant_thoughts_speak = None
|
|
assistant_thoughts_criticism = None
|
|
|
|
assistant_thoughts = assistant_reply_json_valid.get("thoughts", {})
|
|
assistant_thoughts_text = remove_ansi_escape(assistant_thoughts.get("text", ""))
|
|
if assistant_thoughts:
|
|
assistant_thoughts_reasoning = remove_ansi_escape(
|
|
assistant_thoughts.get("reasoning", "")
|
|
)
|
|
assistant_thoughts_plan = remove_ansi_escape(assistant_thoughts.get("plan", ""))
|
|
assistant_thoughts_criticism = remove_ansi_escape(
|
|
assistant_thoughts.get("criticism", "")
|
|
)
|
|
assistant_thoughts_speak = remove_ansi_escape(
|
|
assistant_thoughts.get("speak", "")
|
|
)
|
|
logger.typewriter_log(
|
|
f"{ai_name.upper()} THOUGHTS:", Fore.YELLOW, assistant_thoughts_text
|
|
)
|
|
logger.typewriter_log("REASONING:", Fore.YELLOW, str(assistant_thoughts_reasoning))
|
|
if assistant_thoughts_plan:
|
|
logger.typewriter_log("PLAN:", Fore.YELLOW, "")
|
|
# If it's a list, join it into a string
|
|
if isinstance(assistant_thoughts_plan, list):
|
|
assistant_thoughts_plan = "\n".join(assistant_thoughts_plan)
|
|
elif isinstance(assistant_thoughts_plan, dict):
|
|
assistant_thoughts_plan = str(assistant_thoughts_plan)
|
|
|
|
# Split the input_string using the newline character and dashes
|
|
lines = assistant_thoughts_plan.split("\n")
|
|
for line in lines:
|
|
line = line.lstrip("- ")
|
|
logger.typewriter_log("- ", Fore.GREEN, line.strip())
|
|
logger.typewriter_log("CRITICISM:", Fore.YELLOW, f"{assistant_thoughts_criticism}")
|
|
# Speak the assistant's thoughts
|
|
if assistant_thoughts_speak:
|
|
if config.speak_mode:
|
|
say_text(assistant_thoughts_speak, config)
|
|
else:
|
|
logger.typewriter_log("SPEAK:", Fore.YELLOW, f"{assistant_thoughts_speak}")
|
|
|
|
|
|
def remove_ansi_escape(s: str) -> str:
|
|
return s.replace("\x1B", "")
|