View a markdown version of this page

Strands 에이전트 SDK - Amazon Bedrock AgentCore

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Strands 에이전트 SDK

Strands Agents SDK를 사용하여 에이전트 프레임워크와 원활하게 통합하여 대화형 에이전트 내에서 자동 메모리 관리 및 검색을 제공합니다.

먼저 세 가지 장기 전략을 모두 사용하여 메모리를 생성합니다. 이 작업은 AgentCore CLI를 사용하거나 아래 예제의 SDK 코드를 통해 수행할 수 있습니다.

예
AgentCore CLI
  1. AgentCore CLI 메모리 명령은 기존 agentcore 프로젝트 내에서 실행해야 합니다. 아직 프로젝트가 없는 경우 먼저 프로젝트를 생성합니다.

    agentcore create --project-name MemoryProject --no-agent cd MemoryProject

    그런 다음 메모리를 추가하고 배포합니다.

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. 를 실행agentcore하여 TUI를 연 다음 추가를 선택하고 메모리를 선택합니다.

  2. 메모리 이름을 입력합니다.

    메모리 마법사: ComprehensiveAgentMemory 이름 입력
  3. 세 가지 전략(시맨틱, 요약, 사용자 기본 설정)을 모두 선택합니다.

    메모리 마법사: 세 가지 메모리 전략 모두 선택
  4. 구성을 검토하고 Enter 키를 눌러 확인합니다.

    메모리 마법사: 모든 전략으로 ComprehensiveAgentMemory 확인

    그런 다음를 실행agentcore deploy하여 메모리를 프로비저닝합니다 AWS.

종속성 설치

pip install bedrock-agentcore pip install strands-agents

단기 메모리 추가

from datetime import datetime from strands import Agent from bedrock_agentcore.memory import MemoryClient from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig, RetrievalConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager client = MemoryClient(region_name="us-east-1") basic_memory = client.create_memory( name="BasicTestMemory", description="Basic memory for testing short-term functionality" ) MEM_ID = basic_memory.get('id') ACTOR_ID = "actor_id_test_%s" % datetime.now().strftime("%Y%m%d%H%M%S") SESSION_ID = "testing_session_id_%s" % datetime.now().strftime("%Y%m%d%H%M%S") # Configure memory agentcore_memory_config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID ) # Create session manager session_manager = AgentCoreMemorySessionManager( agentcore_memory_config=agentcore_memory_config, region_name="us-east-1" ) # Create agent agent = Agent( system_prompt="You are a helpful assistant. Use all you know about the user to provide helpful responses.", session_manager=session_manager, ) agent("I like sushi with tuna") # Agent remembers this preference agent("I like pizza") # Agent acknowledges both preferences agent("What should I buy for lunch today?") # Agent suggests options based on remembered preferences

전략을 사용하여 장기 메모리 추가

from bedrock_agentcore.memory import MemoryClient from strands import Agent from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig, RetrievalConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager from datetime import datetime # Create comprehensive memory with all built-in strategies client = MemoryClient(region_name="us-east-1") comprehensive_memory = client.create_memory_and_wait( name="ComprehensiveAgentMemory", description="Full-featured memory with all built-in strategies", strategies=[ { "summaryMemoryStrategy": { "name": "SessionSummarizer", "namespaceTemplates": ["/summaries/{actorId}/{sessionId}/"] } }, { "userPreferenceMemoryStrategy": { "name": "PreferenceLearner", "namespaceTemplates": ["/preferences/{actorId}/"] } }, { "semanticMemoryStrategy": { "name": "FactExtractor", "namespaceTemplates": ["/facts/{actorId}/"] } } ] ) MEM_ID = comprehensive_memory.get('id') ACTOR_ID = "actor_id_test_%s" % datetime.now().strftime("%Y%m%d%H%M%S") SESSION_ID = "testing_session_id_%s" % datetime.now().strftime("%Y%m%d%H%M%S") # Configure memory agentcore_memory_config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID ) # Create session manager session_manager = AgentCoreMemorySessionManager( agentcore_memory_config=agentcore_memory_config, region_name="us-east-1" ) # Create agent agent = Agent( system_prompt="You are a helpful assistant. Use all you know about the user to provide helpful responses.", session_manager=session_manager, ) agent("I like sushi with tuna") # Agent remembers this preference agent("I like pizza") # Agent acknowledges both preferences agent("What should I buy for lunch today?") # Agent suggests options based on remembered preferences

메시지 일괄 처리

batch_size가 1보다 크면 버퍼가 구성된 크기에 도달하면 메시지가 메모리에 버퍼링되고 단일 API 호출로 AgentCore 메모리로 전송됩니다. 이렇게 하면 처리량이 많은 대화의 API 요청 수가 줄어듭니다.

중요

를 사용할 때는 세션이 완료될 close() 때 with 블록 또는 호출을 사용해야 batch_size > 1 합니다. 그렇지 않으면 아직 배치 임계값에 도달하지 않은 버퍼링된 메시지가 손실됩니다.

권장: 컨텍스트 관리자

from strands import Agent from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID, batch_size=10, # Buffer up to 10 messages before sending ) # The `with` block guarantees all buffered messages are flushed on exit with AgentCoreMemorySessionManager(config, region_name='us-east-1') as session_manager: agent = Agent( system_prompt="You are a helpful assistant.", session_manager=session_manager, ) agent("Hello!") agent("Tell me about AWS") # All remaining buffered messages are automatically flushed here

대안: 명시적 종료()

with 블록을 사용할 수 없는 경우 close() 수동으로를 호출합니다.

session_manager = AgentCoreMemorySessionManager(config, region_name='us-east-1') try: agent = Agent( system_prompt="You are a helpful assistant.", session_manager=session_manager, ) agent("Hello!") finally: session_manager.close() # Flush any remaining buffered messages

GitHub에서 더 많은 예제를 사용할 수 있습니다. https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands