cli[patch]: tool integration templates (#24837)

Co-authored-by: Erick Friis <erick@langchain.dev>
This commit is contained in:
Bagatur
2024-07-30 14:59:33 -07:00
committed by GitHub
parent 19b127f640
commit 419f2c2585
4 changed files with 410 additions and 23 deletions

View File

@@ -27,7 +27,7 @@ Replacements = TypedDict(
)
def _process_name(name: str):
def _process_name(name: str, *, community: bool = False):
preprocessed = name.replace("_", "-").lower()
if preprocessed.startswith("langchain-"):
@@ -42,16 +42,17 @@ def _process_name(name: str):
raise ValueError("Name should not end with `-`.")
if preprocessed.find("--") != -1:
raise ValueError("Name should not contain consecutive hyphens.")
return Replacements(
{
"__package_name__": f"langchain-{preprocessed}",
"__module_name__": "langchain_" + preprocessed.replace("-", "_"),
"__ModuleName__": preprocessed.title().replace("-", ""),
"__MODULE_NAME__": preprocessed.upper().replace("-", ""),
"__package_name_short__": preprocessed,
"__package_name_short_snake__": preprocessed.replace("-", "_"),
}
)
replacements = {
"__package_name__": f"langchain-{preprocessed}",
"__module_name__": "langchain_" + preprocessed.replace("-", "_"),
"__ModuleName__": preprocessed.title().replace("-", ""),
"__MODULE_NAME__": preprocessed.upper().replace("-", ""),
"__package_name_short__": preprocessed,
"__package_name_short_snake__": preprocessed.replace("-", "_"),
}
if community:
replacements["__module_name__"] = preprocessed.replace("-", "_")
return Replacements(replacements)
@integration_cli.command()
@@ -172,7 +173,7 @@ def create_doc(
Creates a new integration doc.
"""
try:
replacements = _process_name(name)
replacements = _process_name(name, community=component_type=="Tool")
except ValueError as e:
typer.echo(e)
raise typer.Exit(code=1)
@@ -200,18 +201,19 @@ def create_doc(
)
# copy over template from ../integration_template
template_dir = Path(__file__).parents[1] / "integration_template" / "docs"
if component_type == "ChatModel":
docs_template = (
Path(__file__).parents[1] / "integration_template/docs/chat.ipynb"
)
docs_template = template_dir / "chat.ipynb"
elif component_type == "DocumentLoader":
docs_template = (
Path(__file__).parents[1]
/ "integration_template/docs/document_loaders.ipynb"
)
docs_template = template_dir / "document_loaders.ipynb"
elif component_type == "Tool":
docs_template = template_dir / "tools.ipynb"
elif component_type == "VectorStore":
docs_template = (
Path(__file__).parents[1] / "integration_template/docs/vectorstores.ipynb"
docs_template = template_dir / "vectorstores.ipynb"
else:
raise ValueError(
f"Unrecognized {component_type=}. Expected one of 'ChatModel', "
f"'DocumentLoader', 'Tool'."
)
shutil.copy(docs_template, destination_path)