/AWS1/IF_BDZ=>RETRIEVEANDGENERATESTREAM()¶
About RetrieveAndGenerateStream¶
Queries a knowledge base and generates responses based on the retrieved results, with output in streaming format.
The CLI doesn't support streaming operations in Amazon Bedrock, including InvokeModelWithResponseStream.
This operation requires permission for the bedrock:RetrieveAndGenerate action.
Method Signature¶
METHODS /AWS1/IF_BDZ~RETRIEVEANDGENERATESTREAM
IMPORTING
!IV_SESSIONID TYPE /AWS1/BDZSESSIONID OPTIONAL
!IO_INPUT TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER01 OPTIONAL
!IO_RETRIEVEANDGENERATECONF TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER02 OPTIONAL
!IO_SESSIONCONFIGURATION TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER03 OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_bdzretrieveandgener08
RAISING
/AWS1/CX_BDZACCESSDENIEDEX
/AWS1/CX_BDZBADGATEWAYEX
/AWS1/CX_BDZCONFLICTEXCEPTION
/AWS1/CX_BDZDEPENDENCYFAILEDEX
/AWS1/CX_BDZINTERNALSERVEREX
/AWS1/CX_BDZRESOURCENOTFOUNDEX
/AWS1/CX_BDZSERVICEQUOTAEXCDEX
/AWS1/CX_BDZTHROTTLINGEX
/AWS1/CX_BDZVALIDATIONEX
/AWS1/CX_BDZCLIENTEXC
/AWS1/CX_BDZSERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
io_input TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER01 /AWS1/CL_BDZRETRIEVEANDGENER01¶
Contains the query to be made to the knowledge base.
Optional arguments:¶
iv_sessionid TYPE /AWS1/BDZSESSIONID /AWS1/BDZSESSIONID¶
The unique identifier of the session. When you first make a
RetrieveAndGeneraterequest, Amazon Bedrock automatically generates this value. You must reuse this value for all subsequent requests in the same conversational session. This value allows Amazon Bedrock to maintain context and knowledge from previous interactions. You can't explicitly set thesessionIdyourself.
io_retrieveandgenerateconf TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER02 /AWS1/CL_BDZRETRIEVEANDGENER02¶
Contains configurations for the knowledge base query and retrieval process. For more information, see Query configurations.
io_sessionconfiguration TYPE REF TO /AWS1/CL_BDZRETRIEVEANDGENER03 /AWS1/CL_BDZRETRIEVEANDGENER03¶
Contains details about the session with the knowledge base.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_bdzretrieveandgener08 /AWS1/CL_BDZRETRIEVEANDGENER08¶
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->retrieveandgeneratestream(
io_input = new /aws1/cl_bdzretrieveandgener01( |string| )
io_retrieveandgenerateconf = new /aws1/cl_bdzretrieveandgener02(
io_externalsourcesconf = new /aws1/cl_bdzexternalsrcsretr00(
io_generationconfiguration = new /aws1/cl_bdzexternalsrcsgene00(
io_guardrailconfiguration = new /aws1/cl_bdzguardrailconf(
iv_guardrailid = |string|
iv_guardrailversion = |string|
)
io_inferenceconfig = new /aws1/cl_bdzinferenceconfig(
io_textinferenceconfig = new /aws1/cl_bdztextinferencecfg(
it_stopsequences = VALUE /aws1/cl_bdzragstopsequences_w=>tt_ragstopsequences(
( new /aws1/cl_bdzragstopsequences_w( |string| ) )
)
iv_maxtokens = 123
iv_temperature = '0.1'
iv_topp = '0.1'
)
)
io_performanceconfig = new /aws1/cl_bdzperformanceconf( |string| )
io_prompttemplate = new /aws1/cl_bdzprompttemplate( |string| )
it_addlmodelrequestfields = VALUE /aws1/cl_rt_document=>tt_map(
(
VALUE /aws1/cl_rt_document=>ts_document_maprow(
key = |string|
value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
)
)
)
)
it_sources = VALUE /aws1/cl_bdzexternalsource=>tt_externalsources(
(
new /aws1/cl_bdzexternalsource(
io_bytecontent = new /aws1/cl_bdzbytecontentdoc(
iv_contenttype = |string|
iv_data = '5347567362473873563239796247513D'
iv_identifier = |string|
)
io_s3location = new /aws1/cl_bdzs3objectdoc( |string| )
iv_sourcetype = |string|
)
)
)
iv_modelarn = |string|
)
io_knowledgebaseconf = new /aws1/cl_bdzknowledgebaseret00(
io_generationconfiguration = new /aws1/cl_bdzgenerationconf(
io_guardrailconfiguration = new /aws1/cl_bdzguardrailconf(
iv_guardrailid = |string|
iv_guardrailversion = |string|
)
io_inferenceconfig = new /aws1/cl_bdzinferenceconfig(
io_textinferenceconfig = new /aws1/cl_bdztextinferencecfg(
it_stopsequences = VALUE /aws1/cl_bdzragstopsequences_w=>tt_ragstopsequences(
( new /aws1/cl_bdzragstopsequences_w( |string| ) )
)
iv_maxtokens = 123
iv_temperature = '0.1'
iv_topp = '0.1'
)
)
io_performanceconfig = new /aws1/cl_bdzperformanceconf( |string| )
io_prompttemplate = new /aws1/cl_bdzprompttemplate( |string| )
it_addlmodelrequestfields = VALUE /aws1/cl_rt_document=>tt_map(
(
VALUE /aws1/cl_rt_document=>ts_document_maprow(
key = |string|
value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
)
)
)
)
io_orchestrationconf = new /aws1/cl_bdzorchestrationconf(
io_inferenceconfig = new /aws1/cl_bdzinferenceconfig(
io_textinferenceconfig = new /aws1/cl_bdztextinferencecfg(
it_stopsequences = VALUE /aws1/cl_bdzragstopsequences_w=>tt_ragstopsequences(
( new /aws1/cl_bdzragstopsequences_w( |string| ) )
)
iv_maxtokens = 123
iv_temperature = '0.1'
iv_topp = '0.1'
)
)
io_performanceconfig = new /aws1/cl_bdzperformanceconf( |string| )
io_prompttemplate = new /aws1/cl_bdzprompttemplate( |string| )
io_querytransformationconf = new /aws1/cl_bdzquerytransfmtion00( |string| )
it_addlmodelrequestfields = VALUE /aws1/cl_rt_document=>tt_map(
(
VALUE /aws1/cl_rt_document=>ts_document_maprow(
key = |string|
value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
)
)
)
)
io_retrievalconfiguration = new /aws1/cl_bdzknowledgebaseret01(
io_vectorsearchconfiguration = new /aws1/cl_bdzknowledgebasevec00(
io_filter = new /aws1/cl_bdzretrievalfilter(
io_equals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_in = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_listcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notin = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_startswith = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_stringcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
it_andall = VALUE /aws1/cl_bdzretrievalfilter=>tt_retrievalfilterlist(
(
new /aws1/cl_bdzretrievalfilter(
io_equals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_in = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_listcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notin = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_startswith = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_stringcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
it_orall = VALUE /aws1/cl_bdzretrievalfilter=>tt_retrievalfilterlist(
)
)
)
)
it_orall = VALUE /aws1/cl_bdzretrievalfilter=>tt_retrievalfilterlist(
(
new /aws1/cl_bdzretrievalfilter(
io_equals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_greaterthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_in = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthan = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_lessthanorequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_listcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notequals = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_notin = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_startswith = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
io_stringcontains = new /aws1/cl_bdzfilterattribute(
io_value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
iv_key = |string|
)
it_andall = VALUE /aws1/cl_bdzretrievalfilter=>tt_retrievalfilterlist(
)
)
)
)
)
io_implicitfilterconf = new /aws1/cl_bdzimplicitfilterconf(
it_metadataattributes = VALUE /aws1/cl_bdzmetadataattrschema=>tt_metadataattributeschemalist(
(
new /aws1/cl_bdzmetadataattrschema(
iv_description = |string|
iv_key = |string|
iv_type = |string|
)
)
)
iv_modelarn = |string|
)
io_rerankingconfiguration = new /aws1/cl_bdzvectorsrchrerank00(
io_bedrockrerankingconf = new /aws1/cl_bdzvectorsrchbedroc00(
io_metadataconfiguration = new /aws1/cl_bdzmetconfforrerank00(
io_selectivemodeconf = new /aws1/cl_bdzrerankingmetseli00(
it_fieldstoexclude = VALUE /aws1/cl_bdzfieldforreranking=>tt_fieldsforreranking(
( new /aws1/cl_bdzfieldforreranking( |string| ) )
)
it_fieldstoinclude = VALUE /aws1/cl_bdzfieldforreranking=>tt_fieldsforreranking(
( new /aws1/cl_bdzfieldforreranking( |string| ) )
)
)
iv_selectionmode = |string|
)
io_modelconfiguration = new /aws1/cl_bdzvectorsrchbedroc01(
it_addlmodelrequestfields = VALUE /aws1/cl_rt_document=>tt_map(
(
VALUE /aws1/cl_rt_document=>ts_document_maprow(
key = |string|
value = /AWS1/CL_RT_DOCUMENT=>FROM_JSON_STR( |\{"foo":"this is a JSON object..."\}| )
)
)
)
iv_modelarn = |string|
)
iv_numberofrerankedresults = 123
)
iv_type = |string|
)
iv_numberofresults = 123
iv_overridesearchtype = |string|
)
)
iv_knowledgebaseid = |string|
iv_modelarn = |string|
)
iv_type = |string|
)
io_sessionconfiguration = new /aws1/cl_bdzretrieveandgener03( |string| )
iv_sessionid = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
TRY.
WHILE lo_result->get_stream( )->/aws1/if_rt_stream_reader~data_available( ) = ABAP_TRUE.
lo_event = lo_result->get_stream( )->READ( ).
IF lo_event->get_output( ) IS NOT INITIAL.
" process this kind of event
ELSEIF lo_event->get_citation( ) IS NOT INITIAL.
" process this kind of event
ELSEIF lo_event->get_guardrail( ) IS NOT INITIAL.
" process this kind of event
ENDIF.
ENDWHILE.
CATCH /aws1/cx_bdzaccessdeniedex.
" handle error in stream
CATCH /aws1/cx_bdzinternalserverex.
" handle error in stream
CATCH /aws1/cx_bdzvalidationex.
" handle error in stream
CATCH /aws1/cx_bdzthrottlingex.
" handle error in stream
CATCH /aws1/cx_bdzdependencyfailedex.
" handle error in stream
CATCH /aws1/cx_bdzbadgatewayex.
" handle error in stream
CATCH /aws1/cx_bdzresourcenotfoundex.
" handle error in stream
CATCH /aws1/cx_bdzservicequotaexcdex.
" handle error in stream
CATCH /aws1/cx_bdzconflictexception.
" handle error in stream
ENDTRY.
lv_sessionid = lo_result->get_sessionid( ).
ENDIF.