|
|
|
@ -1,9 +1,11 @@
|
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
from typing import Iterable, List, Literal, Union
|
|
|
|
|
|
|
|
|
|
from langchain_core._api import beta
|
|
|
|
|
from langchain_core.documents import Document
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@beta()
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
|
|
class Link:
|
|
|
|
|
"""A link to/from a tag of a given tag.
|
|
|
|
@ -38,6 +40,7 @@ class Link:
|
|
|
|
|
METADATA_LINKS_KEY = "links"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@beta()
|
|
|
|
|
def get_links(doc: Document) -> List[Link]:
|
|
|
|
|
"""Get the links from a document.
|
|
|
|
|
Args:
|
|
|
|
@ -54,6 +57,7 @@ def get_links(doc: Document) -> List[Link]:
|
|
|
|
|
return links
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@beta()
|
|
|
|
|
def add_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> None:
|
|
|
|
|
"""Add links to the given metadata.
|
|
|
|
|
Args:
|
|
|
|
@ -68,6 +72,7 @@ def add_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> None:
|
|
|
|
|
links_in_metadata.append(link)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@beta()
|
|
|
|
|
def copy_with_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> Document:
|
|
|
|
|
"""Return a document with the given links added.
|
|
|
|
|
|
|
|
|
|