جنریٹیو ڈیٹا انٹیلی جنس

AWS CloudFormation ٹیمپلیٹس کے ذریعے اپنے Amazon Lex bot کا نظم کریں۔ ایمیزون ویب سروسز

تاریخ:

ایمیزون لیکس ایپلی کیشنز میں بات چیت کے انٹرفیس کو ڈیزائن کرنے، بنانے، جانچنے، اور تعینات کرنے کے لیے قدرتی زبان کے جدید ماڈلز کے ساتھ مکمل طور پر منظم مصنوعی ذہانت (AI) سروس ہے۔ یہ صارف کے ان پٹ کو سمجھنے کے لیے اعلی درجے کی گہری سیکھنے والی ٹیکنالوجیز کا استعمال کرتا ہے، جس سے ڈویلپرز کو چیٹ بوٹس، ورچوئل اسسٹنٹس، اور دیگر ایپلی کیشنز بنانے کے قابل بناتے ہیں جو صارفین کے ساتھ قدرتی زبان میں بات چیت کر سکتے ہیں۔

اپنے ایمیزون لیکس بوٹس کا استعمال کرتے ہوئے انتظام کرنا AWS کلاؤڈ فارمیشن آپ کو بوٹ اور تمام AWS وسائل کی وضاحت کرنے والے ٹیمپلیٹس بنانے کی اجازت دیتا ہے جن پر یہ منحصر ہے۔ AWS CloudFormation آپ کی جانب سے ان وسائل کو فراہم اور ترتیب دیتا ہے، نئے ماحول میں بوٹس کی تعیناتی کے دوران انسانی غلطی کے خطرے کو دور کرتا ہے۔ CloudFormation استعمال کرنے کے فوائد میں شامل ہیں:

  • مستقل مزاجی - ایک CloudFormation ٹیمپلیٹ ایمیزون لیکس بوٹ سے وابستہ وسائل کو تعینات کرنے اور ان کا نظم کرنے کا ایک زیادہ مستقل اور خودکار طریقہ فراہم کرتا ہے۔
  • ورژن کنٹرول۔ - AWS CloudFormation کے ساتھ، آپ اپنے CloudFormation ٹیمپلیٹس کو منظم کرنے کے لیے Git جیسے ورژن کنٹرول سسٹم استعمال کر سکتے ہیں۔ یہ آپ کو اپنے بوٹ کے مختلف ورژنز کو برقرار رکھنے اور ضرورت پڑنے پر پچھلے ورژنز پر واپس جانے کی اجازت دیتا ہے۔
  • دوبارہ پریوست - آپ CloudFormation ٹیمپلیٹس کو متعدد ماحول میں دوبارہ استعمال کر سکتے ہیں، جیسے کہ ترقی، سٹیجنگ اور پروڈکشن۔ اس سے مختلف ماحول میں ایک ہی بوٹ کی وضاحت کرنے میں وقت اور محنت کی بچت ہوتی ہے۔
  • توسیع کی - جیسا کہ آپ کا ایمیزون لیکس بوٹ پیچیدگی میں بڑھتا ہے، اس کے ذریعے اس کا انتظام کرنا AWS مینجمنٹ کنسول زیادہ چیلنج بن جاتا ہے. AWS CloudFormation بوٹ کی تعریف اور وسائل کو منظم کرنے کے لیے زیادہ ہموار اور موثر انداز اختیار کرنے کی اجازت دیتا ہے۔
  • میشن - CloudFormation ٹیمپلیٹ کا استعمال آپ کو تعیناتی کے عمل کو خودکار کرنے کی اجازت دیتا ہے۔ آپ AWS خدمات جیسے استعمال کر سکتے ہیں۔ AWS کوڈ پائپ لائن اور AWS کوڈ بلڈ۔ اپنے ایمیزون لیکس بوٹ کو خود بخود بنانے، جانچنے اور تعینات کرنے کے لیے۔

اس پوسٹ میں، ہم Amazon Lex V2 بوٹ کے لیے CloudFormation ٹیمپلیٹ بنانے میں شامل اقدامات کے بارے میں آپ کی رہنمائی کرتے ہیں۔

حل جائزہ

ہم نے منتخب کیا ہے کتاب کا سفر بوٹ اس مشق کے لیے ہمارے نقطہ آغاز کے طور پر۔ ہم شروع سے ایک نیا بوٹ بنانے کے لیے CloudFormation ٹیمپلیٹ کا استعمال کرتے ہیں، بشمول ارادوں، سلاٹس اور دیگر مطلوبہ اجزاء کی وضاحت کرنا۔ مزید برآں، ہم ورژن کنٹرول، عرفی نام، انٹیگریٹنگ جیسے موضوعات کو دریافت کرتے ہیں۔ او ڈبلیو ایس لامبڈا۔ افعال، مشروط شاخیں بنانا، اور لاگنگ کو فعال کرنا۔

شرائط

آپ کے پاس درج ذیل شرائط ہونی چاہئیں:

  • An AWS اکاؤنٹ CloudFormation ٹیمپلیٹ بنانے اور تعینات کرنے کے لیے
  • ضروری AWS شناخت اور رسائی کا انتظام (اے ایم آئی) اجازتیں AWS CloudFormation اور ٹیمپلیٹ میں استعمال ہونے والے وسائل کو تعینات کرنے کے لیے
  • ایمیزون لیکس، لیمبڈا فنکشنز، اور متعلقہ خدمات کا بنیادی علم
  • CloudFormation ٹیمپلیٹس بنانے اور ان کی تعیناتی کا بنیادی علم

ایک IAM کردار بنائیں

شروع کرنے کے لیے، آپ کو ایک IAM رول بنانے کی ضرورت ہے جسے بوٹ استعمال کرے گا۔ آپ CloudFormation ٹیمپلیٹ کو شروع کرکے اور IAM کردار کو بطور وسیلہ شامل کرکے حاصل کرسکتے ہیں۔ آپ کردار بنانے کے لیے درج ذیل ٹیمپلیٹ استعمال کر سکتے ہیں۔ اگر آپ مثال کے سانچے کو ڈاؤن لوڈ کریں۔ اور اسے تعینات کریں، آپ کو یہ دیکھنا چاہیے کہ ایک IAM رول بن گیا ہے۔ ہم اس پوسٹ کو دیکھتے ہی ٹیمپلیٹس کی مثالیں فراہم کرتے ہیں اور آگے بڑھتے ہی انہیں ضم کر دیتے ہیں۔

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: CloudFormation template for book hotel bot.
Resources:
  # 1. IAM role that is used by the bot at runtime
  BotRuntimeRole:    
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lexv2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: "/"
      Policies:
        - PolicyName: LexRuntimeRolePolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "polly:SynthesizeSpeech"
                  - "comprehend:DetectSentiment"
                Resource: "*"

ایمیزون لیکس بوٹ کو ترتیب دیں۔

اگلا، آپ کو بوٹ کی تعریف شامل کرنے کی ضرورت ہے۔ Amazon Lex bot تعریف کے لیے YAML ٹیمپلیٹ درج ذیل ہے۔ آپ ایک ایک کرکے ضروری اجزاء بناتے ہیں:

Type: AWS::Lex::Bot
Properties:
  AutoBuildBotLocales: Boolean
  BotFileS3Location: 
    S3Location
  BotLocales: 
    - BotLocale
  BotTags: 
    - Tag
  DataPrivacy: 
    DataPrivacy
  Description: String
  IdleSessionTTLInSeconds: Integer
  Name: String
  RoleArn: String
  TestBotAliasSettings: 
    TestBotAliasSettings
  TestBotAliasTags: 
    - Tag

ایک بوٹ بنانے کے لیے جس میں بغیر کسی ارادے کے صرف بوٹ کی تعریف شامل ہو، آپ درج ذیل ٹیمپلیٹ استعمال کر سکتے ہیں۔ یہاں، آپ بوٹ کا نام، اس کردار کا ARN جو آپ نے پہلے بنایا تھا، ڈیٹا کی رازداری کی ترتیبات، اور مزید کی وضاحت کرتے ہیں:

BookHotelBot:
    DependsOn: BotRuntimeRole # The role created in the previous step
    Type: AWS::Lex::Bot
    Properties:
      Name: "BookHotel"
      Description: "Sample Bot to book a hotel"
      RoleArn: !GetAtt BotRuntimeRole.Arn      
      #For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex 
      #is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under 
      #age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the 
      #childDirected field.
      DataPrivacy:
        ChildDirected: false
      IdleSessionTTLInSeconds: 300

آپ اپ ڈیٹ شدہ ٹیمپلیٹ ڈاؤن لوڈ کریں۔. اپ ڈیٹ کردہ ٹیمپلیٹ کو تعینات کرنے سے آپ کو کردار اور بوٹ کی تعریف دونوں تخلیق کرنے کی اجازت ملتی ہے۔ نوٹ کریں کہ آپ ہیں۔ اسٹیک کو اپ ڈیٹ کرنا آپ نے پچھلے مرحلے میں بنایا تھا۔

آخری مرحلہ کی وضاحت کرنا شامل ہے۔ BotLocales، جو بوٹ کی زیادہ تر فعالیت کو تشکیل دیتا ہے۔ اس میں شامل ہے، مثال کے طور پر، Intents اور Slot types. ذیل میں YAML ٹیمپلیٹ ہے:

  CustomVocabulary: 
    CustomVocabulary
  Description: String
  Intents: 
    - Intent
  LocaleId: String
  NluConfidenceThreshold: Number
  SlotTypes: 
    - SlotType
  VoiceSettings: 
    VoiceSettings

اس صورت میں، آپ کی تعمیر BookHotel ارادہ، جس کے لیے کمرے کی اقسام کے لیے حسب ضرورت سلاٹ کی قسم کی ضرورت ہوتی ہے۔ آپ نے سیٹ کیا۔ LocaleId، پھر VoiceSettings. پھر آپ شامل کریں۔ SlotTypes اور ان کی متعلقہ اقدار۔

اگلا مرحلہ اس کی وضاحت کرنا ہے۔ Intentsپہلے ارادے سے شروع کرتے ہوئے، BookHotel، جس میں کلمات، سلاٹس، اور سلاٹ ترجیحات شامل کرنا شامل ہے۔ ان نوڈس کی تفصیلات فراہم کردہ ٹیمپلیٹ میں ظاہر کی گئی ہیں۔ آخر میں، آپ دوسرا ارادہ شامل کرتے ہیں، جو ہے FallbackIntent. درج ذیل کوڈ دیکھیں:

BotLocales:
        - LocaleId: "en_US"
          Description: "en US locale"
          NluConfidenceThreshold: 0.40
          VoiceSettings:
            VoiceId: "Matthew"
          SlotTypes:
            - Name: "RoomTypeValues"
              Description: "Type of room"
              SlotTypeValues:
                - SampleValue:
                    Value: queen
                - SampleValue:
                    Value: king
                - SampleValue:
                    Value: deluxe
              ValueSelectionSetting:
                ResolutionStrategy: ORIGINAL_VALUE
          Intents:
            - Name: "BookHotel"
              Description: "Intent to book a hotel room"
              SampleUtterances:
                - Utterance: "Book a hotel"
                - Utterance: "I want a make hotel reservations"
                - Utterance: "Book a {Nights} night stay in {Location}"
              IntentConfirmationSetting:
                PromptSpecification:
                  MessageGroupsList:
                    - Message:
                        PlainTextMessage:
                          Value: "Okay, I have you down for a {Nights} night stay in {Location} starting {CheckInDate}.  Shall I book the reservation?"
                  MaxRetries: 3
                  AllowInterrupt: false
                DeclinationResponse:
                  MessageGroupsList:
                    - Message:
                        PlainTextMessage:
                          Value: "Okay, I have cancelled your reservation in progress."
                  AllowInterrupt: false
              SlotPriorities:
                - Priority: 1
                  SlotName: Location
                - Priority: 2
                  SlotName: CheckInDate
                - Priority: 3
                  SlotName: Nights
                - Priority: 4
                  SlotName: RoomType
              Slots:
                - Name: "Location"
                  Description: "Location of the city in which the hotel is located"
                  SlotTypeName: "AMAZON.City"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What city will you be staying in?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "CheckInDate"
                  Description: "Date of check-in"
                  SlotTypeName: "AMAZON.Date"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What day do you want to check in?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "Nights"
                  Description: "something"
                  SlotTypeName: "AMAZON.Number"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "How many nights will you be staying?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "RoomType"
                  Description: "Enumeration of types of rooms that are offered by a hotel."
                  SlotTypeName: "RoomTypeValues"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What type of room would you like, queen, king or deluxe?"
                      MaxRetries: 2
                      AllowInterrupt: false
            - Name: "FallbackIntent"
              Description: "Default intent when no other intent matches"
              ParentIntentSignature: "AMAZON.FallbackIntent"

آپ CloudFormation ٹیمپلیٹ ڈاؤن لوڈ کریں۔ اب تک کیے گئے کام کے لیے۔ آپ کے بعد اپنے اسٹیک کو اپ ڈیٹ کریں۔ اس ٹیمپلیٹ کے ساتھ، ایک فنکشنل بوٹ تعینات کیا جائے گا۔ ایمیزون لیکس کنسول پر، آپ اس بات کی تصدیق کر سکتے ہیں کہ بوٹ کا ایک مسودہ ورژن ہے، اور ایک ڈیفالٹ عرف نام ہے TestBotAlias بنا دیا گیا ہے.

بوٹ عرف

ایک نیا بوٹ ورژن اور عرف بنائیں

ایمیزون لیکس اشاعت کی حمایت کرتا ہے۔ ورژن بوٹس، ارادوں، اور سلاٹ کی اقسام کے تاکہ آپ اپنے کلائنٹ کی ایپلی کیشنز کے نفاذ کو کنٹرول کر سکیں۔ ورژن آپ کے بوٹ کی تعریف کا ایک عدد اسنیپ شاٹ ہوتا ہے جسے آپ اپنے ورک فلو کے مختلف حصوں، جیسے کہ ڈیولپمنٹ، بیٹا تعیناتی اور پروڈکشن میں استعمال کے لیے شائع کر سکتے ہیں۔ ایمیزون لیکس بوٹس بھی سپورٹ کرتے ہیں۔ عرفی نام. ایک عرف بوٹ کے مخصوص ورژن کی طرف اشارہ کرتا ہے۔ ایک عرف کے ساتھ، آپ اپنے کلائنٹ کے ایپلیکیشنز کے ورژن کو اپ ڈیٹ کر سکتے ہیں۔ عملی منظرناموں میں، بوٹ عرفی نام نیلے/سبز تعیناتیوں اور ماحول سے متعلق مخصوص ترتیب جیسے ترقی اور پیداوار کے ماحول کے انتظام کے لیے استعمال کیے جاتے ہیں۔

مثال کے طور پر، ہم کہتے ہیں کہ آپ اپنے بوٹ کے ورژن 1 کی طرف ایک عرف کی نشاندہی کرتے ہیں۔ جب بوٹ کو اپ ڈیٹ کرنے کا وقت ہو تو، آپ ورژن 2 شائع کر سکتے ہیں اور نئے ورژن کی طرف اشارہ کرنے کے لیے عرف کو تبدیل کر سکتے ہیں۔ چونکہ آپ کی ایپلیکیشنز مخصوص ورژن کے بجائے عرف کا استعمال کرتی ہیں، اس لیے تمام کلائنٹس کو اپ ڈیٹس کی ضرورت کے بغیر نئی فعالیت موصول ہوتی ہے۔

ذہن میں رکھیں کہ جب آپ CloudFormation ٹیمپلیٹ میں ترمیم کرتے ہیں اور تعیناتی شروع کرتے ہیں تو تبدیلیاں مسودہ ورژن میں لاگو ہوتی ہیں، بنیادی طور پر جانچ کے لیے ہوتی ہیں۔ اپنا ٹیسٹنگ مرحلہ مکمل کرنے کے بعد، آپ اب تک شامل کردہ تبدیلیوں کو حتمی شکل دینے کے لیے ایک نیا ورژن قائم کر سکتے ہیں۔

اس کے بعد، آپ اپنے مسودے کی بنیاد پر ایک نیا بوٹ ورژن بناتے ہیں، ایک نیا عرف ترتیب دیتے ہیں، اور ورژن کو اس عرف سے لنک کرتے ہیں۔ آپ کے سانچے میں شامل کرنے کے لیے درج ذیل دو نئے وسائل ہیں:

BookHotelInitialVersion:
    DependsOn: BookHotelBot
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot initial version

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelInitialVersion.BotVersion

آپ ٹیمپلیٹ کا نیا ورژن ڈاؤن لوڈ کریں۔ اور اپنے اسٹیک کو اپ ڈیٹ کرکے اسے تعینات کریں۔ آپ ایمیزون لیکس کنسول پر دیکھ سکتے ہیں کہ ایک نیا ورژن بنایا گیا ہے اور ایک نئے عرف کے ساتھ منسلک کیا گیا ہے۔ BookHotelDemoAlias.

ڈیمو عرف

جب آپ ایمیزون لیکس بوٹ کا نیا ورژن بناتے ہیں، تو یہ عام طور پر 1 سے شروع ہونے والے ورژن نمبر کو ترتیب وار بڑھاتا ہے۔ کسی مخصوص ورژن کو جاننے کے لیے، آپ اس کی تفصیل کا حوالہ دے سکتے ہیں۔

ابتدائی ورژن

لیمبڈا فنکشن شامل کریں۔

اپنے بوٹ کے لیے اقدار کو شروع کرنے یا صارف کے ان پٹ کی توثیق کرنے کے لیے، آپ اپنے بوٹ میں کوڈ ہک کے طور پر لیمبڈا فنکشن شامل کر سکتے ہیں۔ اسی طرح، آپ تکمیل کے لیے لیمبڈا فنکشن بھی استعمال کر سکتے ہیں، مثال کے طور پر ڈیٹا بیس میں ڈیٹا لکھنا یا APIs کو کال کرنا جمع کردہ معلومات کو محفوظ کرنا۔ مزید معلومات کے لیے رجوع کریں۔ AWS Lambda فنکشنز کے ساتھ حسب ضرورت منطق کو فعال کرنا.

آئیے CloudFormation ٹیمپلیٹ میں Lambda فنکشن کے لیے ایک نیا وسیلہ شامل کریں۔ اگرچہ عام طور پر CloudFormation ٹیمپلیٹس میں کوڈ کو سرایت کرنے کا مشورہ نہیں دیا جاتا ہے، لیکن ہم یہاں صرف ڈیمو تعیناتی کو کم پیچیدہ بنانے کی خاطر ایسا کرتے ہیں۔ درج ذیل کوڈ دیکھیں:

HotelBotFunction:
    DependsOn: BotRuntimeRole # So that the Lambda function is ready before the bot deployment
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: book_hotel_lambda
      Runtime: python3.11
      Timeout: 15
      Handler: index.lambda_handler
      InlineCode: |
        import os
        import json

        def close(intent_request):
            intent_request['sessionState']['intent']['state'] = 'Fulfilled'

            message = {"contentType": "PlainText",
                      "content": "Your Booking is confirmed"}

            session_attributes = {}
            sessionState = intent_request['sessionState']
            if 'sessionAttributes' in sessionState:
                session_attributes = sessionState['sessionAttributes']

            requestAttributes = None
            if 'requestAttributes' in intent_request:
                requestAttributes = intent_request['requestAttributes']

            return {
                'sessionState': {
                    'sessionAttributes': session_attributes,
                    'dialogAction': {
                        'type': 'Close'
                    },
                    'intent': intent_request['sessionState']['intent'],
                    'originatingRequestId': 'xxxxxxx-xxxx-xxxx-xxxx'
                },
                'messages':  [message],
                'sessionId': intent_request['sessionId'],
                'requestAttributes': requestAttributes
            }

        def router(event):
            intent_name = event['sessionState']['intent']['name']
            slots = event['sessionState']['intent']['slots']
            if (intent_name == 'BookHotel'):
                # invoke lambda and return result
                return close(event)

            raise Exception(
                'The intent is not supported by Lambda: ' + intent_name)

        def lambda_handler(event, context):
            response = router(event)
            return response

تکمیل کے لیے اس Lambda فنکشن کو استعمال کرنے کے لیے، اپنے ارادے میں کوڈ ہک کی ترتیبات کو فعال کریں:

Intents:
  - Name: "BookHotel"
    Description: "Intent to book a hotel room"
    FulfillmentCodeHook:
      Enabled: true
    SampleUtterances:
      - Utterance: "Book a hotel"
      - Utterance: "I want a make hotel reservations"
      - Utterance: "Book a {Nights} night stay in {Location}"

چونکہ آپ نے اپنے بوٹ میں تبدیلیاں کی ہیں، اس لیے آپ بوٹ کا نیا ورژن نام کا ایک نیا وسیلہ شامل کر کے بنا سکتے ہیں۔ BookHotelVersionWithLambda ٹیمپلیٹ میں:

BookHotelVersionWithLambda:
    DependsOn: BookHotelInitialVersion
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot with a lambda function

لیمبڈا فنکشن بوٹ عرف سے وابستہ ہے۔ Amazon Lex V2 ایک لیمبڈا فنکشن فی بوٹ عرف فی زبان استعمال کر سکتا ہے۔ لہذا، لیمبڈا فنکشن ریسورس کو شامل کرنے کے لیے آپ کو ٹیمپلیٹ میں اپنا عرف اپ ڈیٹ کرنا ہوگا۔ آپ میں ایسا کر سکتے ہیں۔ BotAliasLocalSettings سیکشن آپ کو اپنے بنائے ہوئے نئے ورژن کی طرف بھی عرف کی نشاندہی کرنے کی ضرورت ہے۔ درج ذیل کوڈ میں ترمیم شدہ عرف کنفیگریشن ہے:

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelVersionWithLambda.BotVersion
      # Remove BotAliasLocaleSettings if you aren't concerned with Lambda setup.
      # If you are you can modify the LambdaArn below to get started.
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn

اب تک، آپ نے صرف لیمبڈا فنکشن کو عرف کے ساتھ جوڑا ہے۔ تاہم، آپ کو عرف کو لیمبڈا فنکشن شروع کرنے کی اجازت دینے کی ضرورت ہے۔ درج ذیل کوڈ میں، آپ Amazon Lex کے لیے Lambda invoke permission شامل کرتے ہیں اور عرف ARN کو بطور ذریعہ ARN بتاتے ہیں:

  LexInvokeLambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: "lambda:InvokeFunction"
      FunctionName: !GetAtt HotelBotFunction.Arn
      Principal: "lexv2.amazonaws.com"
      SourceArn: !GetAtt BookHotelDemoAlias.Arn

آپ تازہ ترین ورژن ڈاؤن لوڈ کریں ٹیمپلیٹ کے اس ورژن کے ساتھ اپنے اسٹیک کو اپ ڈیٹ کرنے کے بعد، آپ کے پاس ایمیزون لیکس بوٹ ایک لیمبڈا فنکشن کے ساتھ مربوط ہوگا۔

دوسرا ورژن

alis کو اپ ڈیٹ کیا گیا۔

مشروط شاخیں۔

اب آئیے ایمیزون لیکس بوٹ کی مشروط شاخ کی خصوصیت کو دریافت کریں اور ایک ایسے منظر نامے پر غور کریں جہاں اگلے ہفتے کے لیے سیئٹل میں پانچ راتوں سے زیادہ کی بکنگ کی اجازت نہیں ہے۔ کاروباری ضرورت کے مطابق، اگر صارف سیٹل میں پانچ راتوں سے زیادہ بک کرنے کی کوشش کرتا ہے تو بات چیت ایک مناسب پیغام کے ساتھ ختم ہونی چاہیے۔ اس کے لیے مشروط شاخ کی نمائندگی کلاؤڈ فارمیشن ٹیمپلیٹ میں کے تحت کی گئی ہے۔ SlotCaptureSetting:

- Name: "Nights"
                  Description: “Number of nights.”
                  SlotTypeName: "AMAZON.Number"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    SlotCaptureSetting:
                      CaptureConditional:
                        DefaultBranch:
                          NextStep:
                            DialogAction:
                              Type: "ElicitSlot"
                              SlotToElicit: "RoomType"
                        ConditionalBranches:
                          - Name: "Branch1"
                            Condition:
                              ExpressionString: '{Nights}>5 AND {Location} = "Seattle"'
                            Response:
                              AllowInterrupt: true
                              MessageGroupsList:
                                - Message:
                                    PlainTextMessage:
                                      Value: “Sorry, we cannot book more than five nights in {Location} right now."
                            NextStep:
                              DialogAction:
                                Type: "EndConversation"
                        IsActive: true

                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "How many nights will you be staying?"
                      MaxRetries: 2
                      AllowInterrupt: false

چونکہ آپ نے بوٹ کی تعریف کو تبدیل کیا ہے، آپ کو ٹیمپلیٹ میں ایک نیا ورژن بنانا ہوگا اور اسے عرف کے ساتھ جوڑنا ہوگا۔ یہ ایک عارضی ترمیم ہے کیونکہ کاروبار جلد ہی سیٹل میں بڑی بکنگ کی اجازت دینے کا ارادہ رکھتا ہے۔ درج ذیل دو نئے وسائل ہیں جو آپ ٹیمپلیٹ میں شامل کرتے ہیں:

BookHotelConditionalBranches:
    DependsOn: BookHotelVersionWithLambda
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot Version with conditional branches

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelConditionalBranches.BotVersion
      # Remove BotAliasLocaleSettings if you aren't concerned with Lambda setup.
      # If you are you can modify the LambdaArn below to get started.
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn

آپ اپ ڈیٹ شدہ ٹیمپلیٹ ڈاؤن لوڈ کریں۔. اس ٹیمپلیٹ ورژن کے ساتھ اپنے اسٹیک کو اپ ڈیٹ کرنے کے بعد، عرف کو مشروط برانچنگ فیچر کو شامل کرنے والے ورژن کی طرف بھیج دیا جائے گا۔ اس ترمیم کو کالعدم کرنے کے لیے، آپ پچھلے ورژن پر واپس جانے کے لیے عرف کو اپ ڈیٹ کر سکتے ہیں۔

تیسرا ورژن

تیسرے ورژن کے لیے عرف

کھنگالیں

آپ اپنے ایمیزون لیکس بوٹ کے لیے لاگز کو بھی فعال کر سکتے ہیں۔ ایسا کرنے کے لیے، آپ کو تحریر کی اجازت دینے کے لیے بوٹ کے کردار کو اپ ڈیٹ کرنا چاہیے۔ ایمیزون کلاؤڈ واچ نوشتہ جات CloudWatch پالیسی کو کردار میں شامل کرنے کی ایک مثال درج ذیل ہے:

BotRuntimeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lexv2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: "/"
      Policies:
        - PolicyName: LexRuntimeRolePolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "polly:SynthesizeSpeech"
                  - "comprehend:DetectSentiment"
                Resource: "*"
        - PolicyName: CloudWatchPolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "logs:CreateLogStream"
                  - "logs:PutLogEvents"
                Resource: "*"

مستقل اور متوقع رویے کو یقینی بنانے کے لیے، CloudFormation ٹیمپلیٹس میں وسائل کے ناموں اور خصوصیات کی وضاحت کرتے وقت آپ کو ہر ممکن حد تک مخصوص ہونا چاہیے۔ اس کی وجہ یہ ہے کہ CloudFormation ٹیمپلیٹس میں وائلڈ کارڈ کیریکٹر (*) کا استعمال ممکنہ حفاظتی خطرات کا باعث بن سکتا ہے اور غیر ارادی نتائج کا باعث بن سکتا ہے۔ لہذا، وائلڈ کارڈز کے استعمال سے گریز کرنے کی سفارش کی جاتی ہے اور اس کے بجائے جہاں ممکن ہو واضح اقدار کا استعمال کریں۔

اس کے بعد، آپ اپنے لاگز کو اس گروپ میں بھیجنے کے لیے، جیسا کہ درج ذیل کوڈ میں دکھایا گیا ہے، ایک CloudWatch لاگ گروپ کا وسیلہ بنائیں:

  #Log Group
  LexLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: /lex/hotel-bot
      RetentionInDays: 5

آخر میں، آپ گفتگو کے لاگ سیٹنگز کو فعال کرنے کے لیے اپنا عرف اپ ڈیٹ کرتے ہیں:

BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelConditionalBranches.BotVersion
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn
      ConversationLogSettings:
        TextLogSettings:
          - Destination:
              CloudWatch:
                CloudWatchLogGroupArn: !GetAtt LexLogGroup.Arn
                LogPrefix: bookHotel
            Enabled: true

جب آپ اس ٹیمپلیٹ کے ساتھ اسٹیک کو اپ ڈیٹ کرتے ہیں، تو آپ اپنے بوٹ کے لیے گفتگو کے لاگز کو فعال کرتے ہیں۔ اس مرحلے میں نیا ورژن نہیں بنایا گیا ہے کیونکہ آپ کے بوٹ کے وسائل میں کوئی تبدیلیاں نہیں ہیں۔ آپ کر سکتے ہیں۔ ٹیمپلیٹ کا تازہ ترین ورژن ڈاؤن لوڈ کریں۔.

صاف کرو

مستقبل میں چارجز کو روکنے کے لیے، آپ نے جو CloudFormation اسٹیک بنایا ہے اسے حذف کریں۔

نتیجہ

اس پوسٹ میں، ہم نے Amazon Lex V2 بوٹ کے لیے CloudFormation ٹیمپلیٹ بنانے کے لیے مرحلہ وار عمل پر تبادلہ خیال کیا۔ ابتدائی طور پر، ہم نے ایک بنیادی بوٹ تعینات کیا، پھر ہم نے عرفی ناموں اور ورژنوں کی صلاحیت اور ٹیمپلیٹس کے ساتھ ان کو موثر طریقے سے استعمال کرنے کا طریقہ دریافت کیا۔ اس کے بعد، ہم نے سیکھا کہ ایک Lambda فنکشن کو Amazon Lex V2 بوٹ کے ساتھ کیسے مربوط کیا جائے اور کاروباری ضروریات کو پورا کرنے کے لیے بوٹ کے گفتگو کے بہاؤ میں مشروط برانچنگ کو لاگو کیا۔ آخر میں، ہم نے CloudWatch لاگ گروپ ریسورس بنا کر اور ضروری اجازتوں کے ساتھ بوٹ کے کردار کو اپ ڈیٹ کرکے لاگنگ کی خصوصیات شامل کیں۔

ٹیمپلیٹ بوٹ کی براہ راست تعیناتی اور انتظام کی اجازت دیتا ہے، ضرورت کے مطابق تبدیلیوں کو واپس کرنے کی صلاحیت کے ساتھ۔ مجموعی طور پر، CloudFormation ٹیمپلیٹ Amazon Lex V2 بوٹ کے انتظام اور اصلاح کے لیے مفید ہے۔

اگلے مرحلے کے طور پر، آپ دریافت کر سکتے ہیں۔ ایمیزون لیکس بوٹس کا نمونہ اور اس پوسٹ میں زیر بحث تکنیکوں کو CloudFormation ٹیمپلیٹس میں تبدیل کرنے کے لیے لاگو کریں۔ یہ ہینڈ آن پریکٹس کوڈ کے بطور انفراسٹرکچر کے ذریعے Amazon Lex V2 بوٹس کے انتظام کے بارے میں آپ کی سمجھ کو مضبوط کرے گی۔


مصنفین کے بارے میں

تھامس رندفس ایمیزون لیکس ٹیم میں ایک سینئر حل آرکیٹیکٹ ہے۔ وہ لینگوئج AI سروسز کے لیے نئی تکنیکی خصوصیات اور حل ایجاد کرتا ہے، تیار کرتا ہے، پروٹو ٹائپ کرتا ہے اور انجیلی بشارت دیتا ہے جو گاہک کے تجربے کو بہتر بناتا ہے اور اپنانے میں آسانی پیدا کرتا ہے۔

رجیش اکمبتھ چتھوتھ AWS میں ایک پروفیشنل سروسز کنسلٹنٹ ہے۔ وہ گاہکوں کو ان کے مطلوبہ کاروبار کو حاصل کرنے میں مدد کرتا ہے۔
Amazon Connect، Amazon Lex اور GenAI خصوصیات کا فائدہ اٹھا کر رابطہ سینٹر کی جگہ میں نتائج۔

اسپاٹ_مگ

تازہ ترین انٹیلی جنس

اسپاٹ_مگ