ローカル開発環境が使えない状況でのBedrock APIお試し

職場や学校のPCを使う場合など、ローカル開発環境を使えない（インストールやUpdateができない）状況でBedrockやLangChainを試す場合にはCloud9を使用するのがお手軽です。

# 必要なもの
- Administrator権限のあるAWSアカウント

- Cloud9 使用料 以下を目安に
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/03c4e277-75e8-eee7-25f8-4d9fb02dbf18.png)
 
 https://aws.amazon.com/jp/cloud9/pricing/
 
- Bedrock 使用料 以下を目安に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/b06e1c26-a1a2-6cbc-dfea-df064abddbfd.png)

https://aws.amazon.com/jp/bedrock/pricing/

閉じて30分経てばコンピューティングの課金は止まるはずですが（EBSは月額なので停止しててもかかり続けます）、「もういいかな」ってなればcloud9環境を消してしまえば更に安心です。

# Cloud9環境の作成
使えるモデルの関係で手っ取り早くバージニア北部（us-east-1）リージョンで作成します。
名前以外は全てデフォルト（インスタンスタイプ t2.micro、Amazon Linux2、タイムアウト30分）でOKです。

# Bedrock基盤モデルの有効化

以下を参考にClaude、Claude Instantを有効にします。

https://dev.classmethod.jp/articles/if-you-want-to-try-out-amazon-bedrock-from-the-management-console-you-can-set-up-access-to-base-models/


# Pythonライブラリのインストール

Administrator権限を持ったユーザーで、作成したCloud9環境に入ります。
2023/10/29時点のCloud9環境を確認します。

```sh:バージョンの確認
Admin:~/environment $ python --version
Python 3.8.16
Admin:~/environment $ pip list | grep boto3
Admin:~/environment $ pip list | grep langchain
Admin:~/environment $ 
```

:::note warn
Amazon Linux 2023 の場合は、`python`ではなく`python3`で実行
:::

Python自体のバージョンは問題ないので、boto3とlangchainとついでにstreamlitをインストールします。

```sh:インストール実行
Admin:~/environment $ pip install -U boto3 langchain streamlit
```

これでPythonの実行環境が出来ました。

# Pythonプログラムの作成

方法は色々ありますが、慣れない方の為に説明すると、例えば左のツリー部分で右クリック→New Fileで新しいファイルが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/b8e8ea03-5074-5944-d451-b19c180d76a0.png)

ファイル名を適当に変えてダブルクリックするとエディタが起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/142a1056-3c8a-c851-b6c0-7dd4e4c14afb.png)

編集が終わったらCtrl+Sで保存できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/85eb0c98-8c75-611b-299e-375129bdf184.png)

# Pythonプログラムの実行

右上の「▶Run」をクリックすると実行できます。

或いはターミナルのWindowからも実行できます。
```sh:ターミナル
Admin:~/environment $ python test.py
 Hello! Nice to meet you.
```

Streamlitを簡易的に実行する為には以下のようにポート番号に8080を指定して起動します。

```sh:ターミナル
Admin:~/environment $ python -m streamlit run test.py --server.port 8080
```
:::note warn
Amazon Linux 2023 の場合は、`python`ではなく`python3`で実行
:::

Streamlit起動後、画面上部の「Preview」から「Preview Running Application」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/2cecfc24-9f2e-7e1e-f803-5463d3b92a73.png)

画面下部にプレビューWindow（ブラウザ）が立ち上がります。ここで操作可能です。

簡易的な実行としては充分では無いでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/a48fa0a7-f1af-c2c3-7cc9-d3371728c2b3.png)

サンプルプログラムが必要な場合は以下をご参照ください。

https://qiita.com/cyberBOSE/items/fe66c2049aaa04568d61

# Cloud9以外の方法

Google ColabであればCloud9分の費用は掛かりませんが、AWS環境への接続にcredentialを発行・設定する必要があるので、ほんのちょっとだけ手間です。制約のある環境の場合、ColabからAWS環境に接続しようとすると別の制約を乗り越える必要がありそうな気がするので細かいご紹介は省略しますが、必要なものをpip installしてcredentialを使用してboto3セッションで接続する感じです。環境が許すなら難しくはないです。

https://colab.research.google.com/?hl=ja

無料のAmazon SageMaker Studio Labを使う方法もありますがGoogle Colabと一緒の話かなと思います。

https://studiolab.sagemaker.aws/

SageMakerインスタンスを立ち上げてJupyterノートブックを使用する方法もありますが、Cloud9よりもお高めなのでBedrock APIをお触りするだけであれば敢えて使う必要は無いかなと思います。こちらも細かいご紹介は省略しますが、一番小さいインスタンスタイプでPython環境を立ち上げて必要なものをpip installするだけです。

https://aws.amazon.com/jp/sagemaker/pricing/

或いは、LambdaからBedrock APIを呼び出す事も可能ですが、boto3のバージョンを上げる必要がある（Lambdaレイヤーを作る必要がある）ので、お試しであれば敢えてLambdaを使う必要は無いかなと思います。