내용으로 건너뛰기

Amazon Bedrock에서 LLM을 사용할 때 Python에서 읽기 시간 초과를 방지하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Bedrock에서 대규모 언어 모델(LLM)을 사용하여 텍스트를 생성할 때 읽기 시간 초과 오류가 발생합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Amazon Bedrock에서 대규모 언어 모델(LLM)을 사용하여 텍스트를 생성할 때 읽기 시간 초과 오류가 발생할 수 있습니다. 시간 초과 오류는 AWS SDK for Python(Boto3) 클라이언트가 LLM을 쿼리하지만 botocore의 기본 읽기 제한 시간 내에 응답을 받지 못할 때 발생합니다. 읽기 시간 초과 오류를 해결하려면 읽기 제한 시간을 늘리거나 스트리밍 API를 사용하십시오.

읽기 제한 시간 늘리기

쿼리를 완료할 수 있을 만큼 read_timeout 값을 길게 설정하는 것이 가장 좋습니다. 3,600초와 같은 큰 값으로 시작한 다음, 시간 초과 오류가 더 이상 발생하지 않을 때까지 이 기간을 조정합니다. read_timeout 값을 늘리려면 다음 예제 코드와 유사한 코드를 실행합니다. 자세한 내용은 botocore.configread_timeout 파라미터를 참조하십시오.

from boto3 import client
from botocore.config import Config

config = Config(read_timeout=1000)

client = client(service_name='bedrock-runtime',
                      config=config)

참고: 1000을 해당 제한 시간 값으로 바꾸십시오.

타사 라이브러리를 사용하는 경우 먼저 botocore 구성으로 SDK for Python(Boto3) 클라이언트를 인스턴스화하십시오. 그런 다음, 호출 가능 모델 클래스에 이 구성을 클라이언트 파라미터로 전달합니다.

Boto3 클라이언트를 타사 라이브러리로 전달할 때 읽기 제한 시간 값을 늘리려면 다음 예제와 유사한 코드를 실행하십시오.

from boto3 import client
from botocore.config import Config
from langchain_aws import ChatBedrock

config = Config(read_timeout=1000)

client = client(service_name='bedrock-runtime',
                      config=config)

llm = ChatBedrock(model_id="anthropic.claude-3-5-sonnet-20240620-v1:0",
              client=client)

위 예제에서는 읽기 제한 시간이 1,000초로 설정되었습니다. 읽기 제한 기간은 botocore가 읽기 시간 초과 예외를 반환하기 전에 서버의 응답을 기다리는 시간을 지정합니다.

참고: Anthropic Claude 3.7 Sonnet과 같은 LLM은 응답을 반환하는 데 60초 이상 걸릴 수 있습니다. Anthropic Claude 3.7 Sonnet의 경우 제한 시간 값을 3,600초 이상으로 설정하는 것이 가장 좋습니다.

ConverseStream을 사용하여 응답 스트리밍

긴 응답을 처리하거나 사용자에게 부분적인 결과를 제공하는 경우 ConverseStream API 작업을 사용하여 생성된 토큰을 받으십시오. ConverseStream API 작업은 토큰이 생성되는 대로 토큰을 반환하므로 긴 응답으로 인한 시간 초과를 방지하는 데 도움이 됩니다.

ConverseStream API 작업을 사용하려면 다음 예제와 유사한 코드를 실행하십시오.

import json
from boto3 import client
from botocore.config import Config
# Configure the client
config = Config()
client = client(service_name='bedrock-runtime', config=config)
# Create request parameters
request = {
    "modelId": "anthropic.claude-3-5-sonnet-20240620-v1:0",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "Could you write very long story?"
                }
            ]
        }
    ]
}
# Call the streaming API
response = client.converse_stream(
    modelId=request["modelId"],
    messages=request["messages"]
)
# Process the streaming response
for event in response['stream']:
    if 'contentBlockDelta' in event:
        print(event['contentBlockDelta']['delta']['text'], end='')

참고: modelID를 모델 ID로 바꾸고 입력 text를 해당 텍스트로 바꾸십시오.

AWS 공식업데이트됨 6달 전