Source code for langchain_experimental.tot.checker
from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional, Tuple
from langchain.chains.base import Chain
from langchain_core.callbacks.manager import CallbackManagerForChainRun
from langchain_experimental.tot.thought import ThoughtValidity
[docs]class ToTChecker(Chain, ABC):
"""思维树(ToT)检查器。
这是一个抽象的ToT检查器,必须由用户实现。您可以实现一个简单的基于规则的检查器,也可以实现一个更复杂的基于神经网络的分类器。"""
output_key: str = "validity" #: :meta private:
@property
def input_keys(self) -> List[str]:
"""检查器输入键。
:元数据 私有:
"""
return ["problem_description", "thoughts"]
@property
def output_keys(self) -> List[str]:
"""检查器输出的键。
:元数据 私有:
"""
return [self.output_key]
[docs] @abstractmethod
def evaluate(
self,
problem_description: str,
thoughts: Tuple[str, ...] = (),
) -> ThoughtValidity:
"""
评估问题描述的响应并返回解决方案类型。
"""
def _call(
self,
inputs: Dict[str, Any],
run_manager: Optional[CallbackManagerForChainRun] = None,
) -> Dict[str, ThoughtValidity]:
return {self.output_key: self.evaluate(**inputs)}