Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
DynamoDB als Checkpoint-Speicher für Agenten verwenden LangGraph
LangGraph
Das langgraph-checkpoint-aws Paket enthält eine DynamoDBSaver Klasse, die die LangGraph Checkpoint-Schnittstelle implementiert und es Ihnen ermöglicht, den Agentenstatus in DynamoDB beizubehalten, wobei das optionale Amazon Simple Storage Service-Offloading für große Checkpoints möglich ist.
Das gleiche Paket enthält auch eine DynamoDBStore Klasse, die das LangGraph Store-Interface für langfristigen, threadübergreifenden Agentenspeicher implementiert, wobei die semantische Suche durch DynamoDB-Vektorindizes unterstützt wird. Weitere Informationen finden Sie unter Semantisches Langzeitgedächtnis für Agenten LangGraph. Dieses Thema behandelt den Checkpoint Saver.
Schlüssel-Features
- Persistenz des Zustands
-
Speichert den Agentenstatus automatisch nach jedem Schritt, sodass Agenten nach Unterbrechungen den Vorgang fortsetzen und nach Ausfällen die Wiederherstellung durchführen können.
- Zeit zum Aufräumen Live-based
-
Lassen Sie alte Checkpoints mithilfe von DynamoDB Time to Live automatisch ablaufen, um die Speicherkosten zu verwalten.
- Komprimierung
-
Komprimieren Sie Checkpoint-Daten optional mit gzip, um die Speicherkosten zu senken und den Durchsatz zu verbessern.
- Amazon S3-Auslagerung
-
Lagern Sie große Checkpoints (über 350 KB) automatisch an Amazon Simple Storage Service aus, um innerhalb der DynamoDB-Elementgrößenbeschränkungen zu arbeiten.
- Synchronisation und Async-Unterstützung
-
Sowohl synchrone als auch asynchrone APIs sorgen für Flexibilität in verschiedenen Anwendungsarchitekturen.
Voraussetzungen
-
Python 3.10 oder höher
-
Und AWS-Konto mit Berechtigungen zum Erstellen von DynamoDB-Tabellen (und optional Amazon S3-Buckets)
-
AWS konfigurierte Anmeldeinformationen (Optionen zur Einrichtung von Anmeldeinformationen finden Sie in der AWS Dokumentation)
Installation
Installieren Sie das Checkpoint-Paket von PyPI:
pip install langgraph-checkpoint-aws
Grundlegende Verwendung
Das folgende Beispiel zeigt, wie DynamoDB als Checkpoint-Speicher für einen Agenten konfiguriert wird: 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)
Der thread_id in der Konfiguration dient als Partitionsschlüssel in DynamoDB, sodass Sie separate Konversations-Threads verwalten und historische Status für jeden Thread abrufen können.
Konfiguration für die Produktion
Für Produktionsbereitstellungen können Sie Time to Live, Komprimierung und Amazon S3-Offloading aktivieren. Sie können den endpoint_url Parameter auch verwenden, um zum Testen auf eine lokale DynamoDB-Instance zu verweisen:
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" )
DynamoDB-Tabellenkonfiguration
Der Checkpoint Saver benötigt eine DynamoDB-Tabelle mit einem zusammengesetzten Primärschlüssel. Sie können die Tabelle mithilfe der folgenden Vorlage erstellen: 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
Stellen Sie die Vorlage mit der AWS CLI bereit:
aws cloudformation deploy \ --template-file template.yaml \ --stack-name langgraph-checkpoint \ --parameter-overrides TableName=langgraph-checkpoints
Erforderliche IAM-Berechtigungen
Die folgende IAM-Richtlinie bietet die Mindestberechtigungen, die für den DynamoDB-Checkpoint Saver erforderlich sind. Ersetzen Sie 111122223333 diese durch Ihre AWS-Konto
ID und aktualisieren Sie die Region entsprechend Ihrer Umgebung.
{ "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" } ] }
Wenn Sie Amazon S3-Offloading aktivieren, fügen Sie der Richtlinie die folgende Anweisung hinzu:
{ "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" }
Asynchrone Nutzung
Verwenden Sie für asynchrone Anwendungen die vom Checkpoint Saver bereitgestellten asynchronen Methoden:
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())
Fehlerbehandlung
Häufige Fehlerszenarien:
-
Tabelle nicht gefunden: Überprüfen Sie Ihre DynamoDB-Tabelle
table_nameundregion_namepassen Sie sie an. -
Drosselung: Falls dies der Fall ist, sollten Sie in Betracht ziehen
ProvisionedThroughputExceededException, in den Abrechnungsmodus auf Abruf zu wechseln oder die bereitgestellte Kapazität zu erhöhen. -
Artikelgröße überschritten: Wenn die Checkpoints 350 KB überschreiten, aktivieren Sie das Amazon S3-Offloading (siehe). Konfiguration für die Produktion
-
Fehler bei Anmeldeinformationen: Stellen Sie sicher, dass Ihre AWS Anmeldeinformationen gültig sind und über die erforderlichen Berechtigungen verfügen.