1
- class ZCL_AWS1_BDR_ACTIONS definition
2
- public
3
- final
4
- create public .
5
-
6
- public section .
7
- protected section .
8
- private section .
9
-
10
- methods PROMPT_CLAUDE_V2
11
- importing
12
- !IV_PROMPT type STRING
13
- returning
14
- value (OV_ANSWER ) type STRING
15
- raising
16
- /AWS1/CX_BDRSERVEREXC
17
- /AWS1/CX_BDRCLIENTEXC
18
- /AWS1/CX_RT_TECHNICAL_GENERIC
19
- /AWS1/CX_RT_SERVICE_GENERIC
20
- /AWS1/CX_RT_NO_AUTH_GENERIC .
21
- methods PROMPT_STABLE_DIFFUSION
22
- importing
23
- !IV_PROMPT type STRING
24
- returning
25
- value (OV_IMAGE ) type XSTRING
26
- raising
27
- /AWS1/CX_BDRSERVEREXC
28
- /AWS1/CX_BDRCLIENTEXC
29
- /AWS1/CX_RT_TECHNICAL_GENERIC
30
- /AWS1/CX_RT_SERVICE_GENERIC
31
- /AWS1/CX_RT_NO_AUTH_GENERIC .
1
+ CLASS zcl_aws1_bdr_actions DEFINITION
2
+ PUBLIC
3
+ FINAL
4
+ CREATE PUBLIC .
5
+
6
+ PUBLIC SECTION .
7
+ PROTECTED SECTION .
8
+ PRIVATE SECTION .
9
+
10
+ METHODS prompt_claude_v2
11
+ IMPORTING
12
+ !iv_prompt TYPE string
13
+ RETURNING
14
+ VALUE (ov_answer ) TYPE string
15
+ RAISING
16
+ /aws1/cx_bdrserverexc
17
+ /aws1/cx_bdrclientexc
18
+ /aws1/cx_rt_technical_generic
19
+ /aws1/cx_rt_service_generic
20
+ /aws1/cx_rt_no_auth_generic .
21
+ METHODS prompt_stable_diffusion
22
+ IMPORTING
23
+ !iv_prompt TYPE string
24
+ RETURNING
25
+ VALUE (ov_image ) TYPE xstring
26
+ RAISING
27
+ /aws1/cx_bdrserverexc
28
+ /aws1/cx_bdrclientexc
29
+ /aws1/cx_rt_technical_generic
30
+ /aws1/cx_rt_service_generic
31
+ /aws1/cx_rt_no_auth_generic .
32
+ METHODS l2_prompt_claude_v2
33
+ IMPORTING
34
+ !iv_prompt TYPE string
35
+ RETURNING
36
+ VALUE (ov_answer ) TYPE string
37
+ RAISING
38
+ /aws1/cx_bdrserverexc
39
+ /aws1/cx_bdrclientexc
40
+ /aws1/cx_rt_technical_generic
41
+ /aws1/cx_rt_service_generic
42
+ /aws1/cx_rt_no_auth_generic .
43
+ METHODS l2_prompt_stable_diffusion
44
+ IMPORTING
45
+ !iv_prompt TYPE string
46
+ RETURNING
47
+ VALUE (ov_image ) TYPE xstring
48
+ RAISING
49
+ /aws1/cx_bdrserverexc
50
+ /aws1/cx_bdrclientexc
51
+ /aws1/cx_rt_technical_generic
52
+ /aws1/cx_rt_service_generic
53
+ /aws1/cx_rt_no_auth_generic .
32
54
ENDCLASS .
33
55
34
56
35
57
36
58
CLASS ZCL_AWS1_BDR_ACTIONS IMPLEMENTATION .
37
59
38
60
61
+ METHOD l2_prompt_claude_v2 .
62
+ CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
63
+
64
+ DATA (lo_session ) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
65
+ DATA (lo_bdr ) = /aws1/cl_bdr_factory=>create( lo_session ).
66
+ "snippet-start:[bdr.abapv1.invokemodel_l2_claude_v2]
67
+ TRY .
68
+ DATA (lo_bdr_l2_claude ) = /aws1/cl_bdr_l2_factory=>create_claude_2( lo_bdr ).
69
+ " iv_prompt can contain a prompt like 'tell me a joke about Java programmers'.
70
+ DATA (lv_answer ) = lo_bdr_l2_claude->prompt_for_text( iv_prompt ).
71
+ CATCH /aws1/cx_bdraccessdeniedex INTO DATA (lo_ex ).
72
+ WRITE / lo_ex->get_text( ).
73
+ WRITE / | Don't forget to enable model access at https://console.aws.amazon.com/bedrock/home?#/modelaccess| .
74
+
75
+ ENDTRY .
76
+ "snippet-end:[bdr.abapv1.invokemodel_l2_claude_v2]
77
+ ov_answer = lv_answer.
78
+ ENDMETHOD .
79
+
80
+
81
+ METHOD l2_prompt_stable_diffusion .
82
+ CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
83
+
84
+ DATA (lo_session ) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
85
+ DATA (lo_bdr ) = /aws1/cl_bdr_factory=>create( lo_session ).
86
+ "snippet-start:[bdr.abapv1.invokemodel_l2_stable_diffusion]
87
+ TRY .
88
+ DATA (lo_bdr_l2_sd ) = /aws1/cl_bdr_l2_factory=>create_stable_diffusion_10( lo_bdr ).
89
+ " iv_prompt contains a prompt like 'Show me a picture of a unicorn reading an enterprise financial report'.
90
+ DATA (lv_image ) = lo_bdr_l2_sd->text_to_image( iv_prompt ).
91
+ CATCH /aws1/cx_bdraccessdeniedex INTO DATA (lo_ex ).
92
+ WRITE / lo_ex->get_text( ).
93
+ WRITE / | Don't forget to enable model access at https://console.aws.amazon.com/bedrock/home?#/modelaccess| .
94
+
95
+ ENDTRY .
96
+ "snippet-end:[bdr.abapv1.invokemodel_l2_stable_diffusion]
97
+ ov_image = lv_image.
98
+
99
+ ENDMETHOD .
100
+
101
+
39
102
METHOD prompt_claude_v2 .
40
- CONSTANTS : cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
103
+ CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
41
104
42
105
DATA (lo_session ) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
43
106
DATA (lo_bdr ) = /aws1/cl_bdr_factory=>create( lo_session ).
@@ -70,16 +133,15 @@ CLASS ZCL_AWS1_BDR_ACTIONS IMPLEMENTATION.
70
133
71
134
"Serialize into JSON with /ui2/cl_json -- this assumes SAP_UI is installed.
72
135
DATA (lv_json ) = /ui2/cl_json=>serialize(
73
- EXPORTING data = ls_input
136
+ data = ls_input
74
137
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
75
138
76
139
TRY .
77
140
DATA (lo_response ) = lo_bdr->invokemodel(
78
141
iv_body = /aws1/cl_rt_util=>string_to_xstring( lv_json )
79
142
iv_modelid = 'anthropic.claude-v2'
80
143
iv_accept = 'application/json'
81
- iv_contenttype = 'application/json'
82
- ).
144
+ iv_contenttype = 'application/json' ).
83
145
84
146
"Claude V2 Response format will be:
85
147
* {
@@ -98,17 +160,17 @@ CLASS ZCL_AWS1_BDR_ACTIONS IMPLEMENTATION.
98
160
99
161
DATA (lv_answer ) = ls_response-completion.
100
162
CATCH /aws1/cx_bdraccessdeniedex INTO DATA (lo_ex ).
101
- WRITE : / lo_ex->get_text( ).
102
- WRITE : / | Don't forget to enable model access at https://us-west-2. console.aws.amazon.com/bedrock/home?#/modelaccess| .
103
- "Catch other exceptions as desired...
163
+ WRITE / lo_ex->get_text( ).
164
+ WRITE / | Don't forget to enable model access at https://console.aws.amazon.com/bedrock/home?#/modelaccess| .
165
+
104
166
ENDTRY .
105
167
"snippet-end:[bdr.abapv1.invokemodel_claude_v2]
106
168
ov_answer = lv_answer.
107
169
ENDMETHOD .
108
170
109
171
110
172
METHOD prompt_stable_diffusion .
111
- CONSTANTS : cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
173
+ CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO' .
112
174
113
175
DATA (lo_session ) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
114
176
DATA (lo_bdr ) = /aws1/cl_bdr_factory=>create( lo_session ).
@@ -140,16 +202,15 @@ CLASS ZCL_AWS1_BDR_ACTIONS IMPLEMENTATION.
140
202
ls_input-steps = 50 .
141
203
142
204
DATA (lv_json ) = /ui2/cl_json=>serialize(
143
- EXPORTING data = ls_input
205
+ data = ls_input
144
206
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
145
207
146
208
TRY .
147
209
DATA (lo_response ) = lo_bdr->invokemodel(
148
210
iv_body = /aws1/cl_rt_util=>string_to_xstring( lv_json )
149
211
iv_modelid = 'stability.stable-diffusion-xl-v0'
150
212
iv_accept = 'application/json'
151
- iv_contenttype = 'application/json'
152
- ).
213
+ iv_contenttype = 'application/json' ).
153
214
154
215
"Stable Diffusion Result Format:
155
216
* {
@@ -181,9 +242,9 @@ CLASS ZCL_AWS1_BDR_ACTIONS IMPLEMENTATION.
181
242
DATA (lv_image ) = cl_http_utility=>if_http_utility~decode_x_base64( ls_response-artifacts[ 1 ]-base64 ).
182
243
ENDIF .
183
244
CATCH /aws1/cx_bdraccessdeniedex INTO DATA (lo_ex ).
184
- WRITE : / lo_ex->get_text( ).
185
- WRITE : / | Don't forget to enable model access at https://us-west-2. console.aws.amazon.com/bedrock/home?#/modelaccess| .
186
- "Catch other exceptions as desired...
245
+ WRITE / lo_ex->get_text( ).
246
+ WRITE / | Don't forget to enable model access at https://console.aws.amazon.com/bedrock/home?#/modelaccess| .
247
+
187
248
ENDTRY .
188
249
189
250
"snippet-end:[bdr.abapv1.invokemodel_stable_diffusion]
0 commit comments