testbed / scripts /sync_langfuse_prompts.py
sunwpark
Sync prompts with Langfuse
7eec081
Raw
History Blame Contribute Delete
1.77 kB
#!/usr/bin/env python3
"""Sync local prompt files to Langfuse Prompt Management."""
import argparse
import json
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(PROJECT_ROOT))
from src.prompts.character_prompts import ( # noqa: E402
get_available_api_types,
get_available_characters,
sync_available_prompts_to_langfuse,
sync_prompt_to_langfuse,
)
def parse_args():
parser = argparse.ArgumentParser(
description="Sync repo prompt files to Langfuse Prompts."
)
parser.add_argument(
"--message",
default=None,
help="Commit message/memo to attach to the Langfuse prompt version.",
)
parser.add_argument(
"--character",
choices=get_available_characters(),
default=None,
help="Sync only one character.",
)
parser.add_argument(
"--provider",
choices=get_available_api_types(),
default=None,
help="Sync only one provider prompt.",
)
return parser.parse_args()
def main():
args = parse_args()
if args.character or args.provider:
characters = [args.character] if args.character else get_available_characters()
providers = [args.provider] if args.provider else get_available_api_types()
results = [
sync_prompt_to_langfuse(
character,
provider,
commit_message=args.message,
)
for character in characters
for provider in providers
]
else:
results = sync_available_prompts_to_langfuse(commit_message=args.message)
print(json.dumps(results, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()