

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

# 5단계: Python 코드에서 에이전트 직접 호출
<a name="agent-tutorial-step5"></a>

이 단계에서는 AWS SDK for Python (Boto)을 사용하여 에이전트와 프로그래밍 방식으로 상호 작용하는 방법을 알아봅니다. 예제 코드는 에이전트를 직접 호출하기 위한 파라미터로 AGENT ID와 ALIAS ID가 모두 필요한 [InvokeAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) 작업을 사용하는 방법을 보여줍니다. 이 코드는 에이전트에 프롬프트를 보내고, 응답을 처리하고, 스트리밍 및 비스트리밍 응답 모드를 모두 처리하는 방법을 보여줍니다. 이를 통해 Bedrock 에이전트를 자체 Python 애플리케이션에 통합할 수 있습니다.

자세한 내용은 [애플리케이션에서 에이전트 간접 호출](agents-invoke-agent.md) 단원을 참조하십시오.

**Python 코드에서 에이전트를 직접 호출하려면**

1. 에이전트의 ID를 가져옵니다. 자세한 내용은 [에이전트 정보 확인](agents-view.md) 단원을 참조하십시오.

1. 에이전트 별칭의 ID를 가져옵니다. 자세한 내용은 [Amazon Bedrock에서 에이전트의 별칭에 대한 정보 확인](agents-alias-view.md) 단원을 참조하십시오.

1. 다음 코드를 실행합니다. 다음을 업데이트하세요.
   + **AGENT\$1ID** - 에이전트의 ID로 업데이트합니다.
   + **ALIAS\$1ID** - 에이전트의 별칭 ID로 업데이트합니다.
   + **리전** -와 같이 에이전트를 생성한 AWS 리전으로`us-east-1`.

   에이전트에서 응답을 스트리밍하려면 `streamFinalResponse` 값을 `True`로 변경합니다.

   ```
   import boto3
   import logging
   
   from botocore.exceptions import ClientError
   
   
   logging.basicConfig(level=logging.INFO)
   logger = logging.getLogger(__name__)
   
   def invoke_agent(client, agent_id, alias_id, prompt, session_id):
           response = client.invoke_agent(
               agentId=agent_id,
               agentAliasId=alias_id,
               enableTrace=True,
               sessionId = session_id,
               inputText=prompt,
               streamingConfigurations = { 
       "applyGuardrailInterval" : 20,
         "streamFinalResponse" : False
               }
           )
           completion = ""
           for event in response.get("completion"):
               #Collect agent output.
               if 'chunk' in event:
                   chunk = event["chunk"]
                   completion += chunk["bytes"].decode()
               
               # Log trace output.
               if 'trace' in event:
                   trace_event = event.get("trace")
                   trace = trace_event['trace']
                   for key, value in trace.items():
                       logging.info("%s: %s",key,value)
   
           print(f"Agent response: {completion}")
   
   
   if __name__ == "__main__":
   
       client=boto3.client(
               service_name="bedrock-agent-runtime",
               region_name="REGION") 
       
       agent_id = "AGENT_ID"
       alias_id = "ALIAS_ID"
       session_id = "123456"
       prompt = "What's the current time?"
   
       try:
   
           invoke_agent(client, agent_id, alias_id, prompt, session_id)
   
       except ClientError as e:
           print(f"Client error: {str(e)}")
           logger.error("Client error: %s", {str(e)})
   ```