

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan AI agen dengan DynamoDB
<a name="ddb-ai-integration"></a>

Amazon DynamoDB adalah database NoSQL terdistribusi tanpa server, dikelola sepenuhnya, dan didistribusikan dengan kinerja milidetik satu digit pada skala apa pun. DynamoDB dioptimalkan untuk beban kerja throughput tinggi dan Anda dapat memperluas kemampuannya dengan mengintegrasikan dengan model AI generatif. Dengan menggunakan model AI generatif, Anda dapat bekerja dengan data yang disimpan dalam tabel DynamoDB secara real-time dan membangun aplikasi yang sadar kontekstual dan sangat personal. Anda juga dapat meningkatkan pengalaman pengguna akhir dengan memanfaatkan sepenuhnya data bisnis, pengguna, dan aplikasi Anda untuk menyesuaikan solusi AI generatif Anda.

Untuk informasi selengkapnya tentang gen AI dan solusi yang AWS disediakan untuk membangun aplikasi AI gen, lihat [Mengubah bisnis Anda dengan AI generatif](https://aws.amazon.com/ai/generative-ai/).

**Topics**
+ [

## Kasus penggunaan AI generatif untuk DynamoDB
](#gen-ai-use-case-ddb)
+ [

## Blog AI generatif untuk DynamoDB
](#gen-ai-blogs)
+ [

# Memanfaatkan integrasi DynamoDB Zero-ETL dengan Layanan OpenSearch
](ddb-and-amazon-bedrock.md)
+ [

# Menggunakan DynamoDB sebagai toko pos pemeriksaan untuk agen LangGraph
](ddb-langgraph-checkpoint.md)

## Kasus penggunaan AI generatif untuk DynamoDB
<a name="gen-ai-use-case-ddb"></a>

[DynamoDB banyak digunakan dalam aplikasi percakapan bertenaga AI, seperti chatbots dan call center yang dibangun dengan Foundation Model (FM).](https://aws.amazon.com/what-is/foundation-models/) Anda dapat mengakses FMs melalui Amazon Bedrock, Amazon SageMaker AI, atau penyedia model lainnya. Aplikasi tersebut biasanya menggunakan DynamoDB untuk meningkatkan personalisasi dan meningkatkan pengalaman pengguna di tiga pola data: data aplikasi, data bisnis, dan data pengguna. Beberapa contoh pola data tersebut adalah sebagai berikut:
+ Penyimpanan data aplikasi, seperti riwayat pesan obrolan, melalui integrasi dengan [LangChain](https://js.langchain.com/v0.1/docs/integrations/chat_memory/dynamodb/), [LlamaIndex](https://docs.llamaindex.ai/en/stable/examples/docstore/DynamoDBDocstoreDemo/), atau kode khusus. Konteks ini meningkatkan pengalaman pengguna dengan memungkinkan model untuk *berkomunikasi bolak-balik* dengan pengguna.
+ Pembuatan pengalaman pengguna yang disesuaikan dengan memanfaatkan data bisnis, seperti inventaris, harga, dan dokumentasi.
+ Aplikasi data pengguna, seperti riwayat web, pesanan sebelumnya, dan preferensi pengguna, untuk memberikan jawaban yang dipersonalisasi.

Misalnya, perusahaan asuransi dapat membangun chatbot menggunakan DynamoDB untuk memberikan akses model AI gen berbasis [Retrieval-Augmented Generation (RAG) mereka](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html) ke data mendekati waktu nyata. Contoh data tersebut adalah tarif hipotek real-time, harga produk, salinan compliant/standard kontrak, riwayat web pengguna, dan preferensi pengguna. Menggabungkan DynamoDB dengan RAG menambahkan informasi mendalam dan terbaru tentang produk asuransi dan data pengguna. Ini memperkaya petunjuk dan jawaban untuk memberi pengguna akhir pengalaman yang akurat, dipersonalisasi, dan mendekati waktu nyata.

Demikian pula, pelanggan industri jasa keuangan menggunakan DynamoDB[, basis pengetahuan Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html), [dan agen Amazon Bedrock untuk membangun aplikasi](https://aws.amazon.com/bedrock/agents/) AI gen berbasis RAG. Aplikasi ini dapat menggunakan laporan pendapatan sumber terbuka dan transkrip panggilan. Mereka juga dapat menggunakan portofolio khusus pengguna dan riwayat transaksi untuk menghasilkan ringkasan portofolio sesuai permintaan termasuk prospek untuk masa depan.

## Blog AI generatif untuk DynamoDB
<a name="gen-ai-blogs"></a>

Artikel berikut menawarkan kasus penggunaan terperinci, praktik terbaik, dan step-by-step panduan untuk membantu Anda memanfaatkan kemampuan DynamoDB dalam membangun aplikasi canggih yang didukung AI.
+ [Model data Amazon DynamoDB untuk chatbot AI generatif](https://aws.amazon.com/blogs/database/amazon-dynamodb-data-models-for-generative-ai-chatbots/) 
+ [Buat chatbot yang dapat diskalakan dan sadar konteks dengan Amazon DynamoDB, Amazon Bedrock, dan LangChain](https://aws.amazon.com/blogs/database/build-a-scalable-context-aware-chatbot-with-amazon-dynamodb-amazon-bedrock-and-langchain/) 
+ [Bangun agen AI yang tahan lama dengan LangGraph Amazon DynamoDB](https://aws.amazon.com/blogs/database/build-durable-ai-agents-with-langgraph-and-amazon-dynamodb/) 

# Memanfaatkan integrasi DynamoDB Zero-ETL dengan Layanan OpenSearch
<a name="ddb-and-amazon-bedrock"></a>

Anda dapat menggunakan Amazon Bedrock dengan DynamoDB untuk menyediakan akses tanpa server ke [model dasar (FMs), seperti Amazon Titan dan model](https://aws.amazon.com/what-is/foundation-models/) pihak ketiga lainnya. Anda dapat memanfaatkan integrasi nol-ETL dengan Amazon OpenSearch Service untuk mengaktifkan kemampuan pencarian vektor saat membuat aplikasi AI generatif. [Generative AI dengan DynamoDB Zero-ETL OpenSearch untuk integrasi dan lokakarya Amazon Bedrock memberi Anda pengalaman langsung dalam menyiapkan integrasi DynamoDB](https://catalog.workshops.aws/dynamodb-labs/en-US/dynamodb-opensearch-zetl) Zero-ETL dengan. OpenSearch Workshop ini melakukan tugas-tugas berikut:
+ Membuat pipeline dari tabel DynamoDB Anda ke. OpenSearch
+ Membuat Konektor Batuan Dasar Amazon di OpenSearch.
+ Kueri Amazon Bedrock memanfaatkan OpenSearch sebagai toko vektor.
+ Menggunakan Claude FM di Amazon Bedrock untuk membuat tanggapan tertulis dalam bahasa Inggris sederhana yang menjelaskan hasil pencarian yang dikembalikan oleh. OpenSearch

Workshop ini memungkinkan Anda untuk mengintegrasikan DynamoDB OpenSearch dengan membangun aplikasi AI generatif. Ini juga menunjukkan kemampuan query fleksibel di seluruh mesin database untuk membantu Anda mengintegrasikan DynamoDB dan untuk kasus penggunaan tradisional. OpenSearch Lokakarya ini adalah salah satu dari tujuh modul di [Amazon DynamoDB Immersion Day](https://catalog.workshops.aws/dynamodb-labs/en-US). Anda dapat menjalankan lokakarya ini di mana saja Akun AWS.

Anda juga dapat merujuk ke posting blog berikut tentang cara mengatur integrasi nol-ETL antara DynamoDB dan Layanan. OpenSearch Posting blog ini juga menjelaskan cara mengatur konektor model di OpenSearch Layanan untuk secara otomatis menghasilkan embeddings menggunakan Amazon Bedrock untuk data yang masuk. [Pencarian vektor untuk Amazon DynamoDB dengan nol ETL](https://aws.amazon.com/blogs/database/vector-search-for-amazon-dynamodb-with-zero-etl-for-amazon-opensearch-service/) untuk Amazon Service. OpenSearch 

# Menggunakan DynamoDB sebagai toko pos pemeriksaan untuk agen LangGraph
<a name="ddb-langgraph-checkpoint"></a>

[LangGraph](https://langchain-ai.github.io/langgraph/)adalah kerangka kerja untuk membangun aplikasi AI multi-aktor stateful dengan Large Language Models (). LLMs LangGraph agen memerlukan penyimpanan persisten untuk mempertahankan status percakapan, mengaktifkan human-in-the-loop alur kerja, mendukung toleransi kesalahan, dan menyediakan kemampuan debugging perjalanan waktu. Arsitektur tanpa server DynamoDB, latensi milidetik satu digit, dan penskalaan otomatis menjadikannya toko pos pemeriksaan yang ideal untuk penerapan produksi. LangGraph AWS

`langgraph-checkpoint-aws`Paket ini menyediakan `DynamoDBSaver` kelas yang mengimplementasikan antarmuka LangGraph pos pemeriksaan, memungkinkan Anda untuk mempertahankan status agen di DynamoDB dengan pembongkaran Amazon Simple Storage Service opsional untuk pos pemeriksaan besar.

## Fitur utama
<a name="langgraph-key-features"></a>

Kegigihan negara  
Secara otomatis menyimpan status agen setelah setiap langkah, memungkinkan agen untuk melanjutkan dari gangguan dan pulih dari kegagalan.

Saatnya pembersihan berbasis Live  
Secara otomatis kedaluwarsa pos pemeriksaan lama menggunakan DynamoDB Time to Live untuk mengelola biaya penyimpanan.

Kompresi  
Secara opsional kompres data pos pemeriksaan dengan gzip untuk mengurangi biaya penyimpanan dan meningkatkan throughput.

Pembongkaran Amazon S3  
Secara otomatis membongkar pos pemeriksaan besar (lebih dari 350 KB) ke Amazon Simple Storage Service untuk bekerja dalam batas ukuran item DynamoDB.

Dukungan sinkronisasi dan asinkron  
Baik sinkron maupun asinkron APIs untuk fleksibilitas dalam arsitektur aplikasi yang berbeda.

## Prasyarat
<a name="langgraph-prerequisites"></a>
+ Python 3.10 atau yang lebih baru
+ An Akun AWS dengan izin untuk membuat tabel DynamoDB (dan secara opsional ember Amazon S3)
+ AWS kredensial yang dikonfigurasi (lihat AWS dokumentasi untuk opsi penyiapan kredensi)

**penting**  
Panduan ini menciptakan AWS sumber daya yang mungkin dikenakan biaya. DynamoDB pay-per-request menggunakan penagihan secara default, dan biaya Amazon S3 berlaku jika Anda mengaktifkan pembongkaran pos pemeriksaan besar. Ikuti bagian [Bersihkan](#langgraph-cleanup) untuk menghapus sumber daya ketika Anda selesai.

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

Instal paket pos pemeriksaan dari PyPI:

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

## Penggunaan dasar
<a name="langgraph-basic-usage"></a>

Contoh berikut menunjukkan cara mengkonfigurasi DynamoDB sebagai toko pos pemeriksaan untuk agen: 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`Dalam konfigurasi bertindak sebagai kunci partisi di DynamoDB, memungkinkan Anda untuk mempertahankan utas percakapan terpisah dan mengambil status historis untuk utas apa pun.

## Konfigurasi produksi
<a name="langgraph-production-config"></a>

Untuk penerapan produksi, Anda dapat mengaktifkan Waktu untuk Hidup, kompresi, dan pembongkaran Amazon S3. Anda juga dapat menggunakan `endpoint_url` parameter untuk menunjuk ke instance DynamoDB lokal untuk pengujian:

```
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"
)
```

## Konfigurasi tabel DynamoDB
<a name="langgraph-table-config"></a>

Checkpoint saver membutuhkan tabel DynamoDB dengan kunci primer komposit. Anda dapat membuat tabel menggunakan AWS CloudFormation template berikut:

```
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
```

Menyebarkan template dengan AWS CLI:

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

## Izin IAM yang diperlukan
<a name="langgraph-iam-permissions"></a>

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk penghemat pos pemeriksaan DynamoDB. Ganti *111122223333* dengan Akun AWS ID Anda dan perbarui Wilayah agar sesuai dengan lingkungan Anda.

```
{
  "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"
    }
  ]
}
```

Jika Anda mengaktifkan pembongkaran Amazon S3, tambahkan pernyataan berikut ke kebijakan:

```
{
  "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"
}
```

## Penggunaan asinkron
<a name="langgraph-async"></a>

Untuk aplikasi asinkron, gunakan metode asinkron yang disediakan oleh penghemat pos pemeriksaan:

```
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())
```

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

Untuk menghindari tagihan yang sedang berlangsung, hapus sumber daya yang Anda buat:

```
# 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
```

## Penanganan kesalahan
<a name="langgraph-error-handling"></a>

Skenario kesalahan umum:
+ **Tabel tidak ditemukan**: Verifikasi `table_name` dan `region_name` cocokkan tabel DynamoDB Anda.
+ **Pelambatan**: Jika Anda melihat`ProvisionedThroughputExceededException`, pertimbangkan untuk beralih ke mode penagihan sesuai permintaan atau meningkatkan kapasitas yang disediakan.
+ **Ukuran item terlampaui**: Jika pos pemeriksaan melebihi 350 KB, aktifkan pembongkaran Amazon S3 (lihat). [Konfigurasi produksi](#langgraph-production-config)
+ **Kesalahan kredenal**[: Verifikasi AWS kredensil Anda valid dan memiliki izin yang diperlukan.](#langgraph-iam-permissions)

## Sumber daya tambahan
<a name="langgraph-additional-resources"></a>
+ [langgraph-checkpoint-aws di PyPI](https://pypi.org/project/langgraph-checkpoint-aws/)
+ [langgraph-checkpoint-aws pada GitHub](https://github.com/langchain-ai/langchain-aws/blob/main/libs/langgraph-checkpoint-aws/docs/dynamodb/DynamoDBSaver.md)
+ [Dokumentasi LangGraph](https://langchain-ai.github.io/langgraph/)
+ [Praktik terbaik DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html)
+ [Bangun agen AI yang tahan lama dengan LangGraph Amazon DynamoDB](https://aws.amazon.com/blogs/database/build-durable-ai-agents-with-langgraph-and-amazon-dynamodb/)