12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from langchain.callbacks.base import BaseCallbackHandler
- from langchain.schema import AgentAction, AgentFinish
- from typing import Dict, Any, Optional
- from nicegui.element import Element
- class NiceGuiLogElementCallbackHandler(BaseCallbackHandler):
- """Callback Handler that writes to the log element of NicGui."""
- def __init__(self, element: Element) -> None:
- """Initialize callback handler."""
- self.element = element
- def print_text(self, message: str) -> None:
- self.element.push(message)
- self.element.update()
- def on_chain_start(
- self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any
- ) -> None:
- """Print out that we are entering a chain."""
- self.print_text(
- f"\n\n> Entering new {serialized['id'][-1]} chain...",
- )
- def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None:
- """Print out that we finished a chain."""
- self.print_text("\n> Finished chain.")
- self.print_text(f"\nOutputs: {outputs}")
- def on_agent_action(self, action: AgentAction, **kwargs: Any) -> Any:
- """Run on agent action."""
- self.print_text(action.log)
- def on_tool_end(
- self,
- output: str,
- observation_prefix: Optional[str] = None,
- llm_prefix: Optional[str] = None,
- **kwargs: Any,
- ) -> None:
- """If not the final action, print out observation."""
- if observation_prefix is not None:
- self.print_text(f"\n{observation_prefix}")
- self.print_text(output)
- if llm_prefix is not None:
- self.print_text(f"\n{llm_prefix}")
- def on_text(self, text: str, **kwargs: Any) -> None:
- """Run when agent ends."""
- self.print_text(text)
- def on_agent_finish(self, finish: AgentFinish, **kwargs: Any) -> None:
- """Run on agent end."""
- self.print_text(finish.log)
|