1+ import logging
12from typing import TYPE_CHECKING , Optional , TypedDict , Callable
23
34from literalai .observability .generation import GenerationMessage
1213from literalai .api .helpers import gql
1314
1415
16+ logger = logging .getLogger (__name__ )
17+
18+
1519def create_prompt_lineage_helper (name : str , description : Optional [str ] = None ):
1620 variables = {"name" : name , "description" : description }
1721
1822 def process_response (response ):
1923 prompt = response ["data" ]["createPromptLineage" ]
24+ if prompt and prompt .get ("deletedAt" ):
25+ logger .warning (
26+ f"Prompt { name } was deleted - please update any references to use an active prompt in production"
27+ )
2028 return prompt
2129
2230 description = "create prompt lineage"
@@ -29,6 +37,10 @@ def get_prompt_lineage_helper(name: str):
2937
3038 def process_response (response ):
3139 prompt = response ["data" ]["promptLineage" ]
40+ if prompt and prompt .get ("deletedAt" ):
41+ logger .warning (
42+ f"Prompt { name } was deleted - please update any references to use an active prompt in production"
43+ )
3244 return prompt
3345
3446 description = "get prompt lineage"
@@ -52,15 +64,23 @@ def create_prompt_helper(
5264
5365 def process_response (response ):
5466 prompt = response ["data" ]["createPromptVersion" ]
67+ prompt_lineage = prompt .get ("lineage" )
68+
69+ if prompt_lineage and prompt_lineage .get ("deletedAt" ):
70+ logger .warning (
71+ f"Prompt { prompt_lineage .get ('name' )} was deleted - please update any references to use an active prompt in production"
72+ )
5573 return Prompt .from_dict (api , prompt ) if prompt else None
5674
5775 description = "create prompt version"
5876
5977 return gql .CREATE_PROMPT_VERSION , description , variables , process_response
6078
6179
62- def get_prompt_cache_key (id : Optional [str ], name : Optional [str ], version : Optional [int ]) -> str :
63- if id :
80+ def get_prompt_cache_key (
81+ id : Optional [str ], name : Optional [str ], version : Optional [int ]
82+ ) -> str :
83+ if id :
6484 return id
6585 elif name and version :
6686 return f"{ name } -{ version } "
@@ -90,14 +110,27 @@ def get_prompt_helper(
90110
91111 def process_response (response ):
92112 prompt_version = response ["data" ]["promptVersion" ]
113+ prompt_lineage = prompt_version .get ("lineage" )
114+
115+ if prompt_lineage and prompt_lineage .get ("deletedAt" ):
116+ logger .warning (
117+ f"Prompt { name } was deleted - please update any references to use an active prompt in production"
118+ )
93119 prompt = Prompt .from_dict (api , prompt_version ) if prompt_version else None
94120 if cache and prompt :
95121 put_prompt (cache , prompt )
96122 return prompt
97123
98124 description = "get prompt"
99125
100- return gql .GET_PROMPT_VERSION , description , variables , process_response , timeout , cached_prompt
126+ return (
127+ gql .GET_PROMPT_VERSION ,
128+ description ,
129+ variables ,
130+ process_response ,
131+ timeout ,
132+ cached_prompt ,
133+ )
101134
102135
103136def create_prompt_variant_helper (
0 commit comments