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[:]