Amazon Web Services 한국 블로그

Amazon Bedrock용 에이전트, 메모리 보존 및 코드 해석 지원 기능 (미리 보기)

Amazon Bedrock용 에이전트를 사용하면 생성형 인공 지능(AI) 애플리케이션이 다양한 시스템 및 데이터 소스에서 다단계 태스크를 실행할 수 있습니다. 몇 달 전, AWS는 에이전트 생성 및 구성을 단순화했습니다. 오늘은 두 가지 새로운 완전관리형 기능을 미리 보기로 소개합니다.

상호 작용 간에 메모리 보존 – 에이전트는 이제 각 사용자와의 대화 요약을 유지하고, 특히 사용자 대면 상호 작용, 엔터프라이즈 자동화 솔루션(예: 항공편 예약 또는 보험 청구 처리)와 같은 복잡한 다단계 태스크에 대해 원활하고 적응력이 뛰어난 경험을 제공할 수 있습니다.

코드 해석 지원 – 이제 에이전트는 안전한 샌드박스 환경에서 코드 조각을 동적으로 생성 및 실행할 수 있으며 데이터 분석, 데이터 시각화, 텍스트 처리, 방정식 풀이, 최적화 문제와 같은 복잡한 사용 사례를 처리할 수 있습니다. 이 기능을 더 쉽게 사용할 수 있도록 에이전트에게 직접 문서를 업로드하는 기능도 추가했습니다.

이 새로운 기능이 어떻게 작동하는지 좀 더 자세히 살펴보겠습니다.

상호 작용 간에 메모리 보존
메모리 보존을 사용하면 시간이 지남에 따라 각 사용자의 고유한 요구 사항 및 선호도를 학습하고 이에 적응하는 에이전트를 구축할 수 있습니다. 영구 메모리를 보존함으로써 에이전트는 사용자가 중단한 부분부터 다시 시작할 수 있으며, 특히 복잡한 다단계 태스크의 경우 대화 및 워크플로가 원활하게 진행될 수 있습니다.

항공편을 예약하는 사용자를 상상해 보세요. 메모리 보존 기능 덕분에 에이전트는 사용자의 여행 선호도를 파악하고 이를 바탕으로 후속 예약 요청을 간소화하여 개인화되고 효율적인 경험을 제공할 수 있습니다. 예를 들어, 사용자에게 적절한 좌석이나 이전 선택과 비슷한 기내식을 자동으로 제안할 수 있습니다.

메모리 보존 기능을 사용하여 컨텍스트를 더 잘 인식하면 비즈니스 프로세스 자동화도 단순화됩니다. 예를 들어 기업에서 고객 피드백을 처리하는 데 사용하는 에이전트는 이제 사용자 지정 통합을 처리하지 않고도 동일한 고객과의 이전 및 진행 중인 상호 작용을 파악할 수 있습니다.

각 사용자의 대화 기록 및 컨텍스트는 고유한 메모리 식별자(ID)에 안전하게 저장되므로 완전한 사용자 분리가 보장됩니다. 메모리 보존 기능을 사용하면 시간이 지남에 따라 지속적으로 개선되는 원활하고 적응력이 뛰어나며 개인화된 경험을 제공하는 에이전트를 쉽게 구축할 수 있습니다. 이제 실제로 어떻게 작동하는지 알아보겠습니다.

Amazon Bedrock용 에이전트에서 메모리 보존 기능 사용
Amazon Bedrock 콘솔에서 탐색 창의 Builder Tools 섹션에서 Agents를 선택하여 에이전트 생성을 시작합니다.

에이전트의 경우 이름으로 agent-book-flight를 사용하고 다음 설명을 사용합니다.

Help book a flight.(항공편 예약을 돕습니다.)

그런 다음 에이전트 빌더에서 Anthropic’s Claude 3 Sonnet 모델을 선택하고 다음 지침을 입력합니다.

To book a flight, you should know the origin and destination airports and the day and time the flight takes off.(항공편을 예약하려면 출발지 및 도착지 공항과 항공편 이륙 날짜 및 시간을 알아야 합니다.)

Additional settings에서 User input을 활성화하여 에이전트가 명확한 질문을 하여 필요한 입력을 캡처할 수 있도록 합니다. 이는 항공편 예약 요청에 출발지 및 도착지 또는 항공편 날짜 및 시간과 같은 일부 필수 정보가 누락된 경우에 도움이 됩니다.

새로운 Memory 섹션에서 각 세션이 끝날 때 세션 요약을 생성 및 저장하도록 메모리를 활성화하고 메모리 지속 시간으로 기본값인 30일을 사용합니다.

콘솔 스크린샷.

그런 다음 항공편을 검색 및 예약할 작업 그룹을 추가합니다. 이름으로 search-and-book-flights를 사용하고 다음 설명을 사용합니다.

Search for flights between two destinations on a given day and book a specific flight.(지정된 날짜에 두 목적지 간 항공편을 검색하고 특정 항공편을 예약합니다.)

그런 다음 함수 세부 정보가 포함된 작업 그룹을 정의한 다음 새 Lambda 함수를 생성합니다. 이 Lambda 함수는 이 작업 그룹의 모든 함수에 대한 비즈니스 로직을 구현합니다.

이 작업 그룹에 두 가지 함수를 추가합니다. 하나는 항공편 검색 함수이고 다른 하나는 항공편 예약 함수입니다.

첫 번째 함수는 이름이 search-for-flights이고 설명은 다음과 같습니다.

Search for flights on a given date between two destinations.(지정된 날짜에 두 목적지 간 항공편을 검색합니다.)

이 함수의 모든 파라미터는 필수이고 문자열 유형입니다. 다음은 파라미터의 이름 및 설명입니다.

origin_airport – 출발지 IATA 공항 코드
destination_airport –
도착지 IATA 공항 코드
date –
항공편 날짜(YYYYMMDD 형식)

두 번째 함수는 이름이 book-flight이고 설명은 다음과 같습니다.

Book a flight at a given date and time between two destinations.(지정된 날짜 및 시간에 두 목적지 간 항공편을 예약합니다.)

이 함수도 모든 파라미터는 필수이고 문자열 유형입니다. 다음은 파라미터의 이름 및 설명입니다.

origin_airport출발지 IATA 공항 코드
destination_airport도착지 IATA 공항 코드
date항공편 날짜(YYYYMMDD 형식)
time항공편 시간(HHMM 형식)

에이전트 생성을 완료하기 위해 Create를 선택합니다.

Lambda 함수의 소스 코드에 액세스하기 위해 search-and-book-flights 작업 그룹, View(Select Lambda function 설정 부근)를 차례로 선택합니다. 보통은 이 Lambda 함수를 사용하여 여행 예약 플랫폼과 같은 기존 시스템과 통합합니다. 이 경우에는 이 코드를 사용하여 에이전트의 예약 플랫폼을 시뮬레이션하겠습니다.

import json
import random
from datetime import datetime, time, timedelta


def convert_params_to_dict(params_list):
    params_dict = {}
    for param in params_list:
        name = param.get("name")
        value = param.get("value")
        if name is not None:
            params_dict[name] = value
    return params_dict


def generate_random_times(date_str, num_flights, min_hours, max_hours):
    # Set seed based on input date
    seed = int(date_str)
    random.seed(seed)

    # Convert min_hours and max_hours to minutes
    min_minutes = min_hours * 60
    max_minutes = max_hours * 60

    # Generate random times
    random_times = set()
    while len(random_times) < num_flights:
        minutes = random.randint(min_minutes, max_minutes)
        hours, mins = divmod(minutes, 60)
        time_str = f"{hours:02d}{mins:02d}"
        random_times.add(time_str)

    return sorted(random_times)


def get_flights_for_date(date):
    num_flights = random.randint(1, 6) # Between 1 and 6 flights per day
    min_hours = 6 # 6am
    max_hours = 22 # 10pm
    flight_times = generate_random_times(date, num_flights, min_hours, max_hours)
    return flight_times
    
    
def get_days_between(start_date, end_date):
    # Convert string dates to datetime objects
    start = datetime.strptime(start_date, "%Y%m%d")
    end = datetime.strptime(end_date, "%Y%m%d")
    
    # Calculate the number of days between the dates
    delta = end - start
    
    # Generate a list of all dates between start and end (inclusive)
    date_list = [start + timedelta(days=i) for i in range(delta.days + 1)]
    
    # Convert datetime objects back to "YYYYMMDD" string format
    return [date.strftime("%Y%m%d") for date in date_list]


def lambda_handler(event, context):
    print(event)
    agent = event['agent']
    actionGroup = event['actionGroup']
    function = event['function']
    param = convert_params_to_dict(event.get('parameters', []))

    if actionGroup == 'search-and-book-flights':
        if function == 'search-for-flights':
            flight_times = get_flights_for_date(param['date'])
            body = f"On {param['date']} (YYYYMMDD), these are the flights from {param['origin_airport']} to {param['destination_airport']}:\n{json.dumps(flight_times)}"
        elif function == 'book-flight':
            body = f"Flight from {param['origin_airport']} to {param['destination_airport']} on {param['date']} (YYYYMMDD) at {param['time']} (HHMM) booked and confirmed."
        elif function == 'get-flights-in-date-range':
            days = get_days_between(param['start_date'], param['end_date'])
            flights = {}
            for day in days:
                flights[day] = get_flights_for_date(day)
            body = f"These are the times (HHMM) for all the flights from {param['origin_airport']} to {param['destination_airport']} between {param['start_date']} (YYYYMMDD) and {param['end_date']} (YYYYMMDD) in JSON format:\n{json.dumps(flights)}"
        else:
            body = f"Unknown function {function} for action group {actionGroup}."
    else:
        body = f"Unknown action group {actionGroup}."
    
    # Format the output as expected by the agent
    responseBody =  {
        "TEXT": {
            "body": body
        }
    }

    action_response = {
        'actionGroup': actionGroup,
        'function': function,
        'functionResponse': {
            'responseBody': responseBody
        }

    }

    function_response = {'response': action_response, 'messageVersion': event['messageVersion']}
    print(f"Response: {function_response}")

    return function_response

콘솔에서 에이전트가 이 코드를 테스트할 수 있도록 준비하고 다음과 같이 질문합니다.

Which flights are available from London Heathrow to Rome Fiumicino on July 20th, 2024?(2024년 7월 20일에 런던 히드로 공항 출발 로마 피우미치노 공항 도착에 이용할 수 있는 항공편은 무엇인가요?)

에이전트는 시간 목록으로 응답합니다. 에이전트가 내 지침을 어떻게 처리했는지에 대한 자세한 정보를 보기 위해 Show trace를 선택합니다.

Trace 탭에서 추적 단계를 살펴보고 에이전트의 오케스트레이션에 사용되는 연쇄적 사고를 이해합니다. 예를 들어, Lambda 함수를 직접적으로 호출하기 전에 에이전트가 공항 이름을 코드(런던 히드로 공항의 경우 LHR, 로마 피우미치노 공항의 경우 FCO)로 변환하는 작업을 처리한 것을 볼 수 있습니다.

Memory 메모리 탭에서 메모리의 내용을 볼 수 있습니다. 콘솔은 특정 테스트 메모리 ID를 사용합니다. 애플리케이션에서 사용자별로 메모리를 분리하기 위해 모든 사용자에 다른 메모리 ID를 사용할 수 있습니다.

항공편 목록을 보고 예약을 요청합니다.

Book the one at 6:02pm.(오후 6시 2분에 예약하세요.)

에이전트가 응답하여 예약을 확인합니다.

세션이 만료된 후 몇 분이 경과하면 Memory 탭에 대화 요약이 표시됩니다.

콘솔 스크린샷.

이제 빗자루 아이콘을 선택하여 새로운 대화를 시작하고 그 자체로는 에이전트에게 전체 상황을 설명하지 못하는 질문을 합니다.

Which other flights are available on the day of my flight?(항공편 당일에 이용할 수 있는 다른 항공편은 무엇인가요?)

에이전트가 이전 대화에서 제가 예약한 항공편을 상기합니다. 답변을 제공하기 위해 에이전트는 저에게 항공편 세부 정보를 확인하도록 요청합니다. 참고로 이 Lambda 함수는 시뮬레이션일 뿐이며 예약 정보를 어떤 데이터베이스에도 저장하지 않았습니다. 항공편 세부 정보는 에이전트의 메모리에서 검색되었습니다.

콘솔 스크린샷.

해당 값을 확인하고 해당 날짜에 출발지 및 도착지가 같은 다른 항공편 목록을 얻습니다.

Yes, please.(부탁해요.)

메모리 보존의 이점을 더 잘 설명하기 위해 AWS SDK for Python(Boto3)을 사용하여 에이전트를 직접적으로 호출해 보겠습니다. 이렇게 하려면 먼저 에이전트 별칭 및 버전을 생성해야 합니다. 에이전트를 호출할 때 필요하므로 에이전트 ID와 별칭 ID를 기록해 둡니다.

에이전트 간접 호출에서 메모리를 사용하기 위해 새 memoryId 옵션을 추가합니다. 이 옵션을 포함하면 다음과 같은 두 가지 이점이 있습니다.

  • 에이전트가 해당 memoryId에 대해 보존된 메모리(있는 경우)를 사용하여 응답을 개선합니다.
  • 현재 세션의 대화 요약이 다른 세션에서 사용할 수 있도록 해당 memoryId에 보존됩니다.

AWS SDK를 사용하여 특정 memoryId의 메모리 내용을 가져오거나 삭제할 수도 있습니다.

import random
import string
import boto3
import json

DEBUG = False # Enable debug to see all trace steps
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"

AGENT_ID = 'URSVOGLFNX'
AGENT_ALIAS_ID = 'JHLX9ERCMD'

SESSION_ID_LENGTH = 10
SESSION_ID = "".join(
    random.choices(string.ascii_uppercase + string.digits, k=SESSION_ID_LENGTH)
)

# A unique identifier for each user
MEMORY_ID = 'danilop-92f79781-a3f3-4192-8de6-890b67c63d8b' 
bedrock_agent_runtime = boto3.client('bedrock-agent-runtime', region_name='us-east-1')


def invoke_agent(prompt, end_session=False):
    response = bedrock_agent_runtime.invoke_agent(
        agentId=AGENT_ID,
        agentAliasId=AGENT_ALIAS_ID,
        sessionId=SESSION_ID,
        inputText=prompt,
        memoryId=MEMORY_ID,
        enableTrace=DEBUG,
        endSession=end_session,
    )

    completion = ""

    for event in response.get('completion'):
        if DEBUG:
            print(event)
        if 'chunk' in event:
            chunk = event['chunk']
            completion += chunk['bytes'].decode()

    return completion


def delete_memory():
    try:
        response = bedrock_agent_runtime.delete_agent_memory(
            agentId=AGENT_ID,
            agentAliasId=AGENT_ALIAS_ID,
            memoryId=MEMORY_ID,
        )
    except Exception as e:
        print(e)
        return None
    if DEBUG:
        print(response)


def get_memory():
    response = bedrock_agent_runtime.get_agent_memory(
        agentId=AGENT_ID,
        agentAliasId=AGENT_ALIAS_ID,
        memoryId=MEMORY_ID,
        memoryType='SESSION_SUMMARY',
    )
    memory = ""
    for content in response['memoryContents']:
        if 'sessionSummary' in content:
            s = content['sessionSummary']
            memory += f"Session ID {s['sessionId']} from {s['sessionStartTime'].strftime(DATE_FORMAT)} to {s['sessionExpiryTime'].strftime(DATE_FORMAT)}\n"
            memory += s['summaryText'] + "\n"
    if memory == "":
        memory = "<no memory>"
    return memory


def main():
    print("Delete memory? (y/n)")
    if input() == 'y':
        delete_memory()

    print("Memory content:")
    print(get_memory())

    prompt = input('> ')
    if len(prompt) > 0:
        print(invoke_agent(prompt, end_session=False)) # Start a new session
        invoke_agent('end', end_session=True) # End the session

if __name__ == "__main__":
    main()

랩톱에서 Python 스크립트를 실행합니다. (지금은 비어 있더라도) 현재 메모리를 삭제한 다음 특정 날짜의 오전 항공편을 예약하도록 요청합니다.

Delete memory? (y/n)
y
Memory content:
<no memory>
> Book me on a morning flight on July 20th, 2024 from LHR to FCO.
I have booked you on the morning flight from London Heathrow (LHR) to Rome Fiumicino (FCO) on July 20th, 2024 at 06:44.

몇 분 정도 기다렸다가 스크립트를 다시 실행합니다. 스크립트는 실행될 때마다 새 세션을 생성합니다. 이번에는 메모리를 삭제하지 않고 동일한 memoryId를 사용한 이전 상호 작용의 요약을 확인합니다. 그런 다음 항공편이 예약된 날짜를 묻습니다. 새 세션임에도 에이전트는 메모리 내용에서 이전 예약을 찾습니다.

Delete memory? (y/n)
n
Memory content:
Session ID MM4YYW0DL2 from 2024-07-09 15:35:47 to 2024-07-09 15:35:58
The user's goal was to book a morning flight from LHR to FCO on July 20th, 2024. The assistant booked a 0644 morning flight from LHR to FCO on the requested date of July 20th, 2024. The assistant successfully booked the requested morning flight for the user. The user requested a morning flight booking on July 20th, 2024 from London Heathrow (LHR) to Rome Fiumicino (FCO). The assistant booked a 0644 flight for the specified route and date.

> Which date is my flight on?
I recall from our previous conversation that you booked a morning flight from London Heathrow (LHR) to Rome Fiumicino (FCO) on July 20th, 2024. Please confirm if this date of July 20th, 2024 is correct for the flight you are asking about.

네, 제 항공편입니다!

사용 사례에 따라 메모리 보존은 동일한 사용자의 기본 설정 및 이전 상호 작용을 추적하고 세션 전반에 걸쳐 원활한 경험을 제공하는 데 도움이 될 수 있습니다.

세션 요약에는 일반 개요와 사용자 및 어시스턴트의 관점이 포함됩니다. 이 세션과 같이 짧은 세션에서는 약간의 반복이 발생할 수 있습니다.

코드 해석 지원
Amazon Bedrock용 에이전트는 이제 코드 해석을 지원하므로 에이전트가 안전한 샌드박스 환경에서 코드 조각을 동적으로 생성하고 실행할 수 있습니다. 이를 통해 데이터 분석, 시각화, 텍스트 처리, 방정식 풀이, 최적화 문제와 같은 복잡한 태스크를 포함하여 처리할 수 있는 사용 사례가 크게 확장됩니다.

이제 에이전트는 CSV, XLS, YAML, JSON, DOC, HTML, MD, TXT, PDF를 비롯한 다양한 데이터 유형 및 형식의 입력 파일을 처리할 수 있습니다. 코드 해석을 통해 에이전트가 차트를 생성할 수 있어 사용자 경험이 개선되고 데이터 해석에 더 쉽게 접근할 수 있습니다.

코드 해석은 대규모 언어 모델(LLM)에서 특정 문제를 더 정확하게 해결하는 데 도움이 될 수 있다고 판단할 경우 에이전트가 사용하며 사용자가 임의 코드 생성을 요청하는 설계 시나리오는 지원하지 않습니다. 보안을 위해 각 사용자 세션에는 격리된 샌드박스 코드 런타임 환경이 제공됩니다.

이렇게 하면 에이전트가 복잡한 태스크를 처리하는 데 어떻게 도움이 되는지 간단히 테스트해 보겠습니다.

Amazon Bedrock용 에이전트에서 코드 해석 사용
Amazon Bedrock 콘솔에서 이전 데모의 동일한 에이전트(agent-book-flight)를 선택하고 Edit in Agent Builder를 선택합니다. 에이전트 빌더에서 Additional Settings 아래의 Code Interpreter를 활성화하고 저장합니다.

콘솔 스크린샷.

에이전트를 준비하고 콘솔에서 바로 테스트합니다. 먼저 수학 질문을 해보겠습니다.

Compute the sum of the first 10 prime numbers.(처음 10개 소수의 합을 구하세요.)

몇 초 후 에이전트로부터 답변을 받았습니다.

The sum of the first 10 prime numbers is 129.(처음 10개 소수의 합은 129입니다.)

정확합니다. 추적을 살펴본 결과, 에이전트는 제가 요청한 내용을 계산하기 위해 다음 Python 프로그램을 빌드하고 실행했습니다.

import math

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

primes = []
n = 2
while len(primes) < 10:
    if is_prime(n):
        primes.append(n)
    n += 1
    
print(f"The first 10 prime numbers are: {primes}")
print(f"The sum of the first 10 prime numbers is: {sum(primes)}")

이제 agent-book-flight 에이전트로 돌아가 보겠습니다. 오랜 기간 동안 이용할 수 있는 전체 항공편에 대해 더 잘 이해하고 싶습니다. 이를 위해 먼저 동일한 작업 그룹에 특정 날짜 범위에서 이용 가능한 모든 항공편을 가져오는 새 함수를 추가하는 것부터 시작합니다.

새 함수의 이름을 get-flights-in-date-range로 지정하고 다음 설명을 사용합니다.

Get all the flights between two destinations for each day in a date range.(날짜 범위의 각 날짜에 이용할 수 있는 두 목적지 간의 모든 항공편을 가져옵니다.)

모든 파라미터는 필수이고 문자열 유형입니다. 다음은 파라미터의 이름 및 설명입니다.

origin_airport출발지 IATA 공항 코드
destination_airport도착지 IATA 공항 코드
start_date – 항공편 시작 날짜(YYYYMMDD 형식)
end_date항공편 종료 날짜(YYYYMMDD 형식)

앞서 공유한 Lambda 함수 코드를 보면 이미 이 에이전트 함수를 지원하고 있다는 것을 알 수 있습니다.

이제 에이전트가 단일 함수 직접 호출로 더 많은 정보를 추출할 수 있게 되었으니, 에이전트에게 항공편 정보 데이터를 차트로 시각화해 달라고 요청합니다.

Draw a chart with the number of flights each day from JFK to SEA for the first ten days of August, 2024.(2024년 8월 처음 10일 동안 JFK에서 SEA까지 매일 운항하는 항공편 수가 표시된 차트를 그려보세요.)

에이전트 응답에 차트가 포함됩니다.

콘솔 스크린샷.

링크를 선택하여 이미지를 컴퓨터에 다운로드합니다.

항공편 차트.

정확합니다. 실제로 Lambda 함수의 시뮬레이터는 차트에 표시된 대로 하루에 1~6회의 항공편을 생성합니다.

첨부 파일과 함께 코드 해석 사용
코드 해석을 통해 에이전트는 데이터에서 정보를 처리하고 추출할 수 있으므로 에이전트를 간접적으로 호출할 때 문서를 포함하는 기능을 도입했습니다. 예를 들어, 여러 항공편에 대해 예약한 항공편 수가 포함된 Excel 파일이 있습니다.

Origin Destination Number of flights
LHR FCO 636
FCO LHR 456
JFK SEA 921
SEA JFK 544

테스트 인터페이스의 클립 아이콘을 사용하여 파일을 첨부하고 다음과 같이 질문합니다(에이전트 응답은 굵게 표시됨).

What is the most popular route? And the least one?(가장 인기가 많은 노선은 무엇이고 가장 인기가 적은 노선은 무엇인가요?)

분석에 따르면, 가장 인기가 많은 노선은 JFK -> SEA로 921건의 예약이 있고, 가장 인기가 적은 노선은 FCO -> LHR로 456건의 예약이 있습니다.

How many flights in total have been booked?(총 몇 개의 항공편이 예약되었나요?)

The total number of booked flights across all routes is 2557.(전체 노선에서 예약된 총 항공편 수는 2557편입니다.)

Draw a chart comparing the % of flights booked for these routes compared to the total number.(총 항공편 수 대비 해당 노선에서 예약된 항공편의 백분율을 비교하는 차트를 그리세요.)

코드 인터프리터로 생성된 차트

추적을 보면 파일에서 정보를 추출하여 에이전트에 전달하는 데 사용되는 Python 코드를 볼 수 있습니다. 두 개 이상의 파일을 첨부할 수 있고 서로 다른 파일 형식을 사용할 수 있습니다. 에이전트가 애플리케이션에서 파일을 사용할 수 있도록 AWS SDK에서 이러한 옵션을 사용할 수 있습니다.

주요 사항
메모리 보존은 Amazon Bedrocks용 에이전트 및 Anthropic의 Claude 3 Sonnet 또는 Haiku(미리 보기에서 지원되는 모델)를 이용할 수 있는 모든 AWS 리전에서 미리 보기로 제공됩니다. 코드 해석은 미국 동부(버지니아 북부), 미국 서부(오레곤) 및 유럽(프랑크푸르트) 리전에서 미리 보기로 제공됩니다.

미리 보기 기간에는 에이전트와 함께 메모리 보존 및 코드 해석을 사용하는 데 따른 추가 비용이 없습니다. 이러한 기능을 갖춘 에이전트를 사용하는 경우 일반 모델 사용 요금이 적용됩니다. 메모리 보존이 활성화되면 세션을 요약하는 데 사용한 모델에 대한 비용을 지불합니다. 자세한 내용은 Amazon Bedrock 요금 페이지를 참조하세요.

더 자세히 알아보려면 사용 설명서의 Amazon Bedrock용 에이전트 섹션을 참조하세요. 심층적인 기술 콘텐츠를 찾아보고 다른 사람들이 각자의 솔루션에서 생성형 AI를 어떻게 사용하고 있는지 알아보려면 community.aws를 방문하세요.

Danilo