File size: 2,946 Bytes
6f40440
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/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())