🥨

CLIツール「LLM」でAWS CloudShellから気軽にBedrockする

2024/10/29に公開

はじめに

https://zenn.dev/kun432/scraps/1a9d701a28ecf4

ここで紹介されているCLIツールのLLMがシンプルで便利そうなので、AWSでも使ってみる。
結論だけいうと、”こういうのでいいんだよ”感がある、丁度いいツールだった。

概要

ツールの公式ドキュメントはこちら。一言でいうとCLIでLLM APIを叩くラッパー。

https://llm.datasette.io/en/stable/

Install

以下、オレゴンリージョンのAWS CloudShellでの操作を前提とする。

Command

ツールはpipでインストールできる。

pip install llm

modelsコマンドで、使えるモデルがわかる。

llm models
OpenAI Chat: gpt-3.5-turbo (aliases: 3.5, chatgpt)
OpenAI Chat: gpt-3.5-turbo-16k (aliases: chatgpt-16k, 3.5-16k)
OpenAI Chat: gpt-4 (aliases: 4, gpt4)
OpenAI Chat: gpt-4-32k (aliases: 4-32k)
OpenAI Chat: gpt-4-1106-preview
OpenAI Chat: gpt-4-0125-preview
OpenAI Chat: gpt-4-turbo-2024-04-09
OpenAI Chat: gpt-4-turbo (aliases: gpt-4-turbo-preview, 4-turbo, 4t)
OpenAI Chat: gpt-4o (aliases: 4o)
OpenAI Chat: gpt-4o-mini (aliases: 4o-mini)
OpenAI Chat: o1-preview
OpenAI Chat: o1-mini
OpenAI Completion: gpt-3.5-turbo-instruct (aliases: 3.5-instruct, chatgpt-instruct)

Plugin

前述の通り、デフォルトで使えるモデルはOpen AIだけなので、Plugin設定が必要とのこと。

https://llm.datasette.io/en/stable/plugins/directory.html#plugin-directory

このページを見るとAWS Bedrock用に以下のプラグインがある。

  • llm-bedrock-anthropic
  • llm-bedrock-meta

今回は前者を使ってみよう。

llm install llm-bedrock-anthropic

無事に使えるAntropicのモデルが増えたことがわかる。

llm models
OpenAI Chat: gpt-3.5-turbo (aliases: 3.5, chatgpt)
OpenAI Chat: gpt-3.5-turbo-16k (aliases: chatgpt-16k, 3.5-16k)
OpenAI Chat: gpt-4 (aliases: 4, gpt4)
OpenAI Chat: gpt-4-32k (aliases: 4-32k)
OpenAI Chat: gpt-4-1106-preview
OpenAI Chat: gpt-4-0125-preview
OpenAI Chat: gpt-4-turbo-2024-04-09
OpenAI Chat: gpt-4-turbo (aliases: gpt-4-turbo-preview, 4-turbo, 4t)
OpenAI Chat: gpt-4o (aliases: 4o)
OpenAI Chat: gpt-4o-mini (aliases: 4o-mini)
OpenAI Chat: o1-preview
OpenAI Chat: o1-mini
OpenAI Completion: gpt-3.5-turbo-instruct (aliases: 3.5-instruct, chatgpt-instruct)
BedrockClaude: anthropic.claude-instant-v1 (aliases: bedrock-claude-instant, bci)
BedrockClaude: anthropic.claude-v2 (aliases: bedrock-claude-v2-0)
BedrockClaude: anthropic.claude-v2:1 (aliases: bedrock-claude-v2.1, bedrock-claude-v2)
BedrockClaude: anthropic.claude-3-sonnet-20240229-v1:0 (aliases: bedrock-claude-v3-sonnet, bedrock-claude-v3-sonnet, bedrock-claude-sonnet, bedrock-sonnet, bedrock-claude, bc)
BedrockClaude: anthropic.claude-3-5-sonnet-20240620-v1:0 (aliases: bedrock-claude-v3.5-sonnet)
BedrockClaude: anthropic.claude-3-opus-20240229-v1:0 (aliases: bedrock-claude-v3-opus, bedrock-claude-v3-opus, bedrock-claude-opus, bedrock-opus, bo)
BedrockClaude: anthropic.claude-3-haiku-20240307-v1:0 (aliases: bedrock-claude-v3-haiku, bedrock-claude-haiku, bedrock-haiku, bh)

Usage

それでは使ってみましょう。

Invoke

-m でモデルを指定して、簡単にBedrockに会話を投げることができる!

llm -m bedrock-claude-v3.5-sonnet "Hazy IPAについて簡潔に解説して"
Hazy IPA(ヘイジーIPA)は、比較的新しいビールのスタイルで、以下の特徴があります:

1. 外観:濁った、不透明な見た目(ヘイジー)

2. 香り:フルーティーでトロピカルな香り

3. 味わい:ジューシーで柔らかい口当たり、低い苦味

4. アルコール度数:一般的に6-8%

5. ホップ:大量のホップを使用するが、後添えが多い

6. 製法:特殊な酵母や穀物の使用、ろ過を最小限に

7. 別名:New England IPA (NEIPA)やJuicy IPA

8. 人気:クラフトビールシーンで近年急速に人気上昇

Hazy IPAは従来のIPAとは異なり、より柔らかく飲みやすい味わいが特徴で、ビール初心者にも親しみやすいスタイルです。

普通にAWS CLIでやるならこうなるので、楽ですね。

aws bedrock-runtime invoke-model \
    --model-id "[modelId]" \
    --content-type "[contentType]" \
    --body "[body]" [Output FileName]

”LLM” + Curl

変数展開が効くので、curlの結果をそのまま乱暴にプロンプトに突っ込むこともできる。

llm -m bedrock-claude-v3.5-sonnet "このサイトの内容を簡潔に要約して。$(curl -s https://llm.datasette.io/en/stable/usage.html)"
このサイトは、LLMというツールの使用方法について説明しています。主な内容は以下の通りです:

1. プロンプトの実行方法
- 基本的な使い方
- システムプロンプトの設定
- 会話の継続
- 添付ファイルの使用

2. インタラクティブなチャットの開始方法

3. 利用可能なモデルの一覧表示

4. モデルのオプション設定

5. Bash/Zshでの使用Tips

6. 補完モデルの使用

LLMは、OpenAIのGPTモデルなど様々な言語モデルを利用できるコマンドラインツールです。プロンプトを送信したり、対話形式でAIとチャットしたりすることができます。また、システムプロンプトやモデ ルのパラメータを細かく設定することも可能です。

このドキュメントは、LLMの基本的な使い方から高度な機能まで網羅的に説明しています。

Chat

llm chatで会話を継続することもできる。内容は置いておいて、雰囲気を感じて欲しい。

llm chat -m bedrock-claude-v3.5-sonnet
Chatting with anthropic.claude-3-5-sonnet-20240620-v1:0
Type 'exit' or 'quit' to exit
Type '!multi' to enter multiple lines, then '!end' to finish
> はじめまして。ジョークを言って。
はじめまして! 喜んでジョークを言わせていただきます。

なぜカエルは車を運転できないのでしょうか?

答え: ケロケロ(カーローン)が組めないからです!

いかがでしたか? 少し言葉遊びが入っていますが、面白いと思っていただけたら嬉しいです。他にも面白いジョークがたくさんありますよ。もっと聞きたい場合は、お気軽にお申し付けください!
> ありがとう。またね
ありがとうございました!楽しんでいただけたなら嬉しいです。ジョークや他の話題でも、いつでもお気軽にまた話しかけてくださいね。良い一日をお過ごしください。またお会いできるのを楽しみにして います!
> exit

何が嬉しいか

AWS Bedrockのプレイグラウンドはちょっと使いずらい。とはいえセルフホスティングも煩雑という時に、環境を汚さずに雑にClaudeを叩くのに便利。

あとネタ元の記事にもあるように、gptmeよりレスポンスが素直でシェルスクリプトに組み込みやすいのも便利そう。

https://zenn.dev/link/comments/53207f980e3c88

まだ使い始めなので、しばらく遊んでみよう。

便利のために、使うためのコマンドを再掲する(自分用)

pip install llm
llm install llm-bedrock-anthropic
llm -m bedrock-claude-v3.5-sonnet "tell me joke"

Apppendix.

Claude3.5 Sonnet V2はまだ対応してなさそうなので、プルリクを出してみた。

https://github.com/sblakey/llm-bedrock-anthropic/pull/17

Discussion