#!/usr/bin/env python3 """ A test script to demonstrate using the llmpromptkit library programmatically. """ import os import asyncio from llmpromptkit import PromptManager, VersionControl, PromptTesting, Evaluator async def main(): # Initialize components with a custom storage path storage_path = os.path.join(os.getcwd(), "llmpromptkit_storage") prompt_manager = PromptManager(storage_path) version_control = VersionControl(prompt_manager) testing = PromptTesting(prompt_manager) evaluator = Evaluator(prompt_manager) # Print all existing prompts print("===== Existing Prompts =====") prompts = prompt_manager.list() for prompt in prompts: print(f"ID: {prompt.id} | Name: {prompt.name} | Tags: {', '.join(prompt.tags)}") # Create a new prompt print("\n===== Creating a New Prompt =====") translation_prompt = prompt_manager.create( content="Translate the following text from {source_language} to {target_language}: {text}", name="Translation Prompt", description="A prompt for translating text between languages", tags=["translation", "multilingual", "test"] ) print(f"Created prompt with ID: {translation_prompt.id}") # Render the prompt with variables print("\n===== Rendering the Prompt =====") rendered = translation_prompt.render( source_language="English", target_language="French", text="Hello, how are you today?" ) print(f"Rendered prompt: {rendered}") # Create a version print("\n===== Creating a Version =====") version = version_control.commit( prompt_id=translation_prompt.id, commit_message="Initial translation prompt" ) print(f"Created version {version.version} for prompt {translation_prompt.id}") # List all versions for this prompt print("\n===== Listing Versions =====") versions = version_control.list_versions(translation_prompt.id) print(f"Found {len(versions)} versions for prompt {translation_prompt.id}:") for v in versions: print(f"Version: {v.version} | Created: {v.created_at} | Message: {v.commit_message}") # Create a test case print("\n===== Creating a Test Case =====") test_case = testing.create_test_case( prompt_id=translation_prompt.id, input_vars={ "source_language": "English", "target_language": "French", "text": "Hello, world!" }, expected_output="Bonjour, monde!" ) print(f"Created test case with ID: {test_case.id}") # List all test cases print("\n===== Listing Test Cases =====") test_cases = testing.list_test_cases() print(f"Found {len(test_cases)} test cases:") for tc in test_cases: print(f"ID: {tc.id} | Prompt ID: {tc.prompt_id}") print("\n===== Test Complete =====") if __name__ == "__main__": asyncio.run(main())