mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-05 13:06:03 +00:00
cli[minor]: Add script to generate migrations for partner packages (#20932)
Add script to help generate migrations. This works well for partner packages. Migrations are generated based on run time rather than static analysis (much simpler to get the correct migrations implemented). The script for generating migrations from langchain to community still needs work.
This commit is contained in:
0
libs/cli/scripts/__init__.py
Normal file
0
libs/cli/scripts/__init__.py
Normal file
48
libs/cli/scripts/generate_migrations.py
Normal file
48
libs/cli/scripts/generate_migrations.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""Script to generate migrations for the migration script."""
|
||||
import json
|
||||
|
||||
import click
|
||||
|
||||
from langchain_cli.namespaces.migrate.generate.langchain import (
|
||||
generate_migrations_from_langchain_to_community,
|
||||
)
|
||||
from langchain_cli.namespaces.migrate.generate.partner import (
|
||||
get_migrations_for_partner_package,
|
||||
)
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
"""Migration scripts management."""
|
||||
pass
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.option(
|
||||
"--output",
|
||||
default="langchain_migrations.json",
|
||||
help="Output file for the migration script.",
|
||||
)
|
||||
def langchain(output: str) -> None:
|
||||
"""Generate a migration script."""
|
||||
click.echo("Migration script generated.")
|
||||
migrations = generate_migrations_from_langchain_to_community()
|
||||
with open(output, "w") as f:
|
||||
f.write(json.dumps(migrations))
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument("pkg")
|
||||
@click.option("--output", default=None, help="Output file for the migration script.")
|
||||
def partner(pkg: str, output: str) -> None:
|
||||
"""Generate migration scripts specifically for LangChain modules."""
|
||||
click.echo("Migration script for LangChain generated.")
|
||||
migrations = get_migrations_for_partner_package(pkg)
|
||||
output_name = f"partner_{pkg}.json" if output is None else output
|
||||
with open(output_name, "w") as f:
|
||||
f.write(json.dumps(migrations, indent=2, sort_keys=True))
|
||||
click.secho(f"LangChain migration script saved to {output_name}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cli()
|
1
libs/cli/scripts/migrations.json
Normal file
1
libs/cli/scripts/migrations.json
Normal file
@@ -0,0 +1 @@
|
||||
[["langchain_community.embeddings.openai.OpenAIEmbeddings", "langchain_openai.embeddings.base.OpenAIEmbeddings"], ["langchain_community.embeddings.azure_openai.AzureOpenAIEmbeddings", "langchain_openai.embeddings.azure.AzureOpenAIEmbeddings"], ["langchain_community.chat_models.openai.ChatOpenAI", "langchain_openai.chat_models.base.ChatOpenAI"], ["langchain_community.chat_models.azure_openai.AzureChatOpenAI", "langchain_openai.chat_models.azure.AzureChatOpenAI"]]
|
Reference in New Issue
Block a user