Improve logging
This commit is contained in:
parent
06066437fd
commit
1c4ac9cb57
|
@ -18,6 +18,10 @@ import time
|
|||
from typing import Any, Callable, Dict, List, Optional, Union, Tuple
|
||||
from dataclasses import dataclass
|
||||
from rich.syntax import Syntax
|
||||
from rich.console import Group
|
||||
from rich.panel import Panel
|
||||
from rich.rule import Rule
|
||||
from rich.text import Text
|
||||
|
||||
from transformers.utils import is_torch_available
|
||||
|
||||
|
@ -523,8 +527,7 @@ class ReactAgent(BaseAgent):
|
|||
else:
|
||||
self.logs.append(system_prompt_step)
|
||||
|
||||
console.rule("[bold]New task", characters="=")
|
||||
console.print(self.task)
|
||||
console.print(Group(Rule("[bold]New task", characters="="), Text(self.task)))
|
||||
self.logs.append(TaskStep(task=task))
|
||||
|
||||
if oneshot:
|
||||
|
@ -693,8 +696,7 @@ Now begin!""",
|
|||
self.logs.append(
|
||||
PlanningStep(plan=final_plan_redaction, facts=final_facts_redaction)
|
||||
)
|
||||
console.rule("[orange]Initial plan")
|
||||
console.print(final_plan_redaction)
|
||||
console.print(Rule("[bold]Initial plan", style="orange"), Text(final_plan_redaction))
|
||||
else: # update plan
|
||||
agent_memory = self.write_inner_memory_from_logs(
|
||||
summary_mode=False
|
||||
|
@ -750,8 +752,8 @@ Now begin!""",
|
|||
self.logs.append(
|
||||
PlanningStep(plan=final_plan_redaction, facts=final_facts_redaction)
|
||||
)
|
||||
console.rule("[orange]Updated plan")
|
||||
console.print(final_plan_redaction)
|
||||
console.print(Rule("[bold]Updated plan", style="orange"), Text(final_plan_redaction))
|
||||
|
||||
|
||||
|
||||
class JsonAgent(ReactAgent):
|
||||
|
@ -800,11 +802,10 @@ class JsonAgent(ReactAgent):
|
|||
log_entry.agent_memory = agent_memory.copy()
|
||||
|
||||
if self.verbose:
|
||||
console.rule(
|
||||
"[italic]Calling LLM engine with this last message:", align="left"
|
||||
)
|
||||
console.print(self.prompt_messages[-1])
|
||||
console.rule()
|
||||
console.print(Group(
|
||||
Rule("[italic]Calling LLM engine with this last message:", align="left", style="orange"),
|
||||
Text(str(self.prompt_messages[-1]))
|
||||
))
|
||||
|
||||
try:
|
||||
additional_args = (
|
||||
|
@ -820,8 +821,10 @@ class JsonAgent(ReactAgent):
|
|||
raise AgentGenerationError(f"Error in generating llm_engine output: {e}.")
|
||||
|
||||
if self.verbose:
|
||||
console.rule("[italic]Output message of the LLM:")
|
||||
console.print(llm_output)
|
||||
console.print(Group(
|
||||
Rule("[italic]Output message of the LLM:", align="left", style="orange"),
|
||||
Text(llm_output)
|
||||
))
|
||||
|
||||
# Parse
|
||||
rationale, action = self.extract_action(
|
||||
|
@ -836,10 +839,8 @@ class JsonAgent(ReactAgent):
|
|||
log_entry.tool_call = ToolCall(tool_name=tool_name, tool_arguments=arguments)
|
||||
|
||||
# Execute
|
||||
console.rule("Agent thoughts:")
|
||||
console.print(rationale)
|
||||
console.rule()
|
||||
console.print(f">>> Calling tool: '{tool_name}' with arguments: {arguments}")
|
||||
console.print(Rule("Agent thoughts:", align="left"), Text(rationale))
|
||||
console.print(Panel(Text(f"Calling tool: '{tool_name}' with arguments: {arguments}")))
|
||||
if tool_name == "final_answer":
|
||||
if isinstance(arguments, dict):
|
||||
if "answer" in arguments:
|
||||
|
@ -933,11 +934,10 @@ class CodeAgent(ReactAgent):
|
|||
log_entry.agent_memory = agent_memory.copy()
|
||||
|
||||
if self.verbose:
|
||||
console.rule(
|
||||
"[italic]Calling LLM engine with these last messages:", align="left"
|
||||
)
|
||||
console.print(self.prompt_messages[-2:])
|
||||
console.rule()
|
||||
console.print(Group(
|
||||
Rule("[italic]Calling LLM engine with these last messages:", align="left", style="orange"),
|
||||
Text(str(self.prompt_messages[-2:]))
|
||||
))
|
||||
|
||||
try:
|
||||
additional_args = (
|
||||
|
@ -953,10 +953,10 @@ class CodeAgent(ReactAgent):
|
|||
raise AgentGenerationError(f"Error in generating llm_engine output: {e}.")
|
||||
|
||||
if self.verbose:
|
||||
console.rule("[italic]Output message of the LLM:")
|
||||
console.print(
|
||||
Syntax(llm_output, lexer="markdown", background_color="default")
|
||||
)
|
||||
console.print(Group(
|
||||
Rule("[italic]Output message of the LLM:", align="left", style="orange"),
|
||||
Syntax(llm_output, lexer="markdown", theme="github-dark")
|
||||
))
|
||||
|
||||
# Parse
|
||||
try:
|
||||
|
@ -981,11 +981,14 @@ class CodeAgent(ReactAgent):
|
|||
|
||||
# Execute
|
||||
if self.verbose:
|
||||
console.rule("[italic]Agent thoughts")
|
||||
console.print(rationale)
|
||||
console.rule("[bold]Agent is executing the code below:", align="left")
|
||||
console.print(Syntax(code_action, lexer="python", background_color="default"))
|
||||
console.rule("", align="left")
|
||||
console.print(Group(
|
||||
Rule("[italic]Agent thoughts", align="left"),
|
||||
Text(rationale)
|
||||
))
|
||||
|
||||
console.print(Panel(
|
||||
Syntax(code_action, lexer="python", theme="github-dark"), title="[bold]Agent is executing the code below:", title_align="left")
|
||||
)
|
||||
|
||||
try:
|
||||
static_tools = {
|
||||
|
@ -1001,12 +1004,14 @@ class CodeAgent(ReactAgent):
|
|||
state=self.state,
|
||||
authorized_imports=self.authorized_imports,
|
||||
)
|
||||
console.print("Print outputs:")
|
||||
console.print(self.state["print_outputs"])
|
||||
if len(self.state["print_outputs"]) > 0:
|
||||
console.print(Group(Text("Print outputs:", style="bold"), Text(self.state["print_outputs"])))
|
||||
observation = "Print outputs:\n" + self.state["print_outputs"]
|
||||
if output is not None:
|
||||
console.rule("Last output from code snippet:", align="left")
|
||||
console.print(str(output))
|
||||
truncated_output = truncate_content(
|
||||
str(output)
|
||||
)
|
||||
console.print(Group(Text("Last output from code snippet:", style="bold"), Text(truncated_output)))
|
||||
observation += "Last output from code snippet:\n" + truncate_content(
|
||||
str(output)
|
||||
)
|
||||
|
@ -1018,8 +1023,7 @@ class CodeAgent(ReactAgent):
|
|||
raise AgentExecutionError(error_msg)
|
||||
for line in code_action.split("\n"):
|
||||
if line[: len("final_answer")] == "final_answer":
|
||||
console.print("Final answer:")
|
||||
console.print(f"[bold]{output}")
|
||||
console.print(Group(Text("Final answer:", style="bold"), Text(str(output), style="bold green")))
|
||||
log_entry.action_output = output
|
||||
return output
|
||||
return None
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
from .utils import console
|
||||
|
||||
from rich.text import Text
|
||||
from rich.console import Group
|
||||
|
||||
class Monitor:
|
||||
def __init__(self, tracked_llm_engine):
|
||||
|
@ -31,8 +32,10 @@ class Monitor:
|
|||
def update_metrics(self, step_log):
|
||||
step_duration = step_log.duration
|
||||
self.step_durations.append(step_duration)
|
||||
console.print(f"Step {len(self.step_durations)}:")
|
||||
console.print(f"- Time taken: {step_duration:.2f} seconds")
|
||||
console_outputs = [
|
||||
Text(f"Step {len(self.step_durations)}:", style="bold"),
|
||||
Text(f"- Time taken: {step_duration:.2f} seconds")
|
||||
]
|
||||
|
||||
if getattr(self.tracked_llm_engine, "last_input_token_count", None) is not None:
|
||||
self.total_input_token_count += (
|
||||
|
@ -41,8 +44,11 @@ class Monitor:
|
|||
self.total_output_token_count += (
|
||||
self.tracked_llm_engine.last_output_token_count
|
||||
)
|
||||
console.print(f"- Input tokens: {self.total_input_token_count:,}")
|
||||
console.print(f"- Output tokens: {self.total_output_token_count:,}")
|
||||
console_outputs += [
|
||||
Text(f"- Input tokens: {self.total_input_token_count:,}"),
|
||||
Text(f"- Output tokens: {self.total_output_token_count:,}")
|
||||
]
|
||||
console.print(Group(*console_outputs))
|
||||
|
||||
|
||||
__all__ = ["Monitor"]
|
||||
|
|
Loading…
Reference in New Issue