1
+ from pydantic import BaseModel
2
+ from osbot_fast_api .api .Fast_API_Routes import Fast_API_Routes
3
+ from typing import Optional , Dict , TypeVar , Type
4
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Create_Summary import Model__Response_Format__Json_Prompt__Create_Summary , Json_Prompt__Create_Summary
5
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Document_Improver import Model__Response_Format__Json_Prompt__Document_Improver , Json_Prompt__Document_Improver
6
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Validate_Summary import Model__Response_Format__Json_Prompt__Validate_Summary , Json_Prompt__Validate_Summary
7
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Email_Generator import Model__Response_Format__Json_Prompt__Email_Generator , Json_Prompt__Email_Generator
8
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Form_Generator import Model__Response_Format__Json_Prompt__Form_Generator , Json_Prompt__Form_Generator
9
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Graph_Extractor import Model__Response_Format__Json_Prompt__Graph_Extractor , Json_Prompt__Graph_Extractor , GraphResponse
10
+ from osbot_llms .llms .prompt_to_json .use_cases .Json_Prompt__Mermaid_Generator import Model__Response_Format__Json_Prompt__Mermaid_Generator , Json_Prompt__Mermaid_Generator
11
+ from osbot_utils .helpers .Random_Guid import Random_Guid
12
+ from osbot_utils .utils .Status import status_ok , status_error
13
+
14
+
15
+ class Model__Fast_API__Create_Summary (BaseModel ):
16
+ target_text : str
17
+
18
+ class Model__Fast_API__Document_Improver (BaseModel ):
19
+ current_content : str
20
+ improvement_request : str
21
+
22
+ class Model__Fast_API__Validate_Summary (BaseModel ):
23
+ original_text : str
24
+ summary : str
25
+
26
+ class Model__Fast_API__Email_Generator (BaseModel ):
27
+ email_requirements : str
28
+ context : Optional [Dict ] = None
29
+
30
+ class Model__Fast_API__Form_Generator (BaseModel ):
31
+ form_requirements : str
32
+
33
+ class Model__Fast_API__Graph_Extractor (BaseModel ):
34
+ content : str
35
+
36
+ class Model__Fast_API__Mermaid_Generator (BaseModel ):
37
+ graph : GraphResponse
38
+ style_request : Optional [str ] = ""
39
+
40
+
41
+ class Routes__Json_Prompt (Fast_API_Routes ):
42
+ tag : str = 'json-prompt'
43
+
44
+ def invoke_prompt (self , target_class : Type , target_method : str , method_kwargs ) -> Dict :
45
+ try :
46
+ response = getattr (target_class (), target_method )(** method_kwargs )
47
+
48
+ data = { 'json_prompt_id' : Random_Guid () ,
49
+ 'duration' : response .get ('duration' ),
50
+ 'llm_model' : response .get ('llm_model' ),
51
+ 'response_json' : response .get ('response_json' ),
52
+ 'response_schema' : response .get ('response_schema' ),
53
+ 'seed' : response .get ('seed' ),
54
+ 'temperature' : response .get ('temperature' ),
55
+ 'timestamp' : response .get ('timestamp' ),
56
+ 'tokens' : response .get ('tokens' ),
57
+ }
58
+ return status_ok (message = "Json Prompt created ok" , data = data )
59
+ except Exception as exception :
60
+ return status_error (message = "Failed to create Json Prompt" , error = f'{ exception } ' )
61
+
62
+ def create_summary (self , request : Model__Fast_API__Create_Summary ):
63
+ target_class = Json_Prompt__Create_Summary
64
+ target_method = 'create_summary'
65
+ target_kwargs = dict (target_text = request .target_text )
66
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
67
+ return result
68
+
69
+ def improve_document (self , request : Model__Fast_API__Document_Improver ):
70
+ target_class = Json_Prompt__Document_Improver
71
+ target_method = 'improve_document'
72
+ target_kwargs = dict (current_content = request .current_content ,
73
+ improvement_request = request .improvement_request )
74
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
75
+ return result
76
+
77
+ def validate_summary (self , request : Model__Fast_API__Validate_Summary ):
78
+ target_class = Json_Prompt__Validate_Summary
79
+ target_method = 'validate_summary'
80
+ target_kwargs = dict (original_text = request .original_text ,
81
+ summary = request .summary )
82
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
83
+ return result
84
+
85
+ def generate_email (self , request : Model__Fast_API__Email_Generator ):
86
+ target_class = Json_Prompt__Email_Generator
87
+ target_method = 'generate_email'
88
+ target_kwargs = dict (email_requirements = request .email_requirements ,
89
+ context = request .context )
90
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
91
+ return result
92
+
93
+ def generate_form (self , request : Model__Fast_API__Form_Generator ):
94
+ target_class = Json_Prompt__Form_Generator
95
+ target_method = 'generate_form'
96
+ target_kwargs = dict (form_requirements = request .form_requirements )
97
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
98
+ return result
99
+
100
+ def extract_graph (self , request : Model__Fast_API__Graph_Extractor ):
101
+ target_class = Json_Prompt__Graph_Extractor
102
+ target_method = 'extract_graph'
103
+ target_kwargs = dict (content = request .content )
104
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
105
+ return result
106
+
107
+ def generate_mermaid (self , request : Model__Fast_API__Mermaid_Generator ):
108
+ target_class = Json_Prompt__Mermaid_Generator
109
+ target_method = 'convert_to_mermaid'
110
+ target_kwargs = dict (graph = request .graph ,
111
+ style_request = request .style_request )
112
+ result = self .invoke_prompt (target_class , target_method , target_kwargs )
113
+ return result
114
+
115
+ def setup_routes (self ):
116
+ self .add_route_post (self .create_summary )
117
+ self .add_route_post (self .improve_document )
118
+ self .add_route_post (self .validate_summary )
119
+ self .add_route_post (self .generate_email )
120
+ self .add_route_post (self .generate_form )
121
+ self .add_route_post (self .extract_graph )
122
+ self .add_route_post (self .generate_mermaid )
0 commit comments