אינטליגנציה של נתונים גנרטיביים

בניית סוכני AI מחוללים עם Amazon Bedrock, Amazon DynamoDB, Amazon Kendra, Amazon Lex ו-LangChain | שירותי האינטרנט של אמזון

תאריך:

סוכני AI מחוללים מסוגלים לייצר תגובות דמויות אנושיות ולהשתתף בשיחות בשפה טבעית על ידי תזמורת שרשרת של שיחות למודלים של יסודות (FMs) וכלי הגדלת אחרים המבוססים על קלט המשתמש. במקום להגשים רק כוונות מוגדרות מראש באמצעות עץ החלטות סטטי, הסוכנים הם אוטונומיים בהקשר של חבילת הכלים הזמינים שלהם. סלע אמזון הוא שירות מנוהל במלואו שהופך FM מובילים מחברות בינה מלאכותית לזמינות באמצעות API יחד עם כלי מפתחים כדי לעזור לבנות ולהרחיב יישומי בינה מלאכותית.

בפוסט זה, אנו מדגימים כיצד לבנות סוכן שירותים פיננסיים בינה מלאכותית המופעלת על ידי Amazon Bedrock. הסוכן יכול לסייע למשתמשים למצוא את פרטי החשבון שלהם, להשלים בקשת הלוואה או לענות על שאלות בשפה טבעית תוך ציון מקורות לתשובות שסופקו. פתרון זה נועד לשמש כנקודת פתיחה למפתחים ליצירת סוכני שיחה מותאמים אישית עבור יישומים שונים, כגון עובדים וירטואליים ומערכות תמיכת לקוחות. ניתן למצוא קוד פתרון ונכסי פריסה ב- מאגר GitHub.

אמזון לקס מספק את ממשק הבנת השפה הטבעית (NLU) ועיבוד השפה הטבעית (NLP) עבור הקוד הפתוח סוכן שיחה של LangChain מוטבע בתוך AWS להגביר אתר אינטרנט. הסוכן מצויד בכלים הכוללים Anthropic Claude 2.1 FM המתארח ב- Amazon Bedrock ונתוני לקוחות סינתטיים המאוחסנים ב- אמזון דינמו ו אמזון קנדרה לספק את היכולות הבאות:

  • לספק תשובות מותאמות אישית - שאילתה ב-DynamoDB לקבלת פרטי חשבון לקוח, כגון פרטי סיכום משכנתא, יתרת פירעון ותאריך התשלום הבא
  • גישה לידע כללי - לרתום את היגיון ההגיון של הסוכן במקביל לכמויות העצומות של נתונים המשמשות לאימון מראש של ה-FM השונים שסופקו דרך Amazon Bedrock כדי להפיק תשובות לכל בקשה מלקוחות
  • אצור תשובות דעתניות - ליידע את תגובות הסוכן באמצעות אינדקס אמזון קנדרה המוגדר עם מקורות נתונים מוסמכים: מסמכי לקוחות המאוחסנים ב שירות אחסון פשוט של אמזון (אמזון S3) ו- סורק האינטרנט של אמזון קנדרה מוגדר עבור אתר האינטרנט של הלקוח

סקירת פתרונות

הקלטת הדגמה

הקלטת ההדגמה הבאה מדגישה את פונקציונליות הסוכן ואת פרטי היישום הטכניים.

ארכיטקטורת הפתרונות

התרשים הבא ממחיש את ארכיטקטורת הפתרונות.

סקירה כללית של ארכיטקטורת הפתרונות

תרשים 1: סקירה כללית של ארכיטקטורת הפתרון

זרימת העבודה של התגובה של הסוכן כוללת את השלבים הבאים:

  1. משתמשים מבצעים דיאלוג בשפה טבעית עם הסוכן דרך בחירתם של ערוצי אינטרנט, SMS או קול. ערוץ האינטרנט כולל אתר מארח Amplify עם צ'אט בוט משובץ של Amazon Lex עבור לקוח פיקטיבי. ניתן להגדיר ערוצי SMS וקול באופן אופציונלי באמצעות אמזון Connect ו שילובי הודעות עבור אמזון לקס. כל בקשת משתמש מעובדת על ידי אמזון לקס כדי לקבוע את כוונת המשתמש באמצעות תהליך הנקרא זיהוי כוונות, הכולל ניתוח ופירוש הקלט של המשתמש (טקסט או דיבור) כדי להבין את הפעולה או המטרה המיועדת של המשתמש.
  2. אז אמזון לקס מפעיל את an AWS למבדה מטפל למימוש כוונת המשתמש. פונקציית Lambda הקשורה לצ'אטבוט של Amazon Lex מכילה את ההיגיון והכללים העסקיים הנדרשים לעיבוד כוונת המשתמש. Lambda מבצעת פעולות ספציפיות או משחזרת מידע על סמך קלט המשתמש, קבלת החלטות ויצירת תגובות מתאימות.
  3. Lambda מכשיר את ההיגיון של סוכני השירותים הפיננסיים כסוכן שיחה של LangChain שיכול לגשת לנתונים ספציפיים ללקוח המאוחסנים ב-DynamoDB, לאצור תגובות דעתניות באמצעות המסמכים ודפי האינטרנט שלך שנוספו על ידי Amazon Kendra, ולספק תשובות ידע כלליות דרך ה-FM על Amazon Bedrock. התגובות שנוצרו על ידי אמזון קנדרה כוללות ייחוס מקור, המדגים כיצד ניתן לספק מידע הקשרי נוסף לסוכן באמצעות אחזור דור מוגבר (סְמַרטוּט). RAG מאפשר לך לשפר את יכולתו של הסוכן שלך ליצור תגובות מדויקות ורלוונטיות יותר מבחינה הקשרית באמצעות הנתונים שלך.

ארכיטקטורת סוכנים

התרשים הבא ממחיש את ארכיטקטורת הסוכן.

LangChain Conversational Agent Architecture

תרשים 2: ארכיטקטורת סוכני שיחה של LangChain

זרימת העבודה של הנמקה של הסוכן כוללת את השלבים הבאים:

  1. סוכן השיחה של LangChain משלב זיכרון שיחה כך שהוא יכול להגיב לשאילתות מרובות עם יצירת הקשר. זיכרון זה מאפשר לסוכן לספק תגובות שלוקחות בחשבון את ההקשר של השיחה המתמשכת. זה מושג באמצעות יצירת הקשר, שבו הסוכן מייצר תגובות רלוונטיות ומתאימות מבחינה הקשרית על סמך המידע שזכר מהשיחה. במילים פשוטות יותר, הסוכן זוכר את מה שנאמר קודם לכן ומשתמש במידע זה כדי להגיב למספר שאלות בצורה הגיונית בדיון המתמשך. הסוכן שלנו משתמש שיעור היסטוריית הודעות הצ'אט DynamoDB של LangChain כמאגר זיכרון שיחה, כך שהוא יכול לזכור אינטראקציות מהעבר ולשפר את חווית המשתמש עם תגובות משמעותיות יותר, מודעות להקשר.
  2. הסוכן משתמש ב-Anthropic Claude 2.1 ב- Amazon Bedrock כדי להשלים את המשימה הרצויה באמצעות סדרה של קלט טקסט שנוצר בעצמו בקפידה המכונה הנחיות. המטרה העיקרית של הנדסה מהירה היא לעורר תגובות ספציפיות ומדויקות מה-FM. טכניקות הנדסה מיידיות שונות כוללות:
    • זריקת אפס – שאלה בודדת מוצגת למודל ללא כל רמזים נוספים. המודל צפוי לייצר תגובה על סמך השאלה הנתונה בלבד.
    • ירו מעט – קבוצה של שאלות לדוגמה והתשובות המתאימות להן כלולים לפני השאלה בפועל. על ידי חשיפת המודל לדוגמאות הללו, הוא לומד להגיב בצורה דומה.
    • שרשרת של מחשבה – סגנון ספציפי של הנחיה מועטה כאשר ההנחיה מיועדת להכיל סדרה של שלבי חשיבה ביניים, המנחה את המודל בתהליך חשיבה לוגי, המוביל בסופו של דבר לתשובה הרצויה.

    הסוכן שלנו משתמש בהנמקה של שרשרת מחשבה על ידי הפעלת מערכת פעולות עם קבלת בקשה. לאחר כל פעולה, הסוכן נכנס לשלב התצפית, שם הוא מבטא מחשבה. אם עדיין לא הושגה תשובה סופית, הסוכן חוזר על עצמו, בוחר פעולות שונות כדי להתקדם לקראת הגעה לתשובה הסופית. ראה את הקוד לדוגמה הבא:

מחשבה: האם אני צריך להשתמש בכלי? כן
פעולה: הפעולה שיש לבצע
קלט פעולה: הקלט לפעולה
תצפית: תוצאת הפעולה

מחשבה: האם אני צריך להשתמש בכלי? לא
סוכן FSI: [מסמכי תשובות ומקור]

  1. כחלק מנתיבי החשיבה השונים של הסוכן ובחירותיו העצמיות כדי להחליט על דרך הפעולה הבאה, יש לו את היכולת לגשת למקורות נתונים סינתטיים של לקוחות באמצעות כלי אמזון קנדרה אינדקס רטריבר. באמצעות Amazon Kendra, הסוכן מבצע חיפוש הקשרי במגוון רחב של סוגי תוכן, כולל מסמכים, שאלות נפוצות, מאגרי ידע, מדריכים ואתרי אינטרנט. לפרטים נוספים על מקורות נתונים נתמכים, עיין ב מקורות מידע. לסוכן יש את הכוח להשתמש בכלי זה כדי לספק תגובות דעתניות להנחיות המשתמש שיש לענות עליהן באמצעות ספריית ידע סמכותית שסופקה על ידי הלקוח, במקום קורפוס הידע הכללי יותר המשמש לאימון מוקדם של Amazon Bedrock FM.

מדריך פריסה

בסעיפים הבאים, אנו דנים בצעדים המרכזיים לפריסת הפתרון, לרבות פריסה מוקדמת ואחרי פריסה.

פריסה מוקדמת

לפני שתפרוס את הפתרון, עליך ליצור גרסה מפוצלת משלך של מאגר הפתרונות עם חיבור אינטרנט מאובטח באמצעות אסימון כדי להפוך פריסה רציפה של אתר Amplify שלך לאוטומטי. תצורת Amplify מצביעה על מאגר מקור של GitHub שממנו בנוי החזית של האתר שלנו.

מזלג ושיבוט generative-ai-amazon-bedrock-langchain-agent-example מאגר

  1. כדי לשלוט בקוד המקור שבונה את אתר Amplify שלך, עקוב אחר ההוראות ב מזלג מאגר למזלג את מאגר ה-generative-ai-amazon-bedrock-langchain-agent-example repository. זה יוצר עותק של המאגר המנותק מבסיס הקוד המקורי, כך שתוכל לבצע את השינויים המתאימים.
  2. שים לב לכתובת ה-URL של המאגר המחולק שלך לשימוש כדי לשכפל את המאגר בשלב הבא ולהגדיר את משתנה הסביבה GITHUB_PAT המשמש בסקריפט האוטומציה של פריסת הפתרון.
  3. שיבוט את המאגר המחולק שלך באמצעות הפקודה git clone:
    git clone <YOUR-FORKED-REPOSITORY-URL>

צור אסימון גישה אישי של GitHub

האתר המתארח של Amplify משתמש ב-a אסימון גישה אישי של GitHub (PAT) כאסימון OAuth לבקרת מקור של צד שלישי. אסימון OAuth משמש ליצירת webhook ומפתח פריסה לקריאה בלבד באמצעות שיבוט SSH.

  1. כדי ליצור את ה-PAT שלך, עקוב אחר ההוראות ב יצירת אסימון גישה אישי (קלאסי). אולי תעדיף להשתמש ב-a אפליקציית GitHub כדי לגשת למשאבים מטעם ארגון או לאינטגרציות ארוכות חיים.
  2. שים לב ל-PAT שלך לפני סגירת הדפדפן - אתה תשתמש בו כדי להגדיר את משתנה הסביבה GITHUB_PAT המשמש בסקריפט האוטומציה של פריסת הפתרון. התסריט יפרסם את ה-PAT שלך ב מנהל סודות AWS באמצעות ממשק שורת הפקודה של AWS פקודות (AWS CLI) והשם הסודי ישמשו בתור GitHubTokenSecretName AWS CloudFormation פָּרָמֶטֶר.

פְּרִיסָה

סקריפט האוטומציה של פריסת הפתרון משתמש בתבנית CloudFormation בעלת הפרמטרים, GenAI-FSI-Agent.yml, כדי להפוך את ההקצאה לאוטומטית של משאבי הפתרונות הבאים:

  • אתר Amplify כדי לדמות את הסביבה הקדמית שלך.
  • בוט של אמזון לקס שהוגדר באמצעות חבילת פריסת יבוא בוט.
  • ארבע טבלאות DynamoDB:
    • UserPendingAccountsTable – מתעד עסקאות ממתינות (לדוגמה, בקשות להלוואה).
    • UserExistingAccountsTable – מכיל מידע על חשבון משתמש (לדוגמה, סיכום חשבון משכנתא).
    • ConversationIndexTable - עוקב אחר מצב השיחה.
    • טבלת שיחות - מאחסן היסטוריית שיחות.
  • דלי S3 המכיל את המטפל בסוכן Lambda, מטעין הנתונים של Lambda וחבילות הפריסה של Amazon Lex, יחד עם שאלות נפוצות של לקוחות ומסמכים לדוגמה של יישומי משכנתא.
  • שתי פונקציות למבדה:
    • מטפל בסוכן - מכיל את ההיגיון של סוכן השיחה של LangChain שיכול להשתמש בצורה חכמה במגוון כלים המבוססים על קלט המשתמש.
    • טוען נתונים - טוען נתונים לדוגמה של חשבון לקוח לתוך UserExistingAccountsTable ומופעל כמשאב CloudFormation מותאם אישית במהלך יצירת מחסנית.
  • שכבת Lambda עבור ספריות Amazon Bedrock Boto3, LangChain ו-pdfrw. השכבה מספקת לספריית ה-FM של LangChain מודל של Amazon Bedrock בתור ה-FM הבסיסי ומספקת pdfrw כספריית PDF בקוד פתוח ליצירה ושינוי של קבצי PDF.
  • אינדקס אמזון קנדרה המספק אינדקס הניתן לחיפוש של מידע סמכותי של לקוחות, כולל מסמכים, שאלות נפוצות, מאגרי ידע, מדריכים, אתרי אינטרנט ועוד.
  • שני מקורות נתונים של אמזון קנדרה:
  • AWS זהות וניהול גישה הרשאות (IAM) עבור המשאבים הקודמים.

AWS CloudFormation מאכלסת מראש פרמטרים מחסנית עם ערכי ברירת המחדל הניתנים בתבנית. כדי לספק ערכי קלט חלופיים, אתה יכול לציין פרמטרים כמשתני סביבה שאליהם מתייחסים בצמדי `ParameterKey=,ParameterValue=` בפקודה `aws cloudformation create-stack` של סקריפט המעטפת הבא.

  1. לפני שתפעיל את סקריפט המעטפת, נווט אל הגרסה המפוצלת שלך של מאגר ה-generative-ai-amazon-bedrock-langchain-agent-example בתור ספריית העבודה שלך ושנה את הרשאות סקריפט המעטפת לקובץ הפעלה:
    # If not already forked, fork the remote repository (https://github.com/aws-samples/generative-ai-amazon-bedrock-langchain-agent-example) and change working directory to shell folder:
    cd generative-ai-amazon-bedrock-langchain-agent-example/shell/
    chmod u+x create-stack.sh

  2. הגדר את מאגר Amplify ואת משתני סביבת GitHub PAT שנוצרו במהלך שלבי הפריסה המוקדמים:
    export AMPLIFY_REPOSITORY=<YOUR-FORKED-REPOSITORY-URL> # Forked repository URL from Pre-Deployment (Exclude '.git' from repository URL)
    export GITHUB_PAT=<YOUR-GITHUB-PAT> # GitHub PAT copied from Pre-Deployment
    export STACK_NAME=<YOUR-STACK-NAME> # Stack name must be lower case for S3 bucket naming convention
    export KENDRA_WEBCRAWLER_URL=<YOUR-WEBSITE-ROOT-DOMAIN> # Public or internal HTTPS website for Kendra to index via Web Crawler (e.g., https://www.<your-company>.com) - Please see https://docs.aws.amazon.com/kendra/latest/dg/data-source-web-crawler.html

  3. לבסוף, הפעל את סקריפט האוטומציה של פריסת הפתרון כדי לפרוס את משאבי הפתרון, כולל GenAI-FSI-Agent.yml מחסנית CloudFormation:

source ./create-stack.sh

סקריפט אוטומציה של פריסת פתרונות

הקודם source ./create-stack.sh shell הפקודה מריצה את הפקודות הבאות של AWS CLI כדי לפרוס את מחסנית הפתרונות:

export ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
export S3_ARTIFACT_BUCKET_NAME=$STACK_NAME-$ACCOUNT_ID
export DATA_LOADER_S3_KEY="agent/lambda/data-loader/loader_deployment_package.zip"
export LAMBDA_HANDLER_S3_KEY="agent/lambda/agent-handler/agent_deployment_package.zip"
export LEX_BOT_S3_KEY="agent/bot/lex.zip" aws s3 mb s3://${S3_ARTIFACT_BUCKET_NAME} --region us-east-1
aws s3 cp ../agent/ s3://${S3_ARTIFACT_BUCKET_NAME}/agent/ --recursive --exclude ".DS_Store" export BEDROCK_LANGCHAIN_LAYER_ARN=$(aws lambda publish-layer-version --layer-name bedrock-langchain-pdfrw --description "Bedrock LangChain pdfrw layer" --license-info "MIT" --content S3Bucket=${S3_ARTIFACT_BUCKET_NAME},S3Key=agent/lambda-layers/bedrock-langchain-pdfrw.zip --compatible-runtimes python3.11 --query LayerVersionArn --output text) export GITHUB_TOKEN_SECRET_NAME=$(aws secretsmanager create-secret --name $STACK_NAME-git-pat --secret-string $GITHUB_PAT --query Name --output text) aws cloudformation create-stack --stack-name ${STACK_NAME} --template-body file://../cfn/GenAI-FSI-Agent.yml --parameters ParameterKey=S3ArtifactBucket,ParameterValue=${S3_ARTIFACT_BUCKET_NAME} ParameterKey=DataLoaderS3Key,ParameterValue=${DATA_LOADER_S3_KEY} ParameterKey=LambdaHandlerS3Key,ParameterValue=${LAMBDA_HANDLER_S3_KEY} ParameterKey=LexBotS3Key,ParameterValue=${LEX_BOT_S3_KEY} ParameterKey=GitHubTokenSecretName,ParameterValue=${GITHUB_TOKEN_SECRET_NAME} ParameterKey=KendraWebCrawlerUrl,ParameterValue=${KENDRA_WEBCRAWLER_URL} ParameterKey=BedrockLangChainPyPDFLayerArn,ParameterValue=${BEDROCK_LANGCHAIN_LAYER_ARN} ParameterKey=AmplifyRepository,ParameterValue=${AMPLIFY_REPOSITORY} --capabilities CAPABILITY_NAMED_IAM aws cloudformation describe-stacks --stack-name $STACK_NAME --query "Stacks[0].StackStatus"
aws cloudformation wait stack-create-complete --stack-name $STACK_NAME export LEX_BOT_ID=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`LexBotID`].OutputValue' --output text) export LAMBDA_ARN=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`LambdaARN`].OutputValue' --output text) aws lexv2-models update-bot-alias --bot-alias-id 'TSTALIASID' --bot-alias-name 'TestBotAlias' --bot-id $LEX_BOT_ID --bot-version 'DRAFT' --bot-alias-locale-settings "{"en_US":{"enabled":true,"codeHookSpecification":{"lambdaCodeHook":{"codeHookInterfaceVersion":"1.0","lambdaARN":"${LAMBDA_ARN}"}}}}" aws lexv2-models build-bot-locale --bot-id $LEX_BOT_ID --bot-version "DRAFT" --locale-id "en_US" export KENDRA_INDEX_ID=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`KendraIndexID`].OutputValue' --output text) export KENDRA_S3_DATA_SOURCE_ID=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`KendraS3DataSourceID`].OutputValue' --output text) export KENDRA_WEBCRAWLER_DATA_SOURCE_ID=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`KendraWebCrawlerDataSourceID`].OutputValue' --output text) aws kendra start-data-source-sync-job --id $KENDRA_S3_DATA_SOURCE_ID --index-id $KENDRA_INDEX_ID aws kendra start-data-source-sync-job --id $KENDRA_WEBCRAWLER_DATA_SOURCE_ID --index-id $KENDRA_INDEX_ID export AMPLIFY_APP_ID=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmplifyAppID`].OutputValue' --output text) export AMPLIFY_BRANCH=$(aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmplifyBranch`].OutputValue' --output text) aws amplify start-job --app-id $AMPLIFY_APP_ID --branch-name $AMPLIFY_BRANCH --job-type 'RELEASE'

לאחר פריסה

בסעיף זה, אנו דנים בשלבים שלאחר הפריסה להשקת יישום חזיתי שנועד לחקות את יישום ההפקה של הלקוח. סוכן השירותים הפיננסיים יפעל כעוזר מוטבע בתוך ממשק המשתמש האינטרנטי לדוגמה.

הפעל ממשק משתמש אינטרנט עבור הצ'אטבוט שלך

השמיים ממשק משתמש אינטרנט של Amazon Lex, הידוע גם כ-chatbot UI, מאפשר לך לספק במהירות לקוח אינטרנט מקיף עבור צ'אטבוטים של Amazon Lex. ממשק המשתמש משתלב עם Amazon Lex כדי לייצר תוסף JavaScript שישלב ווידג'ט צ'אט המופעל על Amazon Lex ביישום האינטרנט הקיים שלך. במקרה זה, אנו משתמשים בממשק המשתמש של האינטרנט כדי לחקות אפליקציית אינטרנט קיימת של לקוחות עם צ'אטבוט מוטבע של Amazon Lex. השלם את השלבים הבאים:

  1. עקוב אחר ההוראות ל לפרוס את ערימת CloudFormation של ממשק המשתמש של Amazon Lex.
  2. במסוף AWS CloudFormation, נווט אל המחסנית יציאות כרטיסיית ומצא את הערך עבור SnippetUrl.
CloudFormation מוציא את כתובת ה-URL של Lex Web UI Snippet

איור 1: אמזון CloudFormation מוציא את כתובת האתר של Lex Web UI Snippet

  1. העתק את קטע ה-Iframe של ממשק המשתמש של האינטרנט, שידמה לפורמט שמתחתיו הוספת ממשק המשתמש של ChatBot לאתר שלך כ-Iframe.
Lex Web UI Iframe Snippet

איור 2: Lex Web UI Iframe Snippet

  1. ערוך את הגרסה המפוצלת שלך של מאגר המקור Amplify GitHub על ידי הוספת תוסף JavaScript של ממשק המשתמש של האינטרנט שלך לקטע המסומן <-- Paste your Lex Web UI JavaScript plugin here --> עבור כל אחד מקבצי ה-HTML תחת ה- ספריית קצה: index.html, contact.html, ו about.html.
Frontend של Lex Web UI Snippet

איור 3: Frontend של Lex Web UI Snippet

Amplify מספקת צנרת בנייה והפצה אוטומטית המופעלת על סמך התחייבויות חדשות למאגר המזלג שלך ומפרסמת את הגרסה החדשה של האתר שלך בדומיין Amplify שלך. אתה יכול להציג את סטטוס הפריסה במסוף Amplify.

AWS Amplify Pipeline Status

איור 4: AWS Amplify Pipeline Status

גש לאתר Amplify

עם התוסף שלך ל-Amazon Lex web UI JavaScript במקום, אתה מוכן כעת להשיק את אתר ההדגמה שלך Amplify.

  1. כדי לגשת לדומיין של האתר שלך, נווט אל המחסנית של CloudFormation יציאות הכרטיסייה ואתר את כתובת האתר של הדומיין Amplify. לחלופין, השתמש בפקודה הבאה:
    aws cloudformation describe-stacks --stack-name $STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmplifyDemoWebsite`].OutputValue' --output text

  2. לאחר שתיגשת לכתובת האתר של דומיין Amplify שלך, תוכל להמשיך בבדיקה ובאימות.
AWS Amplify Frontend

איור 5: AWS Amplify Frontend

בדיקה ותיקוף

נוהל הבדיקה הבא נועד לוודא שהסוכן מזהה ומבין נכון את כוונות המשתמש לגישה לנתוני לקוחות (כגון פרטי חשבון), מילוי זרימות עבודה עסקיות באמצעות כוונות מוגדרות מראש (כגון מילוי בקשת הלוואה), ומענה לשאלות כלליות, כגון הנחיות לדוגמה הבאות:

  1. מדוע עלי להשתמש ב-?
  2. עד כמה התעריפים שלהם תחרותיים?
  3. באיזה סוג משכנתא כדאי להשתמש?
  4. מהן מגמות המשכנתא הנוכחיות?
  5. כמה אני צריך לחסוך עבור מקדמה?
  6. אילו עלויות נוספות אשלם בסגירה?

דיוק התגובה נקבע על ידי הערכת הרלוונטיות, הקוהרנטיות והאופי האנושי של התשובות שנוצרו על ידי אמזון סלע שסופק לאנתרופיק קלוד 2.1 FM. יש לאשר את קישורי המקור המסופקים עם כל תגובה (לדוגמה, .com המבוסס על תצורת Amazon Kendra Web Crawler) כאמינים.

לספק תשובות מותאמות אישית

ודא שהסוכן ניגש בהצלחה למידע הלקוח הרלוונטי ב-DynamoDB ומנצל אותו כדי להתאים תגובות ספציפיות למשתמש.

תגובה אישית

איור 6: תגובה מותאמת אישית

שים לב שהשימוש באימות PIN בתוך הסוכן הוא למטרות הדגמה בלבד ואין להשתמש בו בכל יישום ייצור.

אצור תשובות דעתניות

ודא ששאלות דעתניות נענות בתשובות מהימנות על ידי הסוכן שמוצא תשובות נכון בהתבסס על מסמכי לקוחות ודפי אינטרנט סמכותיים שנוספו על ידי אמזון קנדרה.

תגובה עם דעה

איור 7: תגובת RAG

לספק יצירת הקשר

קבע את יכולתו של הסוכן לספק תגובות רלוונטיות מבחינה הקשר בהתבסס על היסטוריית הצ'אט הקודמת.

תגובת דור הקשר

איור 8: תגובת יצירת הקשר

גישה לידע כללי

אשר את הגישה של הסוכן למידע ידע כללי עבור שאילתות שאינן ספציפיות ללקוח, ללא דעה הדורשות תשובות מדויקות וקוהרנטיות על סמך נתוני אימון אמזון Bedrock FM ו-RAG.

תגובת ידע כללי

איור 9: תגובת ידע כללי

הפעל כוונות מוגדרות מראש

ודא שהסוכן מפרש נכון וממלא בשיחה את הנחיות המשתמש שנועדו להיות מנותבות למטרות מוגדרות מראש, כגון השלמת בקשת הלוואה כחלק מתהליך עבודה עסקי.

תגובת כוונה מוגדרת מראש

איור 10: תגובת כוונה מוגדרת מראש

להלן מסמך בקשת ההלוואה שנוצר באמצעות זרימת השיחה.

בקשת הלוואה כתוצאה מכך

איור 11: בקשת הלוואה כתוצאה מכך

ניתן לבדוק את פונקציונליות התמיכה הרב-ערוצית בשילוב עם אמצעי ההערכה הקודמים בערוצי אינטרנט, SMS וקול. למידע נוסף על שילוב הצ'אטבוט עם שירותים אחרים, עיין ב שילוב בוט של Amazon Lex V2 עם Twilio SMS ו הוסף בוט של Amazon Lex ל- Amazon Connect.

לנקות את

כדי להימנע מחיובים בחשבון ה-AWS שלך, נקה את המשאבים המסופקים של הפתרון.

  1. בטל את אסימון הגישה האישי של GitHub. GitHub PATs מוגדרים עם ערך תפוגה. אם אתה רוצה להבטיח שלא ניתן יהיה להשתמש ב-PAT שלך לגישה פרוגרמטית למאגר ה-Amplify GitHub המחולק שלך לפני שהוא יגיע לתוקף שלו, תוכל לבטל את ה-PAT על ידי ביצוע הוראות ריפו של GitHub.
  2. מחק את מחסנית ה-GenAI-FSI-Agent.yml CloudFormation ומשאבי פתרונות אחרים באמצעות סקריפט האוטומציה של מחיקת הפתרון. הפקודות הבאות משתמשות בשם מחסנית ברירת המחדל. אם התאמת אישית את שם המחסנית, התאם את הפקודות בהתאם.# export STACK_NAME=<YOUR-STACK-NAME>
    ./delete-stack.sh

    סקריפט אוטומציה למחיקת פתרון

    השמיים delete-stack.sh shell הסקריפט מוחק את המשאבים שסופקו במקור באמצעות סקריפט האוטומציה של פריסת הפתרונות, כולל מחסנית GenAI-FSI-Agent.yml CloudFormation.

    # cd generative-ai-amazon-bedrock-langchain-agent-example/shell/ # chmod u+x delete-stack.sh # ./delete-stack.sh echo "Deleting Kendra Data Source: $KENDRA_WEBCRAWLER_DATA_SOURCE_ID" aws kendra delete-data-source --id $KENDRA_WEBCRAWLER_DATA_SOURCE_ID --index-id $KENDRA_INDEX_ID echo "Emptying and Deleting S3 Bucket: $S3_ARTIFACT_BUCKET_NAME" aws s3 rm s3://${S3_ARTIFACT_BUCKET_NAME} --recursive aws s3 rb s3://${S3_ARTIFACT_BUCKET_NAME} echo "Deleting CloudFormation Stack: $STACK_NAME" aws cloudformation delete-stack --stack-name $STACK_NAME aws cloudformation wait stack-delete-complete --stack-name $STACK_NAME echo "Deleting Secrets Manager Secret: $GITHUB_TOKEN_SECRET_NAME" aws secretsmanager delete-secret --secret-id $GITHUB_TOKEN_SECRET_NAME

שיקולים

למרות שהפתרון בפוסט זה מציג את היכולות של סוכן שירותים פיננסיים בינה מלאכותית המופעלת על ידי Amazon Bedrock, חיוני להכיר בכך שהפתרון הזה אינו מוכן לייצור. במקום זאת, הוא משמש דוגמה להמחשה למפתחים שמטרתם ליצור סוכני שיחה מותאמים אישית עבור יישומים מגוונים כמו עובדים וירטואליים ומערכות תמיכת לקוחות. נתיב של מפתח לייצור יחזור על פתרון לדוגמה זה עם השיקולים הבאים.

אבטחה ופרטיות

הבטח אבטחת מידע ופרטיות המשתמש לאורך תהליך היישום. הטמעת בקרות גישה מתאימות ומנגנוני הצפנה כדי להגן על מידע רגיש. פתרונות כמו סוכן השירותים הפיננסיים הגנרטיבי בינה מלאכותית ייהנו מנתונים שעדיין אינם זמינים ל-FM הבסיסית, מה שאומר לעתים קרובות שתרצה להשתמש בנתונים הפרטיים שלך לזינוק הגדול ביותר ביכולת. שקול את השיטות המומלצות הבאות:

  1. שמור את זה בסוד, שמור על זה בטוח - אתה תרצה שהנתונים האלה יישארו מוגנים לחלוטין, מאובטחים ופרטיים במהלך התהליך היצירתי, ותרצה שליטה על אופן השיתוף והשימוש בנתונים אלה.
  2. קבע מעקות בטיחות לשימוש - הבן כיצד משתמשים בנתונים על ידי שירות לפני הפיכתם לזמינים לצוותים שלך. צור והפיץ את הכללים לאילו נתונים ניתן להשתמש עם איזה שירות. הבהירו זאת לצוותים שלכם כדי שיוכלו לנוע במהירות ואב-טיפוס בבטחה.
  3. לערב את משפטי, במוקדם ולא במאוחר - בקש מהצוותים המשפטיים שלך לבדוק את התנאים וההגבלות ואת כרטיסי השירות של השירותים שבהם אתה מתכנן להשתמש לפני שתתחיל להפעיל נתונים רגישים דרכם. השותפים המשפטיים שלך מעולם לא היו חשובים יותר ממה שהם היום.

כדוגמה לאופן שבו אנחנו חושבים על זה ב-AWS עם Amazon Bedrock: כל הנתונים מוצפנים ואינם עוזבים את ה-VPC שלך, ואמזון Bedrock מייצרת עותק נפרד של ה-FM הבסיסי שנגיש רק ללקוח, ומכוונים עדינים או מאמן את העותק הפרטי הזה של הדגם.

בדיקות קבלת משתמש

ערכו בדיקות קבלת משתמשים (UAT) עם משתמשים אמיתיים כדי להעריך את הביצועים, השימושיות ושביעות הרצון של סוכן השירותים הפיננסיים המייצר בינה מלאכותית. אסוף משוב ובצע את השיפורים הנדרשים על סמך קלט המשתמש.

פריסה וניטור

פרוס את הסוכן שנבדק במלואו ב-AWS, והטמיע ניטור ורישום כדי לעקוב אחר הביצועים שלו, לזהות בעיות ולייעל את המערכת לפי הצורך. תכונות ניטור למבדה ופתרון בעיות מופעלים כברירת מחדל עבור מטפל ה- Lambda של הסוכן.

תחזוקה ועדכונים

עדכן את הסוכן בקביעות עם גרסאות ה-FM והנתונים העדכניים ביותר כדי לשפר את הדיוק והיעילות שלו. עקוב אחר נתונים ספציפיים ללקוח ב-DynamoDB וסנכרן את אינדקס מקור הנתונים של Amazon Kendra לפי הצורך.

סיכום

בפוסט זה, התעמקנו בעולם המרגש של סוכני AI מחוללים וביכולתם לאפשר אינטראקציות דמויות אדם באמצעות תזמור של שיחות ל-FM וכלים משלימים אחרים. על ידי ביצוע מדריך זה, תוכל להשתמש ב- Bedrock, LangChain ומשאבי לקוחות קיימים כדי ליישם, לבדוק ולאמת בהצלחה סוכן אמין המספק למשתמשים סיוע פיננסי מדויק ומותאם אישית באמצעות שיחות בשפה טבעית.

בפוסט הקרוב, נדגים כיצד ניתן לספק את אותה פונקציונליות באמצעות גישה חלופית עם סוכנים עבור Amazon Bedrock ו בסיס ידע עבור Amazon Bedrock. הטמעה המנוהלת במלואה של AWS תמשיך לחקור כיצד להציע יכולות אוטומציה חכמות וחיפוש נתונים באמצעות סוכנים מותאמים אישית המשנים את האופן שבו משתמשים מתקשרים עם היישומים שלך, מה שהופך את האינטראקציות לטבעיות, יעילות ואפקטיביות יותר.


על הסופר

קייל טי בלוקסום הוא אדריכל פתרונות Sr. עם AWS שבסיסו בדרום קליפורניה. התשוקה של קייל היא לקרב אנשים ולמנף טכנולוגיה כדי לספק פתרונות שלקוחות אוהבים. מחוץ לעבודה, הוא נהנה לגלוש, לאכול, להיאבק עם הכלב שלו ולפנק את אחייניתו ואחיינו.

ספוט_ימג

המודיעין האחרון

ספוט_ימג