feat: logging in parse method

feature/stdout-breaker
adldotori 1 year ago
parent 9eefef4019
commit 318c4781de

@ -1,18 +1,18 @@
from typing import Any, Dict, List, Optional, Union
from ansi import ANSI, Color, Style
from langchain.callbacks.base import BaseCallbackHandler
from langchain.schema import AgentAction, AgentFinish, LLMResult
from ansi import ANSI, Color, Style
from logger import logger
class EVALCallbackHandler(BaseCallbackHandler):
def dim_multiline(self, message: str) -> str:
return message.split("\n")[0] + ANSI(
"\n... ".join(["", *message.split("\n")[1:]])
).to(Color.black().bright())
def dim_multiline(message: str) -> str:
return message.split("\n")[0] + ANSI(
"\n... ".join(["", *message.split("\n")[1:]])
).to(Color.black().bright())
class EVALCallbackHandler(BaseCallbackHandler):
def on_llm_start(
self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any
) -> None:
@ -33,7 +33,7 @@ class EVALCallbackHandler(BaseCallbackHandler):
self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any
) -> None:
logger.info(ANSI(f"Entering new chain.").to(Color.green(), Style.italic()))
logger.info(ANSI("Prompted Text").to(Color.yellow()) + f': {inputs["input"]}')
logger.info(ANSI("Prompted Text").to(Color.yellow()) + f': {inputs["input"]}\n')
def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None:
logger.info(ANSI(f"Finished chain.").to(Color.green(), Style.italic()))
@ -52,14 +52,7 @@ class EVALCallbackHandler(BaseCallbackHandler):
pass
def on_agent_action(self, action: AgentAction, **kwargs: Any) -> Any:
logger.info(
ANSI("Action").to(Color.cyan()) + ": " + ANSI(action.tool).to(Style.bold())
)
logger.info(
ANSI("Input").to(Color.cyan())
+ ": "
+ self.dim_multiline(action.tool_input)
)
pass
def on_tool_end(
self,
@ -69,7 +62,7 @@ class EVALCallbackHandler(BaseCallbackHandler):
**kwargs: Any,
) -> None:
logger.info(
ANSI("Observation").to(Color.magenta()) + ": " + self.dim_multiline(output)
ANSI("Observation").to(Color.magenta()) + ": " + dim_multiline(output)
)
logger.info(ANSI("Thinking...").to(Color.green(), Style.italic()))
@ -93,5 +86,5 @@ class EVALCallbackHandler(BaseCallbackHandler):
logger.info(
ANSI("Final Answer").to(Color.yellow())
+ ": "
+ self.dim_multiline(finish.return_values.get("output", ""))
+ dim_multiline(finish.return_values.get("output", ""))
)

@ -1,9 +1,12 @@
import re
import time
from typing import Dict
from langchain.output_parsers.base import BaseOutputParser
from ansi import ANSI, Color, Style
from core.agents.callback import dim_multiline
from core.prompts.input import EVAL_FORMAT_INSTRUCTIONS
from langchain.output_parsers.base import BaseOutputParser
from logger import logger
class EvalOutputParser(BaseOutputParser):
@ -15,8 +18,19 @@ class EvalOutputParser(BaseOutputParser):
match = re.search(regex, text, re.DOTALL)
if not match:
raise Exception("parse error")
action = match.group(1).strip()
plan = match.group(2)
action_input = match.group(3)
logger.info(ANSI("Plan").to(Color.blue()) + ": " + plan)
time.sleep(1)
logger.info(
ANSI("Action").to(Color.cyan()) + ": " + ANSI(action).to(Style.bold())
)
time.sleep(1)
logger.info(ANSI("Input").to(Color.cyan()) + ": " + dim_multiline(action_input))
time.sleep(1)
return {"action": action, "action_input": action_input.strip(" ").strip('"')}
def __str__(self):

@ -61,7 +61,7 @@ class SyscallTracer:
break
try:
self.wait_syscall_with_timeout(60)
self.wait_syscall_with_timeout(30)
except ProcessExit as event:
if event.exitcode is not None:
exitcode = event.exitcode

Loading…
Cancel
Save