code: def on_tool_end(
      self,
      output: str,
      color: Optional[str] = None,
      observation_prefix: Optional[str] = None,
      llm_prefix: Optional[str] = None,
      **kwargs: Any,
  ) -> None:
      self._require_current_thought().on_tool_end(
          output, color, observation_prefix, llm_prefix, **kwargs
      )
      self._complete_current_thought()
  
imports: from __future__ import annotations
  import time
  from enum import Enum
  from typing import TYPE_CHECKING, Any, Dict, List, NamedTuple, Optional
  from langchain.callbacks.base import BaseCallbackHandler
  from langchain.schema import AgentAction, AgentFinish, LLMResult
  from streamlit.runtime.metrics_util import gather_metrics
label_desc: Use image node_id 10 for calling the StreamlitCallbackHandler obj's underlying member method code with example usage: obj.on_tool_end(output, color, observation_prefix, llm_prefix) without return types