>백엔드 개발 >파이썬 튜토리얼 >Amazon Bedrock 및 Shopify를 사용하여 커피숍 에이전트 만들기

Amazon Bedrock 및 Shopify를 사용하여 커피숍 에이전트 만들기

Patricia Arquette
Patricia Arquette원래의
2024-10-30 18:02:31655검색

오늘은 베드락에 안전하고 안정적으로 출근하는 방법과 커피에 대해 조금 배우는 방법을 설명하겠습니다.

Python을 사용하여 텍스트 및 멀티모달 모델의 Amazon Bedrock API를 사용하여 카페의 이름, 로고 및 메뉴를 생성하고 주문을 받기 위해 Shopify API에 연결하는 에이전트를 생성하는 방법을 배우게 됩니다.

Shopify는 (제 생각에는) 현존하는 최고의 전자상거래 플랫폼입니다.

AWS와 마찬가지로 Shopify에는 모든 것을 위한 API와 개발자를 위한 플랫폼이 있습니다

마지막으로 독특한 사용자 경험을 제공하고 에이전트에 활력을 불어넣기 위해 Streamlit을 사용하여 프런트엔드를 생성하게 됩니다.

? 색인

  • Bedrock API 호출
  • Shopify와 상호 작용하는 Amazon Bedrock 에이전트 생성

? Amazon Bedrock API를 호출하여 커피숍의 이름, 로고 및 메뉴 생성

식당을 오픈하거나 사업에 대한 창의적인 아이디어를 떠올리는 순간은 GenAI(Generative AI)를 활용하고 최대한 활용할 수 있는 절호의 기회입니다.

Amazon Bedrock을 통해서 이용이 가능하지만... 그 서비스는 어떻게 소비되나요?

AWS의 모든 서비스에는 API가 있으며 Amazon Bedrock도 예외는 아닙니다. 아래에서는 이동 중에 카페테리아의 이름과 메뉴를 생성하는 예제를 통해 Amazon Bedrock API를 사용하는 방법을 설명합니다.

그리고 이미지 분석이 가능한 다중 모드 모델을 사용하는 방법도 보여드리겠습니다.

Amazon Bedrock을 호출하기 위해 Python 스크립트를 로컬로 실행하거나 Lambda 함수에서 실행하도록 프로그래밍하는 방법에 대한 지침:

먼저 여기에서 Bedrock 지침의 모델에 대한 액세스를 활성화해야 합니다

요구사항:

  • AWS 계정, 계정이 없으면 여기에서 개설할 수 있습니다.
  • AWS CLI 지침은 여기에 있습니다.
  • 파이썬 3.11 이상

1단계) 가상 Python 환경 만들기 지침은 여기에 있습니다

이 저장소의 bedrock_examples 폴더에는 아래에서 기본 모델을 호출하는 데 사용되는 다양한 예가 있습니다.

프롬프트 폴더에는 이름을 생성하는 데 사용할 수 있는 예제 프롬프트, 메뉴 및 Amazon Bedrock 플레이그라운드와 Amazon Bedrock 플레이그라운드에서 모두 호출할 수 있는 이미지 생성 모델에 전달하는 프롬프트가 있습니다. Python에서 API를 호출합니다.

2단계) 요구사항 설치

pip install -r requirements.txt

3단계) Boto3 구성 boto3에 대한 추가 정보

여기서 내 컴퓨터에 설치된 genaiday 프로필을 사용하도록 AWS 클라이언트를 구성하고 기본 모델을 호출할 수 있는 bedrock-runtime 클라이언트를 호출합니다.

#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')

4단계) 예: 텍스트 모델 호출

이 함수는 invoke_model 메소드를 호출하고 사용자가 지정한 프롬프트를 전달하고 응답을 반환합니다

가장 중요한 부분은 전송된 메시지입니다.

pip install -r requirements.txt
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')

예:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }

5단계) 예: 다중 모달 모델을 호출합니다.

여기서 프로세스는 유사합니다. 전송된 파일의 MIME 유형을 추가해야 합니다. 이를 위해 파일 이름을 기반으로 MIME 유형을 가져오는 기능
이 있습니다.

def call_text(prompt,modelId="anthropic.claude-3-haiku-20240307-v1:0"):
    #esta función es para llamar un modelo de texto
    config = {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 4096,
        "messages": [
            {
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }
        ]
    }

    body = json.dumps(config)
    modelId = modelId
    accept = "application/json"
    contentType = "application/json"

    response = client.invoke_model(
        body=body, modelId=modelId, accept=accept, contentType=contentType)
    response_body = json.loads(response.get("body").read())
    results = response_body.get("content")[0].get("text")
    return results

모델을 호출하려면 메시지가 다음과 같아야 합니다.

print("Haiku")
print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")

모델 호출은 다음과 같습니다.

def read_mime_type(file_path):
    # Este hack es para versiones de python anteriores a 3.13
    # Esta función lee el mime type de un archivo
    mimetypes.add_type('image/webp', '.webp')
    mime_type = mimetypes.guess_type(file_path)
    return mime_type[0]

예:

 "messages": [
        {
            "role": "user",
            "content": [
                {
                     "type": "image",
                        "source": {
                            "type": "base64",
                            "media_type": read_mime_type(file),
                            "data": base64.b64encode(open(file, "rb").read()).decode("utf-8")
                        }
                },
                {
                    "type": "text",
                    "text": caption
            }]
        }
    ]

? Shopify와 상호 작용하는 Amazon Bedrock 에이전트 생성

Amazon Bedrock 에이전트를 생성하려면:

여기에서 액세스가 활성화된 지침과 함께 사용하려는 Bedrock 모델이 있는지 확인하세요. 이 경우 Claude 3 Haiku와 Sonnet을 사용하겠습니다

그런 다음 AWS 콘솔에서 Bedrock 에이전트를 생성합니다.

1) 베드락 서비스 바로가기
2) 에이전트
3) 에이전트 생성

Creación de un agente de cafetería con Amazon Bedrock y Shopify

4) 에이전트 이름을 지정합니다. 여기서는 "Pause-Coffee-Agent
5) 설명은 선택사항입니다.
6) 가장 중요한 단계 중 하나는 에이전트가 제대로 작동하도록 하는 기본 모델을 선택하는 것입니다. 사용 사례에 가장 적합한 모델을 선택하는 방법을 알고 싶다면 여기 Amazon Bedrock 서비스에 대한 가이드가 있습니다. 평가 .
7) 다음 단계는 모델을 안내할 프롬프트입니다. 여기서는 최대한 정확해야 하며 프롬프트 엔지니어로서 기술을 발휘해야 합니다. 어디서부터 시작해야 할지 모르겠다면 이 가이드를 방문하는 것이 좋습니다. 사용 중인 모델에 대한 최상의 지침을 찾을 수 있으며 또 다른 매우 유용한 리소스는 Anthropic 콘솔입니다.

Creación de un agente de cafetería con Amazon Bedrock y Shopify

이것은 제가 예제 에이전트에 사용한 프롬프트입니다. 모델은 영어로 훈련되었고 때로는 훈련 소스 언어로 작성하는 것이 잘못된 동작을 피하는 데 도움이 되므로 프롬프트를 영어로 작성하는 것이 좋습니다.

def call_multimodal(file,caption,modelId="anthropic.claude-3-haiku-20240307-v1:0"):
    #esta funcion es para llamar a un modelo multimodal con una imagen y un texto
    config = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 4096,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                     "type": "image",
                        "source": {
                            "type": "base64",
                            "media_type": read_mime_type(file),
                            "data": base64.b64encode(open(file, "rb").read()).decode("utf-8")
                        }
                },
                {
                    "type": "text",
                    "text": caption
            }]
        }
    ]
    }

    body = json.dumps(config)
    modelId = modelId
    accept = "application/json"
    contentType = "application/json"

    response = client.invoke_model(
    body=body, modelId=modelId, accept=accept, contentType=contentType)
    response_body = json.loads(response.get("body").read())
    results = response_body.get("content")[0].get("text")
    return results

8) 추가 구성에서는 주문을 처리하는 데 필요한 정보가 확실히 부족하다는 점을 고려하여 에이전트가 사용자의 입력을 캡처하도록 허용해야 합니다. 예: 고객이 원하는 제품, 이름을 물어야 합니다. , 무엇보다도

Creación de un agente de cafetería con Amazon Bedrock y Shopify

9) 작업 그룹: 작업 그룹은 에이전트가 사용자를 도울 수 있는 작업을 정의합니다. 예를 들어 다음 작업을 포함할 수 있는 TakeOrder라는 작업 그룹을 정의할 수 있습니다

  • 상품 목록
  • 순서 처리

각 작업에 필요한 작업 그룹을 만들려면:

  • 이름
  • 매개변수

실행할 작업 그룹은 일반적으로 Lambda 함수를 호출합니다. Bedrock에서는 다음을 수행할 수 있습니다.

  • Bedrock 콘솔에서 람다 함수 생성(람다 함수의 빠른 생성 선택)

Creación de un agente de cafetería con Amazon Bedrock y Shopify

  • 여기에서 이미 생성된 람다 함수를 선택하여 이벤트에 대한 지침과 각 작업 그룹에 대한 예상 응답을 선택하세요.

Bedrock 콘솔에서 람다 함수를 생성하기로 선택한 경우, 수정해야 할 기본 소스 코드를 사용하여 Python으로 함수가 생성됩니다. 이 저장소의 Agents/action_group/lambda.py 파일에 있습니다. 에이전트와 작동하도록 수정된 예제 코드가 있습니다.

필요한 정보를 제공하는 변수는 다음과 같습니다.

  • function: 호출된 작업의 이름입니다. 예의 경우 get_products(제품 나열) 및 place_order(Shopify에서 주문 생성)가 될 수 있습니다
  • parameters: 매개변수 사전입니다.

다음 예에서는 두 가지 작업이 있음을 확인할 수 있습니다.

Creación de un agente de cafetería con Amazon Bedrock y Shopify

Crear agente Paso 6

  • 매개변수가 필요 없는 get_products
  • 3개의 매개변수가 있는 place_order:
Parametro Descripcion Tipo Obligatorio
customerEmail Email of the customer string False
customerName Name of the customer string True
products SKUs and quantities to add to the cart in the format [{ variantId: variantId, quantity: QUANTITY }] array True

예를 들어 람다 함수에서 get_products 함수를 호출하면 다음과 같이 처리됩니다.

Shopify API 쿼리를 담당하는 get_products 함수가 정의되어 있습니다(교육 목적으로 모든 제품을 반환함)

Shopify에서 이 기능을 사용하려면 다음 변수를 매장의 변수로 바꿔야 합니다.

pip install -r requirements.txt
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')

그런 다음 람다 함수 핸들러에서 호출된 함수의 이름이 확인되고 action_group에 필요한 형식으로 응답이 반환됩니다.

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }

위의 코드 조각은 여기에 있는 람다 함수의 일부입니다

10) 저장하고 종료를 누르면 에이전트를 테스트할 준비가 완료됩니다.

에이전트의 활동

다음은 에이전트를 테스트하고 작동하는지 확인하는 것입니다. Bedrock에서 에이전트를 테스트할 수 있으며, 대화 중에 "추적 보기 또는 추적 표시"를 클릭하면 추론 프로세스가 표시됩니다. 특별히 주의를 기울여 프롬프트에서 필요하다고 생각되는 조정을 수행하거나, 선택한 모델이 예상대로 작동하지 않는 경우 다른 모델을 찾아보세요.

에이전트에 만족하면 별칭을 생성할 수 있습니다. 별칭은 Amazon Bedrock API에서 에이전트를 호출할 수 있는 ID입니다. 별칭을 생성하면 다음 버전이 생성됩니다. 에이전트를 자동으로 사용하거나 이미 존재하는 버전을 가리킬 수 있습니다. 별칭과 버전이 다르면 에이전트 배포 프로세스를 제어하는 ​​데 도움이 됩니다. 예를 들면 다음과 같습니다.

  • 최신 에이전트 테스트에 들어갈 별칭 "개발"을 가질 수 있습니다
  • 사전 프로덕션 모드의 에이전트가 될 "preprod" 별칭
  • 별칭 "prod"이며 라이브 에이전트입니다.

그런 다음 남은 것은 라이브로 게시하려는 버전에 해당하는 프로덕션 별칭을 적어두는 것뿐입니다.

에이전트 호출 방법

이를 위해 Agent.py라는 파일을 Agent/frontend 폴더에 남겨두었습니다.

이 개발에서는 샘플 기계 학습 애플리케이션을 만드는 강력한 프레임워크인 Streamlit을 사용합니다

에이전트를 호출하는 코드 부분은 다음과 같습니다.

def call_text(prompt,modelId="anthropic.claude-3-haiku-20240307-v1:0"):
    #esta función es para llamar un modelo de texto
    config = {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 4096,
        "messages": [
            {
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }
        ]
    }

    body = json.dumps(config)
    modelId = modelId
    accept = "application/json"
    contentType = "application/json"

    response = client.invoke_model(
        body=body, modelId=modelId, accept=accept, contentType=contentType)
    response_body = json.loads(response.get("body").read())
    results = response_body.get("content")[0].get("text")
    return results

boto3를 사용하여 AWS API를 사용하고, 에이전트를 호출할 수 있도록 bedrock-agent-runtime 클라이언트를 호출합니다.

전달해야 하는 매개변수는 다음과 같습니다.

  • 에이전트 ID
  • agentAliasId
  • inputText(프롬프트)
  • sessionId(대화를 식별하기 위한 세션)

이 예에서는 여기에 변수를 정의합니다.

print("Haiku")
print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")

시설:

먼저 여기에서 Bedrock 지침의 모델에 대한 액세스를 활성화해야 합니다

요구사항:

  • AWS CLI 지침은 여기에 있습니다.
  • 파이썬 3.11 이상

가상 Python 환경을 만드는 것을 권장합니다. 지침은 여기에 있습니다

pip install -r requirements.txt

실행

#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')

이렇게 하면 포트 8501에서 streamlit 실행이 시작되며 다음 URL을 방문하여 에이전트를 호출할 프런트엔드를 확인할 수 있습니다.

Creación de un agente de cafetería con Amazon Bedrock y Shopify

결론

모든 단계를 수행한 경우:

  • Bedrock Playground와 Python에서 Amazon Bedrock API를 사용했습니다
  • 기본 텍스트 및 다중 모드 모델을 호출했습니다
  • Shopify API를 사용하는 에이전트를 처음부터 생성했습니다

GenerativeAI 내에서 경로를 따라갈 수 있는 링크

AWS 생성 AI 워크숍
Bedrock 기술 자료
Anthropic 콘솔(프롬프트 디버깅용)
Community.aws(커뮤니티에서 생성된 더 많은 기사)

위 내용은 Amazon Bedrock 및 Shopify를 사용하여 커피숍 에이전트 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.