今日は、Bedrock を安全かつ確実に使用する方法を説明し、同時にコーヒーについて少し学びます。
Python を使用してテキスト モデルとマルチモーダル モデルの Amazon Bedrock API を使用して、カフェの名前、ロゴ、メニューを生成し、Shopify API に接続して注文を受けるエージェントを作成する方法を学びます。
Shopify は (私の意見では) 存在する中で最高の e コマース プラットフォームです。
AWS と同じように、Shopify にはあらゆるものに対応する API と開発者向けのプラットフォームがあります
最後に、Streamlit を使用してフロントエンドを作成し、独自のユーザー エクスペリエンスを提供し、エージェントに命を吹き込みます。
カフェテリアをオープンしたり、あらゆるビジネスについて創造的なアイデアを思いついた瞬間は、生成 AI (GenAI) に頼って最大限に活用する絶好の機会です。
Amazon Bedrock を通じて使用できますが...そのサービスはどのように利用されますか?
AWS のすべてのサービスには API があり、Amazon Bedrock も例外ではありません。以下では、外出先でカフェテリアの名前とメニューを生成する例を通じて、Amazon Bedrock API を使用する方法を説明します。
また、画像を分析できるマルチモーダル モデルを使用する方法も示します。
ローカルで実行するか、Amazon Bedrock を呼び出す Lambda 関数内で実行する Python スクリプトをプログラムする手順:
まず、ここで Bedrock 手順のモデルへのアクセスを有効にする必要があります
要件:
ステップ 1) 仮想 Python 環境を作成します。手順はこちら
このリポジトリの bedrock_examples フォルダーには、基本モデルを呼び出すために以下で使用されるさまざまな例があります。
プロンプトフォルダーには、プロンプトの例があり、名前、メニュー、および Amazon Bedrock プレイグラウンドとPython から API を呼び出します。
ステップ 2) 要件をインストールします
pip install -r requirements.txt
ステップ 3) Boto3 を構成する boto3 に関する詳細情報
ここでは、コンピューターにインストールされている genaiday プロファイルを使用し、基本モデルを呼び出すことができる bedrock-runtime クライアントを呼び出すように AWS クライアントを設定します。
#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 }] } ]
Amazon Bedrock エージェントを作成するには:
アクセスを有効にして使用したい Bedrock モデルがあることを確認してください。手順はここにあります。この場合は、Claude 3 Haiku と Sonnet を使用します
次に、AWS コンソールで Bedrock エージェントを作成します。
1) Bedrock サービスにアクセスします
2) エージェント
3) エージェントを作成します
4) エージェントに名前を付けます。この場合は「Pause-Coffee-Agent
」です。
5) 説明はオプションです。
6) 最も重要なステップの 1 つは、エージェントが適切に機能するための基本モデルを選択することです。ユースケースに適した最適なモデルを選択する方法を知りたい場合は、Amazon Bedrock サービスに関するガイドを参照してください。評価 .
7) 次のステップは、モデルをガイドするプロンプトです。ここでは、できるだけ正確に、プロンプト エンジニアとしてのスキルを引き出す必要があります。どこから始めればよいかわからない場合は、このガイドにアクセスすることをお勧めします。使用しているモデルに最適なガイドラインが見つかります。もう 1 つの非常に便利なリソースは、人間コンソールです。
これはエージェントの例に使用したプロンプトです。モデルは英語でトレーニングされており、トレーニング ソース言語で記述すると誤った動作を回避できる場合があるため、プロンプトは英語で記述することをお勧めします。
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) 追加の設定。注文を処理するための情報が確実に不足していることを考慮して、エージェントがユーザーからの入力をキャプチャできるようにする必要があります。たとえば、次のとおりです。顧客が希望する製品、名前を尋ねる必要があります。 、とりわけ。
9) アクション グループ: アクション グループは、エージェントがユーザーを支援できるアクションを定義します。たとえば、次のアクションを持つことができる TakeOrder というアクション グループを定義できます
アクション グループを作成するには、各アクションに必要なものがあります:
実行するアクション グループは通常、Lambda 関数を呼び出します。Bedrock からは次のことができます。
Bedrock コンソールから lambda 関数を作成することを選択した場合、関数は基本的なソース コードを使用して Python で作成され、その後、このリポジトリのファイル Agents/action_group/lambda.py で変更する必要があります。エージェントで動作するように変更されたサンプル コードが含まれています。
必要な情報を提供する変数は次のとおりです:
次の例では、2 つのアクションがあることがわかります:
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 です。エイリアスを作成すると、次のバージョンが作成されます。エージェントを自動的に指定することも、既存のバージョンを指定することもできます。異なるエイリアスと異なるバージョンを使用すると、エージェントの展開プロセスを制御するのに役立ちます。次に例を示します。
あとは、ライブにしたいバージョンに対応するプロダクションエイリアスを書き留めるだけです。
エージェントの呼び出し方法
このために、agents/frontend フォルダーに、agent.py というファイルを残しました。
この開発では、サンプル機械学習アプリケーションを作成するための強力なフレームワークである 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 クライアントを呼び出してエージェントを呼び出せるようにします。
それに渡す必要があるパラメータは次のとおりです:
この例では、次の変数を定義しています:
print("Haiku") print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")
まず、ここで Bedrock 手順のモデルへのアクセスを有効にする必要があります
要件:
仮想 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: http://localhost:8501/ にアクセスして、エージェントを呼び出すフロントエンドを確認できます
すべての手順を実行した場合:
GenerativeAI 内のパスをたどるためのいくつかのリンク
AWS 生成 AI ワークショップ
基礎知識ベース
Anthropic Console (プロンプトをデバッグするため)
Community.aws (コミュニティによって、コミュニティのために生成されたその他の記事)
以上がAmazon Bedrock と Shopify を使用してコーヒーショップエージェントを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。