前書き
ご存知の通り、2024年7月29日からCloud9がサービス終了しました。
最近、Cloud9を使ってBedRockの学習をしている筆者にとって、まさに青天の霹靂です。
いくつか代替案を探してみたところ、AWS CloudShell
にたどり着きました。
注意
2024年8月20日時点で使用していますが、これがAWS CloudShellの正しい使い方かは確信が持てません。慎重に使いましょう。
やり方
セットアップの手順は、以下の記事に詳しく書かれています。
ここでは、必要な作業の一部を抜粋してご紹介します。
- AWS CloudShellを開き
- VSCodeをインストール
$ curl -L "https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64" -o vscode_cli_alpine_x64_cli.tar.gz
$ tar zxvf vscode_cli_alpine_x64_cli.tar.gz
$ mkdir -p ~/.local/bin
$ mv code ~/.local/bin/
- VSCodeをサーバーとして起動する
$ code serve-web --without-connection-token --accept-server-license-terms
*
* Visual Studio Code Server
*
* By using the software, you agree to
* the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license) and
* the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement).
*
Web UI available at http://127.0.0.1:8000
- 別のTabを開きPinggyを使い、8000番ポートに一時的なパブリックURLを付与する
VSCodeを開けたら、ターミナルを開き、必要なライブラリーを入れていきます。
pip install langchain==0.2.0 langchain-aws==0.1.4 langchain-community==0.2.0
RedRockにmodelへのアクセス付与されてることを確認しましょう。
アクセス可能であれば、下記のコードを実行します。
app.py
from langchain_aws import ChatBedrock
from langchain_core.messages import HumanMessage, SystemMessage
chat = ChatBedrock(
model_id="anthropic.claude-3-sonnet-20240229-v1:0",
model_kwargs={"max_tokens": 1000},
)
messages = [
SystemMessage(content="あなたのタスクはユーザーの問題を日本語で明確に答えることです。"),
HumanMessage(content="ビールの原材料教えて欲しい"),
]
response = chat.invoke(messages)
print(response.content)
動作に問題はなさそうですね。これでやっと勉強を進められます。
@moritalous さんに感謝です
Streamlit起動
開いてるVscodeでStreamlit起動します。
streamlit run main.py
しばらくしたら、8080番とかで起動してるメッセージが表示されます。
If cross origin resource sharing is required, please disable server.enableXsrfProtection.
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8080
一旦CloudShellに戻り、Vscodeを開く際に行った作業を8080番に向け再度行います。
ssh -p 443 -R0:localhost:8080 a.pinggy.io
表示されたhttpsから始まるURLでStreamlitを開けるはずです。
参考文献