

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à.

# Utilizzo dell'intelligenza artificiale agentica con DynamoDB
<a name="ddb-ai-integration"></a>

Amazon DynamoDB è un database NoSQL distribuito senza server, completamente gestito, con prestazioni a una cifra in millisecondi su qualsiasi scala. DynamoDB è ottimizzato per carichi di lavoro ad alto throughput ed è possibile estenderne le funzionalità attraverso l’integrazione con modelli di IA generativa. Utilizzando modelli di IA generativa è possibile lavorare con i dati archiviati nelle tabelle DynamoDB in tempo reale e creare applicazioni che possono adattarsi al contesto e altamente personalizzate. È possibile anche migliorare l’esperienza dell’utente finale sfruttando appieno i dati aziendali, degli utenti e delle applicazioni per personalizzare le proprie soluzioni di IA generativa.

[Per ulteriori informazioni sull'IA di generazione e sulle soluzioni AWS fornite per creare applicazioni AI di generazione, consulta Trasforma il tuo business con l'intelligenza artificiale generativa.](https://aws.amazon.com/ai/generative-ai/)

**Topics**
+ [

## Casi d’uso di IA generativa per DynamoDB
](#gen-ai-use-case-ddb)
+ [

## Blog di IA generativa per DynamoDB
](#gen-ai-blogs)
+ [

# Sfruttare l'integrazione zero-ETL di DynamoDB con Service OpenSearch
](ddb-and-amazon-bedrock.md)
+ [

# Utilizzo di DynamoDB come archivio di checkpoint per gli agenti LangGraph
](ddb-langgraph-checkpoint.md)

## Casi d’uso di IA generativa per DynamoDB
<a name="gen-ai-use-case-ddb"></a>

DynamoDB è ampiamente utilizzato nelle applicazioni conversazionali basate sull’intelligenza artificiale, come chatbot e call center creati con un [modello di fondazione (FM)](https://aws.amazon.com/what-is/foundation-models/). Puoi accedere FMs tramite Amazon Bedrock, Amazon SageMaker AI o altri fornitori di modelli. Tali applicazioni utilizzano comunemente DynamoDB per migliorare la personalizzazione e migliorare l’esperienza utente su tre modelli di dati: dati applicativi, dati aziendali e dati degli utenti. Alcuni esempi di questi modelli di dati sono i seguenti:
+ Archiviazione dei dati dell'applicazione, come la cronologia dei messaggi di chat, tramite integrazioni con [LangChain](https://js.langchain.com/v0.1/docs/integrations/chat_memory/dynamodb/)o un codice personalizzato. [LlamaIndex](https://docs.llamaindex.ai/en/stable/examples/docstore/DynamoDBDocstoreDemo/) Questo contesto migliora l’esperienza dell’utente consentendo al modello una *conversazione* bidirezionale con l’utente.
+ Creazione di un’esperienza utente personalizzata sfruttando i dati aziendali, come inventario, prezzi e documentazione.
+ Applicazione dei dati utente, come la cronologia web, gli ordini passati e le preferenze dell’utente, per fornire risposte personalizzate.

Ad esempio, una compagnia di assicurazioni può creare un chatbot utilizzando DynamoDB per fornire al proprio modello di IA generativa basato sulla [generazione potenziata da recupero dati (RAG, Retrieval-Augmented Generation)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html) l’accesso a dati quasi in tempo reale. Esempi di tali dati sono i tassi ipotecari in tempo reale, i prezzi dei prodotti, la copia del compliant/standard contratto, la cronologia web degli utenti e le preferenze degli utenti. La combinazione di DynamoDB con RAG aggiunge informazioni approfondite e aggiornate sui prodotti assicurativi e sui dati degli utenti. Ciò arricchisce i prompt e le risposte per fornire agli utenti finali un’esperienza accurata, personalizzata e quasi in tempo reale.

Allo stesso modo, i clienti del settore dei servizi finanziari utilizzano DynamoDB, le [knowledge base Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) e gli [agenti Amazon Bedrock](https://aws.amazon.com/bedrock/agents/) per creare applicazioni di IA generativa basate su RAG. Queste applicazioni possono utilizzare report sugli utili e trascrizioni delle chiamate open source. Possono inoltre utilizzare la cronologia del portafoglio e delle transazioni specifica dell’utente per generare un riepilogo on demand del portafoglio che include una prospettiva per il futuro.

## Blog di IA generativa per DynamoDB
<a name="gen-ai-blogs"></a>

I seguenti articoli offrono casi d'uso dettagliati, best practice e step-by-step guide per aiutarvi a sfruttare le funzionalità di DynamoDB nella creazione di applicazioni avanzate basate sull'intelligenza artificiale.
+ [Amazon DynamoDB data models for generative AI chatbots ](https://aws.amazon.com/blogs/database/amazon-dynamodb-data-models-for-generative-ai-chatbots/) 
+ [Crea un chatbot scalabile e sensibile al contesto con Amazon DynamoDB, Amazon Bedrock e LangChain](https://aws.amazon.com/blogs/database/build-a-scalable-context-aware-chatbot-with-amazon-dynamodb-amazon-bedrock-and-langchain/) 
+ [Crea agenti AI durevoli con LangGraph Amazon DynamoDB](https://aws.amazon.com/blogs/database/build-durable-ai-agents-with-langgraph-and-amazon-dynamodb/) 

# Sfruttare l'integrazione zero-ETL di DynamoDB con Service OpenSearch
<a name="ddb-and-amazon-bedrock"></a>

Puoi utilizzare Amazon Bedrock con DynamoDB per fornire accesso serverless a modelli di [base (FMs), come Amazon Titan](https://aws.amazon.com/what-is/foundation-models/) e altri modelli di terze parti. Puoi sfruttare l'integrazione zero-ETL con Amazon OpenSearch Service per abilitare le funzionalità di ricerca vettoriale durante la creazione di applicazioni di intelligenza artificiale generativa. Il workshop [Generative AI with DynamoDB zero-ETL OpenSearch to integration e Amazon Bedrock ti offrono un'esperienza pratica nella configurazione dell'integrazione](https://catalog.workshops.aws/dynamodb-labs/en-US/dynamodb-opensearch-zetl) DynamoDB zero-ETL con. OpenSearch Questo workshop svolge le seguenti attività:
+ Crea una pipeline dalla tabella DynamoDB a. OpenSearch
+ Crea un Amazon Bedrock Connector in OpenSearch.
+ Interroga Amazon Bedrock OpenSearch come archivio vettoriale.
+ Utilizza Claude FM in Amazon Bedrock per creare una risposta scritta in inglese semplice che spieghi i risultati della ricerca restituiti da. OpenSearch

Questo workshop consente di integrare DynamoDB per creare applicazioni di intelligenza OpenSearch artificiale generativa. Dimostra inoltre la capacità flessibile di interrogazione tra i motori di database per aiutarti a integrare DynamoDB e per i casi d'uso tradizionali. OpenSearch Questo workshop è uno dei sette moduli dell’[Amazon DynamoDB Immersion Day](https://catalog.workshops.aws/dynamodb-labs/en-US). Puoi tenere questo workshop in qualsiasi luogo. Account AWS

Puoi anche fare riferimento al seguente post di blog su come configurare un'integrazione zero-ETL tra DynamoDB e Service. OpenSearch Questo post del blog descrive anche come configurare i connettori modello in OpenSearch Service per generare automaticamente incorporamenti utilizzando Amazon Bedrock per i dati in entrata. [Ricerca vettoriale per Amazon DynamoDB con zero ETL](https://aws.amazon.com/blogs/database/vector-search-for-amazon-dynamodb-with-zero-etl-for-amazon-opensearch-service/) per Amazon Service. OpenSearch 

# Utilizzo di DynamoDB come archivio di checkpoint per gli agenti LangGraph
<a name="ddb-langgraph-checkpoint"></a>

[LangGraph](https://langchain-ai.github.io/langgraph/)è un framework per la creazione di applicazioni di intelligenza artificiale multiattore con Large Language Models (). LLMs LangGraph gli agenti richiedono uno storage persistente per mantenere lo stato della conversazione, abilitare i human-in-the-loop flussi di lavoro, supportare la tolleranza agli errori e fornire funzionalità di debug con viaggi nel tempo. L'architettura serverless di DynamoDB, la latenza a una cifra di millisecondi e la scalabilità automatica lo rendono un checkpoint store ideale per le implementazioni di produzione su. LangGraph AWS

Il `langgraph-checkpoint-aws` pacchetto fornisce una `DynamoDBSaver` classe che implementa l'interfaccia LangGraph checkpoint, che consente di mantenere lo stato dell'agente in DynamoDB con l'offload opzionale di Amazon Simple Storage Service per checkpoint di grandi dimensioni.

## Funzionalità principali
<a name="langgraph-key-features"></a>

Persistenza dello stato  
Salva automaticamente lo stato dell'agente dopo ogni passaggio, permettendo agli agenti di riprendere le attività dopo le interruzioni e riprendersi dai guasti.

Pulizia basata su Time to Live  
Fai scadere automaticamente i vecchi checkpoint utilizzando DynamoDB Time to Live per gestire i costi di storage.

Compression  
Opzionalmente, comprimi i dati dei checkpoint con gzip per ridurre i costi di storage e migliorare il throughput.

Offload di Amazon S3  
Trasferisci automaticamente checkpoint di grandi dimensioni (superiori a 350 KB) su Amazon Simple Storage Service per lavorare entro i limiti di dimensione degli articoli di DynamoDB.

Supporto per la sincronizzazione e l'asincrono  
Sia sincrono che asincrono APIs per la flessibilità in diverse architetture applicative.

## Prerequisiti
<a name="langgraph-prerequisites"></a>
+ Python 3.10 o successivo
+ E Account AWS con autorizzazioni per creare tabelle DynamoDB (e facoltativamente bucket Amazon S3)
+ AWS credenziali configurate (consulta la documentazione per le opzioni di configurazione delle credenziali) AWS 

**Importante**  
Questa guida crea AWS risorse che potrebbero comportare costi. DynamoDB pay-per-request utilizza la fatturazione per impostazione predefinita e, se abiliti l'offload da checkpoint di grandi dimensioni, vengono applicati i costi di Amazon S3. Segui la sezione [Pulizia per](#langgraph-cleanup) eliminare le risorse quando hai finito.

## Installazione
<a name="langgraph-installation"></a>

Installa il pacchetto checkpoint da PyPI:

```
pip install langgraph-checkpoint-aws
```

## Utilizzo di base
<a name="langgraph-basic-usage"></a>

L'esempio seguente dimostra come configurare DynamoDB come checkpoint store per un agente: LangGraph 

```
from langgraph.graph import StateGraph
from langgraph_checkpoint_aws import DynamoDBSaver
from typing import TypedDict

# Define your state schema
class State(TypedDict):
    input: str
    result: str

# Initialize the DynamoDB checkpoint saver
checkpointer = DynamoDBSaver(
    table_name="langgraph-checkpoints",
    region_name="us-east-1"
)

# Build your LangGraph workflow
builder = StateGraph(State)
builder.add_node("process", lambda state: {"result": "processed"})
builder.set_entry_point("process")
builder.set_finish_point("process")

# Compile the graph with the DynamoDB checkpointer
graph = builder.compile(checkpointer=checkpointer)

# Invoke the graph with a thread ID to enable state persistence
config = {"configurable": {"thread_id": "session-123"}}
result = graph.invoke({"input": "data"}, config)
```

`thread_id`Nella configurazione funge da chiave di partizione in DynamoDB, consentendoti di mantenere thread di conversazione separati e recuperare gli stati storici per ogni thread.

## Configurazione di produzione
<a name="langgraph-production-config"></a>

Per le implementazioni di produzione, puoi abilitare Time to Live, compressione e Amazon S3 offload. Puoi anche utilizzare il `endpoint_url` parametro per puntare a un'istanza locale di DynamoDB per il test:

```
import boto3
from botocore.config import Config
from langgraph_checkpoint_aws import DynamoDBSaver

# Production configuration
session = boto3.Session(
    profile_name="production",
    region_name="us-east-1"
)

checkpointer = DynamoDBSaver(
    table_name="langgraph-checkpoints",
    session=session,
    ttl_seconds=86400 * 7,           # Expire checkpoints after 7 days
    enable_checkpoint_compression=True,  # Enable gzip compression
    boto_config=Config(
        retries={"mode": "adaptive", "max_attempts": 6},
        max_pool_connections=50
    ),
    s3_offload_config={
        "bucket_name": "my-checkpoint-bucket"
    }
)

# Local testing with DynamoDB Local
local_checkpointer = DynamoDBSaver(
    table_name="langgraph-checkpoints",
    region_name="us-east-1",
    endpoint_url="http://localhost:8000"
)
```

## Configurazione della tabella DynamoDB
<a name="langgraph-table-config"></a>

Il checkpoint saver richiede una tabella DynamoDB con una chiave primaria composita. È possibile creare la tabella utilizzando il seguente modello: AWS CloudFormation 

```
AWSTemplateFormatVersion: '2010-09-09'
Description: 'DynamoDB table for LangGraph checkpoint storage'

Parameters:
  TableName:
    Type: String
    Default: langgraph-checkpoints

Resources:
  CheckpointTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    UpdateReplacePolicy: Retain
    Properties:
      TableName: !Ref TableName
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: PK
          AttributeType: S
        - AttributeName: SK
          AttributeType: S
      KeySchema:
        - AttributeName: PK
          KeyType: HASH
        - AttributeName: SK
          KeyType: RANGE
      TimeToLiveSpecification:
        AttributeName: ttl
        Enabled: true
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true
      SSESpecification:
        SSEEnabled: true
```

Distribuisci il modello con la AWS CLI:

```
aws cloudformation deploy \
  --template-file template.yaml \
  --stack-name langgraph-checkpoint \
  --parameter-overrides TableName=langgraph-checkpoints
```

## Autorizzazioni IAM richieste
<a name="langgraph-iam-permissions"></a>

La seguente policy IAM fornisce le autorizzazioni minime richieste per il checkpoint saver di DynamoDB. *111122223333*Sostituiscila con il tuo Account AWS ID e aggiorna la regione in base al tuo ambiente.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem",
        "dynamodb:Query",
        "dynamodb:BatchGetItem",
        "dynamodb:BatchWriteItem"
      ],
      "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/langgraph-checkpoints"
    }
  ]
}
```

Se abiliti l'offload di Amazon S3, aggiungi la seguente dichiarazione alla policy:

```
{
  "Effect": "Allow",
  "Action": [
    "s3:PutObject",
    "s3:GetObject",
    "s3:DeleteObject",
    "s3:PutObjectTagging"
  ],
  "Resource": "arn:aws:s3:::my-checkpoint-bucket/*"
},
{
  "Effect": "Allow",
  "Action": [
    "s3:GetBucketLifecycleConfiguration",
    "s3:PutBucketLifecycleConfiguration"
  ],
  "Resource": "arn:aws:s3:::my-checkpoint-bucket"
}
```

## Utilizzo asincrono
<a name="langgraph-async"></a>

Per le applicazioni asincrone, usa i metodi asincroni forniti dal checkpoint saver:

```
import asyncio
from langgraph.graph import StateGraph
from langgraph_checkpoint_aws import DynamoDBSaver
from typing import TypedDict

class State(TypedDict):
    input: str
    result: str

async def main():
    checkpointer = DynamoDBSaver(
        table_name="langgraph-checkpoints",
        region_name="us-east-1"
    )
    builder = StateGraph(State)
    builder.add_node("process", lambda state: {"result": "processed"})
    builder.set_entry_point("process")
    builder.set_finish_point("process")
    graph = builder.compile(checkpointer=checkpointer)

    config = {"configurable": {"thread_id": "async-session-123"}}
    result = await graph.ainvoke({"input": "data"}, config)
    return result

asyncio.run(main())
```

## Eliminazione
<a name="langgraph-cleanup"></a>

Per evitare addebiti continui, elimina le risorse che hai creato:

```
# Delete the DynamoDB table
aws dynamodb delete-table --table-name langgraph-checkpoints

# Delete the CloudFormation stack (if you used the template above)
aws cloudformation delete-stack --stack-name langgraph-checkpoint

# If you created an S3 bucket for large checkpoint offloading, empty and delete it
aws s3 rm s3://my-checkpoint-bucket --recursive
aws s3 rb s3://my-checkpoint-bucket
```

## Gestione degli errori
<a name="langgraph-error-handling"></a>

Scenari di errore comuni:
+ **Tabella non trovata**: verifica `table_name` e `region_name` abbina la tabella DynamoDB.
+ **Limitazione:** se vedi`ProvisionedThroughputExceededException`, valuta la possibilità di passare alla modalità di fatturazione su richiesta o di aumentare la capacità fornita.
+ **Dimensione dell'articolo superata**: se i checkpoint superano i 350 KB, abilita l'offload di Amazon S3 (vedi). [Configurazione di produzione](#langgraph-production-config)
+ **Errori nelle credenziali**[: verifica che AWS le tue credenziali siano valide e dispongano delle autorizzazioni richieste.](#langgraph-iam-permissions)

## Risorse aggiuntive
<a name="langgraph-additional-resources"></a>
+ [langgraph-checkpoint-aws su PyPI](https://pypi.org/project/langgraph-checkpoint-aws/)
+ [langgraph-checkpoint-aws su GitHub](https://github.com/langchain-ai/langchain-aws/blob/main/libs/langgraph-checkpoint-aws/docs/dynamodb/DynamoDBSaver.md)
+ [Documentazione di LangGraph](https://langchain-ai.github.io/langgraph/)
+ [Le migliori pratiche di DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html)
+ [Crea agenti AI durevoli con LangGraph Amazon DynamoDB](https://aws.amazon.com/blogs/database/build-durable-ai-agents-with-langgraph-and-amazon-dynamodb/)