Coverage for src / mcp_server_langgraph / core / prompts / __init__.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-12-03 00:43 +0000

1""" 

2Centralized Prompt Management with XML Structure 

3 

4Implements Anthropic's prompt engineering best practices: 

5- XML tags for structural clarity 

6- Right altitude principle (balanced specificity/flexibility) 

7- Minimalism with sufficiency 

8- Clear sectioning (<role>, <task>, <instructions>, <output_format>) 

9 

10References: 

11- https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents 

12""" 

13 

14from mcp_server_langgraph.core.prompts.response_prompt import RESPONSE_SYSTEM_PROMPT 

15from mcp_server_langgraph.core.prompts.router_prompt import ROUTER_SYSTEM_PROMPT 

16from mcp_server_langgraph.core.prompts.verification_prompt import VERIFICATION_SYSTEM_PROMPT 

17 

18__all__ = [ 

19 "RESPONSE_SYSTEM_PROMPT", 

20 "ROUTER_SYSTEM_PROMPT", 

21 "VERIFICATION_SYSTEM_PROMPT", 

22 "get_prompt", 

23 "get_prompt_version", 

24 "list_prompt_versions", 

25] 

26 

27# Prompt version registry 

28# Format: {prompt_name: {version: prompt_string}} 

29_PROMPT_VERSIONS: dict[str, dict[str, str]] = { 

30 "router": { 

31 "v1": ROUTER_SYSTEM_PROMPT, 

32 "latest": ROUTER_SYSTEM_PROMPT, 

33 }, 

34 "response": { 

35 "v1": RESPONSE_SYSTEM_PROMPT, 

36 "latest": RESPONSE_SYSTEM_PROMPT, 

37 }, 

38 "verification": { 

39 "v1": VERIFICATION_SYSTEM_PROMPT, 

40 "latest": VERIFICATION_SYSTEM_PROMPT, 

41 }, 

42} 

43 

44# Current version metadata 

45_PROMPT_METADATA: dict[str, dict[str, str]] = { 

46 "router": {"current_version": "v1", "created": "2025-01-15", "last_updated": "2025-01-15"}, 

47 "response": {"current_version": "v1", "created": "2025-01-15", "last_updated": "2025-01-15"}, 

48 "verification": {"current_version": "v1", "created": "2025-01-15", "last_updated": "2025-01-15"}, 

49} 

50 

51 

52def get_prompt(prompt_name: str, version: str | None = None) -> str: 

53 """ 

54 Get a prompt by name with optional versioning. 

55 

56 Args: 

57 prompt_name: Name of the prompt ("router", "response", "verification") 

58 version: Optional version string (default: "latest") 

59 

60 Returns: 

61 Prompt string 

62 

63 Raises: 

64 ValueError: If prompt name or version is unknown 

65 

66 Examples: 

67 >>> get_prompt("router") # Gets latest version 

68 >>> get_prompt("router", "v1") # Gets specific version 

69 >>> get_prompt("verification", "latest") # Explicitly latest 

70 """ 

71 if prompt_name not in _PROMPT_VERSIONS: 

72 available = list(_PROMPT_VERSIONS.keys()) 

73 msg = f"Unknown prompt: {prompt_name}. Available: {available}" 

74 raise ValueError(msg) 

75 

76 version = version or "latest" 

77 prompt_versions = _PROMPT_VERSIONS[prompt_name] 

78 

79 if version not in prompt_versions: 

80 available_versions = list(prompt_versions.keys()) 

81 msg = f"Unknown version '{version}' for prompt '{prompt_name}'. Available: {available_versions}" 

82 raise ValueError(msg) 

83 

84 return prompt_versions[version] 

85 

86 

87def get_prompt_version(prompt_name: str) -> str: 

88 """ 

89 Get current version number for a prompt. 

90 

91 Args: 

92 prompt_name: Name of the prompt 

93 

94 Returns: 

95 Version string (e.g., "v1") 

96 

97 Raises: 

98 ValueError: If prompt name is unknown 

99 """ 

100 if prompt_name not in _PROMPT_METADATA: 

101 msg = f"Unknown prompt: {prompt_name}" 

102 raise ValueError(msg) 

103 

104 return _PROMPT_METADATA[prompt_name]["current_version"] 

105 

106 

107def list_prompt_versions(prompt_name: str) -> list[str]: 

108 """ 

109 List all available versions for a prompt. 

110 

111 Args: 

112 prompt_name: Name of the prompt 

113 

114 Returns: 

115 List of version strings 

116 

117 Raises: 

118 ValueError: If prompt name is unknown 

119 """ 

120 if prompt_name not in _PROMPT_VERSIONS: 

121 msg = f"Unknown prompt: {prompt_name}" 

122 raise ValueError(msg) 

123 

124 return list(_PROMPT_VERSIONS[prompt_name].keys())