Sviluppa un assistente basato su chat completamente automatizzato utilizzando gli agenti e le knowledge base di Amazon Bedrock - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sviluppa un assistente basato su chat completamente automatizzato utilizzando gli agenti e le knowledge base di Amazon Bedrock

Creato da Jundong Qiao (AWS), Kara Yang (AWS), Kiowa Jackson (AWS), Noah Hamilton (AWS), Praveen Kumar Jeyarajan (AWS) e Shuai Cao (AWS)

Archivio di codici: genai-bedrock-agent-chatbot

Ambiente: PoC o pilota

Tecnologie: apprendimento automatico e intelligenza artificiale; serverless

Servizi AWS: Amazon Bedrock; CDK AWS; AWS Lambda

Riepilogo

Molte organizzazioni affrontano difficoltà quando creano un assistente basato su chat in grado di orchestrare diverse fonti di dati per offrire risposte complete. Questo modello presenta una soluzione per lo sviluppo di un assistente basato su chat in grado di rispondere alle domande provenienti sia dalla documentazione che dai database, con un'implementazione semplice.

A partire da Amazon Bedrock, questo servizio di intelligenza artificiale generativa (AI) completamente gestito offre un'ampia gamma di modelli di base (FM) avanzati. Ciò facilita la creazione efficiente di applicazioni di intelligenza artificiale generativa con una forte attenzione alla privacy e alla sicurezza. Nel contesto del recupero della documentazione, il Retrieval Augmented Generation (RAG) è una funzionalità fondamentale. Utilizza basi di conoscenza per arricchire i prompt FM con informazioni contestualmente rilevanti provenienti da fonti esterne. Un indice Amazon OpenSearch Serverless funge da database vettoriale alla base delle knowledge base per Amazon Bedrock. Questa integrazione è migliorata attraverso un'attenta progettazione tempestiva per ridurre al minimo le imprecisioni e garantire che le risposte siano ancorate a una documentazione fattuale. Per le query sui database, le FM di Amazon Bedrock trasformano le richieste testuali in query SQL strutturate, incorporando parametri specifici. Ciò consente il recupero preciso dei dati dai database gestiti dai database AWS Glue. Amazon Athena viene utilizzato per queste query.

Per gestire domande più complesse, ottenere risposte complete richiede informazioni provenienti sia dalla documentazione che dai database. Agents for Amazon Bedrock è una funzionalità di intelligenza artificiale generativa che ti aiuta a creare agenti autonomi in grado di comprendere attività complesse e suddividerle in attività più semplici da orchestrare. La combinazione di informazioni ricavate dalle attività semplificate, facilitata dagli agenti autonomi di Amazon Bedrock, migliora la sintesi delle informazioni, portando a risposte più complete ed esaustive. Questo modello dimostra come creare un assistente basato su chat utilizzando Amazon Bedrock e i relativi servizi e funzionalità di intelligenza artificiale generativa all'interno di una soluzione automatizzata.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

  • Questa soluzione viene distribuita su un singolo account AWS.

  • Questa soluzione può essere distribuita solo nelle regioni AWS in cui sono supportati Amazon Bedrock e Amazon OpenSearch Serverless. Per ulteriori informazioni, consulta la documentazione per Amazon Bedrock e Amazon OpenSearch Serverless.

Versioni del prodotto

  • Llama-index versione 0.10.6 o successiva

  • Sqlalchemy versione 2.0.23 o successiva

  • OpenSearch-PY versione 2.4.2 o successiva

  • Requests_AWS4Auth versione 1.2.3 o successiva

  • SDK AWS per Python (Boto3) versione 1.34.57 o successiva

Architettura

Stack tecnologico Target

L'AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software open source per definire l'infrastruttura cloud nel codice e fornirla tramite AWS. CloudFormation Lo stack CDK AWS utilizzato in questo modello distribuisce le seguenti risorse AWS: 

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue Data Catalog, per il componente del database AWS Glue

  • AWS Lambda

  • AWS Identity and Access Management (IAM)

  • Amazon OpenSearch Serverless

  • Amazon Elastic Container Registry (Amazon ECR) 

  • Amazon Elastic Container Service (Amazon ECS)

  • AWS Fargate

  • Amazon Virtual Private Cloud (Amazon VPC) (Amazon VPC)

  • Application Load Balancer

Architettura Target

Diagramma di architettura utilizzando una knowledge base e un agente Amazon Bedrock

Il diagramma mostra una configurazione nativa del cloud AWS completa all'interno di una singola regione AWS, utilizzando più servizi AWS. L'interfaccia principale per l'assistente basato sulla chat è un'applicazione Streamlit ospitata su un cluster Amazon ECS. Un Application Load Balancer gestisce l'accessibilità. Le interrogazioni effettuate tramite questa interfaccia attivano la funzione Invocation Lambda, che si interfaccia quindi con gli agenti per Amazon Bedrock. Questo agente risponde alle richieste degli utenti consultando le knowledge base per Amazon Bedrock o richiamando una funzione Lambda. Agent executor Questa funzione attiva una serie di azioni associate all'agente, seguendo uno schema API predefinito. Le knowledge base di Amazon Bedrock utilizzano un indice OpenSearch Serverless come base per il database vettoriale. Inoltre, la Agent executor funzione genera query SQL che vengono eseguite sul database AWS Glue tramite Amazon Athena.

Strumenti

Servizi AWS

  • Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon Simple Storage Service (Amazon S3) utilizzando SQL standard.

  • Amazon Bedrock è un servizio completamente gestito che rende disponibili per l'uso modelli di base (FM) ad alte prestazioni delle principali startup di intelligenza artificiale e di Amazon tramite un'API unificata.

  • AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software che aiuta a definire e fornire l'infrastruttura cloud AWS in codice.

  • AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.

  • Amazon Elastic Container Service (Amazon ECS) è un servizio rapido e scalabile di gestione dei container che ti aiuta a eseguire, arrestare e gestire container in un cluster.

  • Elastic Load Balancing (ELB) distribuisce il traffico di applicazioni o di rete in entrata su più destinazioni. Ad esempio, puoi distribuire il traffico tra istanze Amazon Elastic Compute Cloud (Amazon EC2), contenitori e indirizzi IP in una o più zone di disponibilità.

  • AWS Glue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati. Questo modello utilizza un crawler AWS Glue e una tabella AWS Glue Data Catalog.

  • AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.

  • Amazon OpenSearch Serverless è una configurazione serverless su richiesta per Amazon Service. OpenSearch In questo modello, un indice OpenSearch Serverless funge da database vettoriale per le knowledge base di Amazon Bedrock.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Altri strumenti

  • Streamlit è un framework Python open source per creare applicazioni di dati.

Archivio di codice

Il codice per questo pattern è disponibile nel GitHub genai-bedrock-agent-chatbotrepository. L'archivio del codice contiene i seguenti file e cartelle:

  • assetscartella: le risorse statiche, come il diagramma dell'architettura e il set di dati pubblico.

  • code/lambdas/action-lambdafolder — Il codice Python per la funzione Lambda che funge da azione per l'agente Amazon Bedrock.

  • code/lambdas/create-index-lambdafolder — Il codice Python per la funzione Lambda che crea l'indice Serverless. OpenSearch

  • code/lambdas/invoke-lambdafolder — Il codice Python per la funzione Lambda che richiama l'agente Amazon Bedrock, chiamato direttamente dall'applicazione Streamlit.

  • code/lambdas/update-lambdafolder — Il codice Python per la funzione Lambda che aggiorna o elimina le risorse dopo che le risorse AWS sono state distribuite tramite il CDK AWS.

  • code/layers/boto3_layerfolder: lo stack AWS CDK che crea un livello Boto3 condiviso tra tutte le funzioni Lambda.

  • code/layers/opensearch_layerfolder: lo stack AWS CDK che crea un livello OpenSearch Serverless che installa tutte le dipendenze per creare l'indice.

  • code/streamlit-appfolder — Il codice Python che viene eseguito come immagine del contenitore in Amazon ECS

  • code/code_stack.py— Il CDK AWS crea file Python che creano risorse AWS.

  • app.py— Il CDK AWS impila i file Python che distribuiscono le risorse AWS nell'account AWS di destinazione.

  • requirements.txt— L'elenco di tutte le dipendenze Python che devono essere installate per il CDK AWS.

  • cdk.json— Il file di input per fornire i valori necessari per creare risorse. Inoltre, nei context/config campi, è possibile personalizzare la soluzione di conseguenza. Per ulteriori informazioni sulla personalizzazione, vedere la sezione Informazioni aggiuntive.

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Esporta le variabili per l'account e la regione.

Per fornire le credenziali AWS per il CDK AWS utilizzando variabili di ambiente, esegui i seguenti comandi.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps ingegnere

Configura il profilo denominato AWS CLI.

Per configurare il profilo denominato AWS CLI per l'account, segui le istruzioni in Configurazione e impostazioni del file di credenziali.

AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Clona il repository sulla tua workstation locale.

Per clonare il repository, esegui il seguente comando nel tuo terminale.

git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git
DevOps ingegnere, AWS DevOps

Configura l'ambiente virtuale Python.

Per configurare l'ambiente virtuale Python, esegui i seguenti comandi.

cd genai-bedrock-agent-chatbot python3 -m venv .venv source .venv/bin/activate

Per configurare le dipendenze richieste, esegui il comando seguente.

pip3 install -r requirements.txt
DevOps ingegnere, AWS DevOps

Configura l'ambiente AWS CDK.

Per convertire il codice in un CloudFormation modello AWS, esegui il comandocdk synth.

AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Distribuisci risorse nell'account.

Per distribuire risorse nell'account AWS utilizzando il CDK AWS, procedi come segue:

  1. Nella radice del repository clonato, nel cdk.json file, fornisci gli input per i parametri di registrazione. I valori di esempio sonoINFO,, e. DEBUG WARN ERROR

    Questi valori definiscono i messaggi a livello di registro per le funzioni Lambda e l'applicazione Streamlit.

  2. Il cdk.json file nella radice del repository clonato contiene il nome dello CloudFormation stack AWS utilizzato per la distribuzione. Il nome dello stack predefinito è. chatbot-stack Il nome dell'agente Amazon Bedrock predefinito è e ChatbotBedrockAgent l'alias dell'agente Amazon Bedrock predefinito è. Chatbot_Agent

  3. Per distribuire risorse, esegui il comando. cdk deploy

    Il cdk deploy comando utilizza costrutti di livello 3 per creare più funzioni Lambda per copiare documenti e file di set di dati CSV nei bucket S3. Implementa inoltre l'agente Amazon Bedrock, le knowledge base e la funzione Action group Lambda per l'agente Amazon Bedrock.

  4. Accedi alla Console di gestione AWS, quindi apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  5. Verifica che lo stack sia stato distribuito correttamente. Per istruzioni, consulta Revisione dello stack sulla CloudFormation console AWS.

Una volta completata la distribuzione, puoi accedere all'applicazione di assistenza basata sulla chat utilizzando l'URL fornito nella scheda Output della console. CloudFormation

DevOps ingegnere, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Rimuovi le risorse AWS.

Dopo aver testato la soluzione, per ripulire le risorse, esegui il comandocdk destroy.

AWS DevOps, DevOps ingegnere

Risorse correlate

Documentazione AWS

Altre risorse AWS

Altre risorse

Informazioni aggiuntive

Personalizza l'assistente basato sulla chat con i tuoi dati

Per integrare i dati personalizzati per l'implementazione della soluzione, segui queste linee guida strutturate. Questi passaggi sono progettati per garantire un processo di integrazione semplice ed efficiente, che ti consenta di implementare la soluzione in modo efficace con i tuoi dati personalizzati.

Per l'integrazione dei dati nella knowledge base

Preparazione dei dati

  1. Individua la assets/knowledgebase_data_source/ cartella.

  2. Posiziona il tuo set di dati in questa cartella.

Modifiche alla configurazione

  1. Apri il file cdk.json.

  2. Vai al context/configure/paths/knowledgebase_file_name campo, quindi aggiornalo di conseguenza.

  3. Passa al bedrock_instructions/knowledgebase_instruction campo, quindi aggiornalo per riflettere accuratamente le sfumature e il contesto del nuovo set di dati.

Per l'integrazione strutturale dei dati

Organizzazione dei dati

  1. All'interno della assets/data_query_data_source/ directory, crea una sottodirectory, ad esempiotabular_data.

  2. Inserisci il tuo set di dati strutturato (i formati accettabili includono CSV, JSON, ORC e Parquet) in questa sottocartella appena creata.

  3. Se ti stai connettendo a un database esistente, aggiorna la funzione per connetterti create_sql_engine() code/lambda/action-lambda/build_query_engine.py al tuo database.

Aggiornamenti della configurazione e del codice

  1. Nel cdk.json file, aggiorna il context/configure/paths/athena_table_data_prefix campo per allinearlo al nuovo percorso dei dati.

  2. Effettua la revisione code/lambda/action-lambda/dynamic_examples.csv incorporando nuovi esempi da testo a SQL che corrispondono al set di dati.

  3. Esegui la revisione code/lambda/action-lambda/prompt_templates.py per rispecchiare gli attributi del tuo set di dati strutturato.

  4. Nel cdk.json file, aggiorna il context/configure/bedrock_instructions/action_group_description campo per spiegare lo scopo e la funzionalità della funzione Action group Lambda.

  5. Nel assets/agent_api_schema/artifacts_schema.json file, spiega le nuove funzionalità della tua funzione Action group Lambda.

Aggiornamento generale

Nel cdk.json file, nella context/configure/bedrock_instructions/agent_instruction sezione, fornisci una descrizione completa della funzionalità e dello scopo di progettazione previsti per l'agente Amazon Bedrock, tenendo conto dei nuovi dati integrati.