2023-07-27 04:29:39 +00:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
from enum import Enum
|
|
|
|
from typing import Set
|
|
|
|
|
Use a submodule for pydantic v1 compat (#9371)
<!-- Thank you for contributing to LangChain!
Replace this entire comment with:
- Description: a description of the change,
- Issue: the issue # it fixes (if applicable),
- Dependencies: any dependencies required for this change,
- Tag maintainer: for a quicker response, tag the relevant maintainer
(see below),
- Twitter handle: we announce bigger features on Twitter. If your PR
gets announced and you'd like a mention, we'll gladly shout you out!
Please make sure your PR is passing linting and testing before
submitting. Run `make format`, `make lint` and `make test` to check this
locally.
See contribution guidelines for more information on how to write/run
tests, lint, etc:
https://github.com/hwchase17/langchain/blob/master/.github/CONTRIBUTING.md
If you're adding a new integration, please include:
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. These live is docs/extras
directory.
If no one reviews your PR within a few days, please @-mention one of
@baskaryan, @eyurtsev, @hwchase17, @rlancemartin.
-->
2023-08-17 15:35:49 +00:00
|
|
|
from langchain_experimental.pydantic_v1 import BaseModel, Field
|
2023-07-27 04:29:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
class ThoughtValidity(Enum):
|
2024-02-24 02:24:16 +00:00
|
|
|
"""Enum for the validity of a thought."""
|
|
|
|
|
2023-07-27 04:29:39 +00:00
|
|
|
VALID_INTERMEDIATE = 0
|
|
|
|
VALID_FINAL = 1
|
|
|
|
INVALID = 2
|
|
|
|
|
|
|
|
|
|
|
|
class Thought(BaseModel):
|
2024-02-24 02:24:16 +00:00
|
|
|
"""A thought in the ToT."""
|
|
|
|
|
2023-07-27 04:29:39 +00:00
|
|
|
text: str
|
|
|
|
validity: ThoughtValidity
|
|
|
|
children: Set[Thought] = Field(default_factory=set)
|
|
|
|
|
|
|
|
def __hash__(self) -> int:
|
|
|
|
return id(self)
|