Reactive Machines

Sethula ingxoxo enamathuba amaningi ngenodi ye-ejenti ye-Amazon Bedrock Flows (ukubuka kuqala)

I-Amazon Bedrock Flows inikeza umakhi obonakalayo onembile kanye nesethi yama-API ukuze axhumanise ngaphandle komthungo amamodeli esisekelo (ama-FM), izici ze-Amazon Bedrock, kanye nezinsizakalo ze-AWS zokwakha kanye nokwenza ngokuzenzakalelayo ukugeleza komsebenzi kwe-AI okuchazwe ngabasebenzisi esikalini. Ama-Amazon Bedrock Agents anikezela ngesixazululo esiphethwe ngokugcwele sokudala, ukusabalalisa, nokukala ama-agent e-AI ku-AWS. Nge-Flows, unganikeza ingqondo yesinqumo echazwe ngokucacile, echazwe umsebenzisi ukuze wenze ukugeleza komsebenzi, futhi wengeze ama-Agent njengendawo yokugeleza ukuze asebenzise ama-FM ukuze atolike futhi enze imisebenzi esekelwe ekucabangeni komongo ngezinyathelo ezithile ekuhambeni kwakho komsebenzi.

Namuhla, sijabule ukumemezela ingxoxo enamathuba amaningi ngenodi yomenzeli (ukuhlola kuqala), amandla amasha anamandla kokuthi I-Flows. Leli khono elisha lithuthukisa ukusebenza kwenodi yomenzeli, livumela izingxoxo eziguqukayo, ezibuyela emuva naphambili phakathi kwabasebenzisi nokugeleza, okufana nengxoxo yemvelo ekusebenzeni kokugeleza.

Ngalesi sici esisha, uma inodi yomenzeli idinga ukucaciswa noma umongo owengeziwe kumsebenzisi ngaphambi kokuthi iqhubeke, ingaphumuza ngokuhlakanipha ukusetshenziswa kokugeleza futhi icele ulwazi oluqondene nomsebenzisi. Ngemuva kokuthi umsebenzisi ethumele imininingwane eceliwe, ukugeleza kuphinda kuqalise ukusebenza ngokufaka okuthuthukisiwe, kugcinwe executionId yengxoxo.

Lokhu kudala ukuzizwisa okusebenzisanayo nokuqaphela umongo, ngoba inodi ingakwazi ukuzivumelanisa nokuziphatha kwayo ngokusekelwe ezimpendulweni zomsebenzisi. Umdwebo olandelayo wokulandelana ubonisa izinyathelo zokugeleza.

Izingxoxo ezishintshashintshayo zikwenza kuqonde konjiniyela ukuze bakhe ukugeleza komsebenzi kwe-ejenti okungavumelana nezimo futhi kucabange ngendlela eguquguqukayo. Lokhu kubaluleke kakhulu ezimeni eziyinkimbinkimbi lapho ukusebenzelana okukodwa kungase kungenele ukuqonda ngokugcwele nokusingatha izidingo zomsebenzisi.

Kulokhu okuthunyelwe, sixoxa ngokuthi ungayidala kanjani ingxoxo enamathuba amaningi futhi sihlole ukuthi lesi sici singaziguqula kanjani izinhlelo zakho zokusebenza ze-AI.

Uhlolojikelele lwesixazululo

Cabanga nge-ACME Corp, i-ejensi ehamba phambili yenganekwane yezokuvakasha eku-inthanethi eyakha umhleli wohambo lwamaholide oluxhaswe yi-AI isebenzisa i-Flows. Babhekana nezinselelo ezimbalwa ekusebenziseni kwabo:

  • Umhleli wabo akakwazi ukuhlanganyela ezingxoxweni ezinamandla, ezidinga yonke imininingwane yohambo kusengaphambili esikhundleni sokubuza imibuzo yokulandelela
  • Babhekana nezinselele zokuhlela izinqubo zokuhlela uhambo oluyinkimbinkimbi, olunezinyathelo eziningi ezidinga ukuxhumanisa izindiza, indawo yokuhlala, imisebenzi, nezinto zokuhamba ezindaweni eziningi lapho uya khona, ngokuvamile okuholela ekungasebenzini kahle nasekuhlangabezaneni nezidingo zamakhasimende.
  • Uhlelo lwabo lokusebenza alukwazi ukuzivumelanisa nezincomo zalo lapho abasebenzisi beshintsha abakuthandayo noma bethula izithiyo ezintsha phakathi nenqubo yokuhlela.

Ake sihlole ukuthi ikhono elisha lezingxoxo eziningi ezishintshashintshayo ku-Flows lizisingatha kanjani lezi zinselele futhi lenze i-ACME Corp ikwazi ukwakha umhleli ohlakaniphe kakhulu, owazi umongo, futhi osebenza kahle kakhulu wohambo lweholide othuthukisa ngempela ukuzizwisa kwekhasimende okuhlela uhambo.

Ukugeleza kunikeza izindlela ezimbili ezihlukene zokusebenzisana. Ngemibuzo yokuvakasha evamile, abasebenzisi bathola izimpendulo ezisheshayo ezixhaswe yi-LLM. Kodwa-ke, lapho abasebenzisi befuna ukusesha noma ukubhuka izindiza namahhotela, baxhunywe kumenzeli obaqondisayo kunqubo, baqoqe ulwazi olubalulekile kuyilapho begcina iseshini kuze kuphele. Ukuhamba komsebenzi kuboniswe kumdwebo olandelayo.

Okudingekayo

Kulesi sibonelo, udinga okulandelayo:

  • I-akhawunti ye-AWS nomsebenzisi onendima ye-AWS Identity and Access Management (IAM) egunyazwe ukusebenzisa i-Bedrock. Ukuze uthole isiqondiso, bheka Ukuqalisa nge-Amazon Bedrock. Qiniseka ukuthi indima ihlanganisa izimvume zokusebenzisa i-Flows, njengoba kuchazwe kokuthi Okudingekayo Kwe-Amazon Bedrock Flows, kanye nezimvume zokusebenzisa ama-Agent, njengoba kuchazwe ku-Prerequisites yokwakha ama-Amazon Bedrock Agents.
  • Ukufinyelela kunikezwe kumamodeli owasebenzisayo ukucela nokuhlola. Ukuze uthole isiqondiso, bona okuthi Phatha ukufinyelela kumamodeli esisekelo se-Amazon Bedrock.
  • Dala i-Amazon Bedrock Agent ukuze wenze ngokuzenzakalelayo umsebenzi wohlelo lokusebenza lwe-ejensi yezokuvakasha ngokuhlela ukusebenzelana phakathi kwe-FM, izingcingo zama-API, nezingxoxo zabasebenzisi. Umenzeli wethu wezokuvakasha unikeza imisebenzi emine ebalulekile yokubhuka: ukusesha izindiza ezitholakalayo, ukuthola ukubhukha indiza, ukuthola indawo efanelekile yamahhotela, nokuqedela ukubhukha amahhotela. Ukuze uthole isibonelo sendlela yokudala i-ejenti yezokuvakasha, bheka ama-Agents we-Amazon Bedrock manje asekela ukugcinwa kwenkumbulo nokuchazwa kwekhodi (ukubuka kuqala). Qiniseka ukuthi umenzeli unomsebenzi wokufaka womsebenzisi onikwe amandla. Lesi silungiselelo sivumela umenzeli ukuthi aqoqe yonke imininingwane edingekayo ngengxoxo yemvelo, nanoma isicelo sokuqala singaphelele.

Dala ukugeleza kwengxoxo enamathuba amaningi

Ukuze udale ukugeleza kwengxoxo enamathuba amaningi, qedela lezi zinyathelo ezilandelayo:

  1. Ku-console ye-Bedrock, khetha Iyageleza ngaphansi Amathuluzi omakhi kufasitelana lokuzulazula.
  2. Qala ukudala ukugeleza okusha okubizwa ACME-Corp-trip-planner.

Ukuze uthole imiyalelo enemininingwane yokudala Ukugeleza, bona I-Amazon Bedrock Flows manje isiyatholakala ngokuphepha okuthuthukisiwe nokulandeleka.

I-Bedrock ihlinzeka ngezinhlobo ezahlukene ze-node ukwakha ukugeleza kwakho okusheshayo.

  1. Khetha i-node esheshayo ukuze uhlole inhloso yokufaka. Izohlukanisa izinhloso ngokuthi categoryLetter=A uma umsebenzisi efuna ukusesha noma ukubhuka ihhotela noma indiza futhi categoryLetter=B uma umsebenzisi ecela ulwazi ngendawo okuyiwa kuyo. Uma usebenzisa i-Amazon Bedrock Prompt Management, ungakhetha ukwaziswa kusuka lapho.

Kule nodi, sisebenzisa umlayezo olandelayo ekucushweni okusheshayo:

You are a query classifier. Analyze the {{input}} and respond with a single letter:

A: Travel planning/booking queries for hotel and flights Example: "Find flights to London"
B: Destination information queries Example: "What's the weather in Paris?"

Return only 'A' or 'B' based on the primary intent.

Isibonelo sethu, sikhethe imodeli ye-Amazon's Nova Lite futhi setha ipharamitha yezinga lokushisa ibe ngu-0.1 ukuze sinciphise ukubona izinto ezingekho nokuthuthukisa ukwethembeka okukhiphayo. Ungakhetha amanye amamodeli atholakalayo e-Amazon Bedrock.

  1. Dala i-Condition node ngolwazi olulandelayo bese uxhuma nenodi Yokuhlukanisa Umbuzo. Kule nodi, inani lesimo lithi:
    Name: Booking
    Condition: categoryLetter=="A"

  2. Dala i-node yesibili yokwaziswa yesicelo somhlahlandlela we-LLM. Okokufaka kwenodi kuwumphumela wokuphuma kwenodi Yesimo “Uma zonke izimo zingamanga.” Ukuze uqedele leli gatsha lokugeleza, engeza i-Flow output node bese uxhuma ukuphuma kwenodi esheshayo kuyo.
    You are AcmeGuide, an enthusiastic and knowledgeable travel guide. 
    Your task is to provide accurate and comprehensive information about travel destinations to users. 
    When answering a user's query, cover the following key aspects:
    
    - Weather and best times to visit
    - Famous local figures and celebrities
    - Major attractions and landmarks
    - Local culture and cuisine
    - Essential travel tips
    
    Answer the user's question {{query}}. 
    
    Present the information in a clear and engaging manner. 
    If you are unsure about specific details, acknowledge this and provide the most reliable information available. 
    Avoid any hallucinations or fabricated content. 
    Provide your response immediately after these instructions, without any preamble or additional text.

Isibonelo sethu, sikhethe imodeli ye-Amazon's Nova Lite futhi setha ipharamitha yezinga lokushisa ibe ngu-0.1 ukuze sinciphise ukubona izinto ezingekho nokuthuthukisa ukwethembeka okukhiphayo.

  1. Ekugcineni, dala inodi yomenzeli futhi uyilungiselele ukusebenzisa i-ejenti edalwe ngaphambilini. Okokufaka kwenodi wukuphuma kokuphuma kwenodi Yesimo “Ukubhuka Kwemibandela.” Ukuze uqedele leli gatsha lokugeleza, engeza i-Flow output node bese uxhuma okokukhiphayo kwe-ejenti kuyo.
  2. Khetha Londoloza ukuze ulondoloze ukugeleza kwakho.

Hlola ukugeleza

Manje usukulungele ukuhlola ukugeleza nge-Amazon Bedrock console noma i-API. Okokuqala, sicela ulwazi mayelana neParis. Empendulweni, ungabuyekeza ukulandelelwa kokugeleza, okunikeza ukubonakala okunemininingwane kunqubo yokwenza. Lokhu kulandelelwa kukusiza ukuthi ugade futhi ulungise izikhathi zokuphendula esinyathelweni ngasinye, ulandelele ukucutshungulwa kokokufaka kwekhasimende, uqinisekise ukuthi ama- guardrail asetshenziswa kahle yini, futhi ukhombe noma yiziphi izithiyo ohlelweni. Ukulandelela ukugeleza kunikeza ukubuka konke okuphelele kwayo yonke inqubo yokukhiqiza izimpendulo, okuvumela ukuxazulula inkinga okuphumelelayo kakhudlwana kanye nokwenza kahle kokusebenza.,

Okulandelayo, siqhubeka nengxoxo yethu futhi sicele ukubhukha uhambo oluya eParis. Njengoba ubona, manje ngosekelo lwe-multi-turn ku-Flows, inodi yethu yomenzeli iyakwazi ukubuza imibuzo yokulandelela ukuze iqoqe lonke ulwazi futhi yenze ukubhuka.

Siyaqhubeka nokukhuluma nomenzeli wethu, sinikeza lonke ulwazi oludingekayo, futhi ekugcineni, umenzeli usenzela ukubhukha. In the iminonjana, ungakwazi ukuhlola ExecutionId egcina iseshini yezicelo zamajika amaningi.

Ngemva kokuqinisekisa, umenzeli ugcwalise ngempumelelo isicelo somsebenzisi.

Sebenzisa ama-API we-Amazon Bedrock Flows

Ungakwazi futhi ukusebenzisana nokugeleza ngokuhlelekile usebenzisa i-InvokeFlow API, njengoba kuboniswe kukhodi elandelayo. Ngesikhathi sokuncenga kokuqala, isistimu ikhiqiza ngokuzenzakalelayo okuhlukile executionIdegcina iseshini ihora elingu-1. Lokhu executionId kubalulekile kokulandelayo InvokeFlow Amakholi e-API, ngoba inikeza umenzeli ulwazi lwengqikithi oludingekayo ukuze kugcinwe umlando wengxoxo nokuqedela izenzo.

{
  "flowIdentifier": " MQM2RM1ORA",
  "flowAliasIdentifier": "T00ZXPGI35",
  "inputs": [
    {
      "content": {
        "document": "Book a flight to paris"
      },
      "nodeName": "FlowInputNode",
      "nodeOutputName": "document"
    }
  ]
}

Uma inodi ye-ejenti ekugelezeni inquma ukuthi idinga ulwazi olwengeziwe kumsebenzisi, ukusakaza kwempendulo (responseStream) kusuka InvokeFlow kuhlanganisa a FlowMultiTurnInputRequestEvent into yomcimbi. Umcimbi unolwazi oluceliwe kokuqukethwe(FlowMultiTurnInputContent) inkambu.

Okulandelayo yisibonelo FlowMultiTurnInputRequestEvent Into ye-JSON:

{
  "nodeName": "Trip_planner",
  "nodeType": "AgentNode",
  "content": {
      "document": "Certainly! I'd be happy to help you book a flight to Paris. 
To get started, I need some more information:
1. What is your departure airport (please provide the IATA airport code if possible)?
2. What date would you like to travel (in YYYYMMDD format)?
3. Do you have a preferred time for the flight (in HHMM format)?
Once I have these details, I can search for available flights for you."
  }
}

Ngenxa yokuthi ukugeleza akukwazi ukuqhubeka kuze kutholwe okokufaka okwengeziwe, ukugeleza nakho kukhipha a FlowCompletionEvent umcimbi. Ukugeleza njalo kukhipha i FlowMultiTurnInputRequestEvent ngaphambi kwe FlowCompletionEvent. Uma inani le completionReason kwe FlowCompletionEvent umcimbi u INPUT_REQUIREDukugeleza kudinga ulwazi olwengeziwe ngaphambi kokuthi kuqhubeke.

Okulandelayo yisibonelo FlowCompletionEvent Into ye-JSON:

{
  "completionReason": "INPUT_REQUIRED"
}

Thumela impendulo yomsebenzisi emuva ekugelezeni ngokushayela i- InvokeFlow I-API futhi. Qiniseka ukuthi ufaka i- executionId okwengxoxo.

Okulandelayo isibonelo isicelo se-JSON se- InvokeFlow I-API, ehlinzeka ngolwazi olwengeziwe oludingwa inodi yomenzeli:

{
  "flowIdentifier": "MQM2RM1ORA",
  "flowAliasIdentifier": "T00ZXPGI35",
  "executionId": "b6450554-f8cc-4934-bf46-f66ed89b60a0",
  "inputs": [
    {
      "content": {
        "document": "Madrid on Valentine's day 2025"
      },
      "nodeName": "Trip_planner",
      "nodeInputName": "agentInputText"
    }
  ]
}

Lokhu kuya phambili naphambili kuyaqhubeka kuze kube yilapho kungabikho olunye ulwazi oludingekayo futhi umenzeli unakho konke okudingekayo ukuze aqedele isicelo somsebenzisi. Uma lungekho olunye ulwazi oludingekayo, ukugeleza kukhipha a FlowOutputEvent umcimbi, oqukethe impendulo yokugcina.

Okulandelayo yisibonelo FlowOutputEvent Into ye-JSON:

{
  "nodeName": "FlowOutputNode",
  "content": {
      "document": "Great news! I've successfully booked your flight to Paris. Here are the details:

- Date: February 14, 2025 (Valentine's Day)
- Departure: Madrid (MAD) at 20:43 (8:43 PM)
- Arrival: Paris (CDG)

Your flight is confirmed."
  }
}

Ukugeleza nakho kukhipha a FlowCompletionEvent umcimbi. Inani le completionReason kuyinto SUCCESS.

Okulandelayo yisibonelo FlowCompletionEvent Into ye-JSON:

{
  "completionReason": "SUCCESS"
}

Ukuze uqalise ngokucela izikhathi eziningi, sebenzisa ikhodi yesibonelo elandelayo. Iphatha ukusebenzisana okulandelayo isebenzisa okufanayo executionId futhi igcina umongo kuyo yonke ingxoxo. Udinga ukucacisa i-ID yokugeleza kwakho phakathi FLOW_ID kanye ne-ID yayo yesibizo ku FLOW_ALIAS_ID (bheka kokuthi Buka ulwazi mayelana nokugeleza ku-Amazon Bedrock ukuze uthole imiyalelo yokuthola lawa ma-ID).

Uhlelo luzocela okokufaka okwengeziwe njengoba kudingeka, kusetshenziswa i- executionId ukugcina umongo kukho konke ukusebenzelana okuningi, ukuhlinzeka ngokugeleza kwengxoxo okuhambisanayo nokuqhubekayo ngenkathi kwenziwa izenzo eziceliwe.

"""
Runs an Amazon Bedrock flow and handles multi-turn interactions
"""
import boto3
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def invoke_flow(client, flow_id, flow_alias_id, input_data, execution_id=None):
    """
    Invoke an Amazon Bedrock flow and handle the response stream.

    Args:
        client: Boto3 client for Bedrock
        flow_id: The ID of the flow to invoke
        flow_alias_id: The alias ID of the flow
        input_data: Input data for the flow
        execution_id: Execution ID for continuing a flow. Defaults to None for first run.

    Returns:
        Dict containing flow_complete status, input_required info, and execution_id
    """
    request_params = {
        "flowIdentifier": flow_id,
        "flowAliasIdentifier": flow_alias_id,
        "inputs": [input_data]
    }
    
    if execution_id:
        request_params["executionId"] = execution_id

    response = client.invoke_flow(**request_params)
    execution_id = response.get('executionId', execution_id)
    
    input_required = None
    flow_status = ""

    for event in response['responseStream']:
        if 'flowCompletionEvent' in event:
            flow_status = event['flowCompletionEvent']['completionReason']
        elif 'flowMultiTurnInputRequestEvent' in event:
            input_required = event
        elif 'flowOutputEvent' in event:
            print(event['flowOutputEvent']['content']['document'])
        elif 'flowTraceEvent' in event:
            print("Flow trace:", event['flowTraceEvent'])

    return {
        "flow_status": flow_status,
        "input_required": input_required,
        "execution_id": execution_id
    }

def create_input_data(text, node_name="FlowInputNode", is_initial_input=True):
    """
    Create formatted input data dictionary.
    
    Args:
        text: The input text
        node_name: Name of the node (defaults to "FlowInputNode")
        is_initial_input: Boolean indicating if this is the first input (defaults to True)
    
    Returns:
        Dict containing the formatted input data
    """
    input_data = {
        "content": {"document": text},
        "nodeName": node_name
    }

    if is_initial_input:
        input_data["nodeOutputName"] = "document"
    else:
        input_data["nodeInputName"] = "agentInputText"

    return input_data

def main():
    FLOW_ID = "MQM2RM1ORA"
    FLOW_ALIAS_ID = "T00ZXPGI35"
    
    session = boto3.Session(
        region_name="us-east-1"
    )
    bedrock_agent_client = session.client(
        'bedrock-multi-turn', 
    )

    execution_id = None

    try:
        # Initial input
        user_input = input("Enter input: ")
        input_data = create_input_data(user_input, is_initial_input=True)

        while True:
            result = invoke_flow(
                bedrock_agent_client, 
                FLOW_ID, 
                FLOW_ALIAS_ID, 
                input_data, 
                execution_id
            )
        
            if result['flow_status'] == "SUCCESS":
                break
            
            if result['flow_status'] == "INPUT_REQUIRED":
                more_input = result['input_required']
                prompt = f"{more_input['flowMultiTurnInputRequestEvent']['content']['document']}: "
                user_input = input(prompt)
                # Subsequent inputs
                input_data = create_input_data(
                    user_input,
                    more_input['flowMultiTurnInputRequestEvent']['nodeName'],
                    is_initial_input=False
                )
            
            execution_id = result['execution_id']

    except Exception as e:
        logger.error(f"Error occurred: {str(e)}", exc_info=True)

if __name__ == "__main__":
    main()

Hlanza

Ukuze uhlanze izinsiza zakho, susa ukugeleza, i-ejenti, imisebenzi ye-AWS Lambda edalelwe umenzeli, nesisekelo solwazi.

Isiphetho

Ukwethulwa kwekhono lezingxoxo ezishintshashintshashintshayo ku-Flows kuphawula intuthuko ebalulekile ekwakheni izinhlelo zokusebenza zezingxoxo ze-AI eziyinkimbinkimbi. Kulokhu okuthunyelwe, sibonise ukuthi lesi sici sivumela kanjani abathuthukisi ukuthi bakhe ukugeleza komsebenzi okuguquguqukayo, okwazi umongo okungasingatha ukusebenzisana okuyinkimbinkimbi ngenkathi kugcinwa umlando wengxoxo nesimo. Inhlanganisela ye-Flows visual builder interface kanye nama-API anamandla e-ejenti akwenza kube lula ukuthuthukisa nokusebenzisa izinhlelo zokusebenza ezihlakaniphile ezingaba nezingxoxo zemvelo, ezinezinyathelo eziningi.

Ngaleli khono elisha, amabhizinisi angakha izixazululo ze-AI ezinembile neziphendulayo ezisiza kangcono izidingo zamakhasimende abo. Noma ngabe uthuthukisa isistimu yokubhuka yokuvakasha, isevisi yamakhasimende noma olunye uhlelo lokusebenza lwengxoxo, ingxoxo enamathuba amaningi ne-Flows inikeza amathuluzi adingekayo ukuze wakhe ukugeleza komsebenzi kwe-AI okuyinkimbinkimbi ngobunkimbinkimbi obuncane.

Sikukhuthaza ukuthi uhlole lawa makhono kukhonsoli ye-Bedrock futhi uqale ukwakha izinhlelo zakho zokusebenza zezingxoxo eziningi namuhla. Ukuze uthole ulwazi olwengeziwe kanye nemibhalo enemininingwane, vakashela i-Amazon Bedrock User Guide. Sibheke ngabomvu ukubona izixazululo ezintsha ozozidala ngalezi zici ezintsha ezinamandla.


Mayelana Nababhali

Christian Kamwangala iyi-AI/ML kanye ne-Generative AI Specialist Solutions Architect kwa-AWS, ezinze eParis, eFrance. Usiza amakhasimende ebhizinisi umakhi futhi asebenzise izixazululo ze-AI ezisezingeni eliphezulu esebenzisa i-suite ephelele yamathuluzi e-AWS, egxile ezinhlelweni ezilungele ukukhiqiza ezilandela izinqubo ezihamba phambili zemboni. Ngesikhathi sakhe sokuphumula, uChristian uyakujabulela ukuhlola imvelo nokuchitha isikhathi nomndeni nabangane.

U-Irene Arroyo Delgado uyi-AI/ML kanye ne-GenAI Specialist Solutions Architect kwa-AWS. Ugxile ekukhipheni amandla e-AI ekhiqizayo esimweni ngasinye sokusetshenziswa nasekukhiqizeni imithwalo yemisebenzi ye-ML ukuze kuzuzwe imiphumela yebhizinisi efiswa ngamakhasimende ngokwenza imijikelezo yokuphila ye-ML ephela-ekupheleni. Ngesikhathi sakhe sokuphumula, u-Irene uyakujabulela ukuhamba nokuhamba ngezinyawo.

Source link

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button