Source code for langchain_experimental.tot.memory

from __future__ import annotations

from typing import List, Optional

from langchain_experimental.tot.thought import Thought


[docs]class ToTDFSMemory: """思维树(ToT)链的内存。 它实现为一组思维的堆栈。这允许对ToT进行深度优先搜索(DFS)。"""
[docs] def __init__(self, stack: Optional[List[Thought]] = None): self.stack: List[Thought] = stack or []
[docs] def top(self) -> Optional[Thought]: "获取堆栈顶部的元素而不弹出它。" return self.stack[-1] if len(self.stack) > 0 else None
[docs] def pop(self, n: int = 1) -> Optional[Thought]: "弹出栈顶的n个元素并返回最后一个元素。" if len(self.stack) < n: return None for _ in range(n): node = self.stack.pop() return node
[docs] def top_parent(self) -> Optional[Thought]: "获取堆栈顶部的父级而不弹出它。" return self.stack[-2] if len(self.stack) > 1 else None
[docs] def store(self, node: Thought) -> None: "在堆栈顶部添加一个节点。" if len(self.stack) > 0: self.stack[-1].children.add(node) self.stack.append(node)
@property def level(self) -> int: "返回当前堆栈的级别。" return len(self.stack)
[docs] def current_path(self) -> List[Thought]: "返回思维路径。" return self.stack[:]