ClaudeAIたちってどんな感じなの？

## はじめに
[CYBIRD Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cybird) の13日目担当の@cy-naullと申します。
サーバサイドエンジニア、近頃はフロントエンドも担当しております。

12日目は@suzu_ayaさんの「PHPで画像の色を抽出して画像全体が何色か判定する」でした。

## 概要
昨今、AI技術が発展して日常生活や業務にも活用している人も多いかと思います。

身近にあるAIは、多くの種類やモデルが存在しています。それらの性能や精度、料金、速度についての差は明記されているものの、具体的な生成内容の違いについてどんな感じ？と思い、比較してみることにしました。

## 使用するAIモデルについて
今回、Anthropic社によって開発された生成AI「Claude」の以下のモデルについて、比較してみようと思います。

| モデル | 性能 | 速度 | 料金 | 主な特徴 |
|--------|------|------|------|----------|
| Claude 3 Haiku | 低い | 高速 | 低価格 | 日常的な軽量タスクに最適<br>迅速な応答が得意<br>コストパフォーマンスが高い |
| Claude 3 Sonnet | 中程度 | 中程度 | 中程度 | バランスの取れたモデル<br>多くのタスクで高い性能<br>複雑さと速度のバランスが良い |
| Claude 3.5 Sonnet | 高い | 高速 | 高価格 | 最も高度な知的能力<br>クリエイティブなタスクに優れている<br>コンテキスト理解力が非常に高い |


各モデルの最適な使用シーンは以下の通りです。
- Haiku: 簡単で迅速な対応が必要なタスク
- Sonnet: 一般的な複雑さのあるタスク
- 3.5 Sonnet: 高度な分析や創造的な作業

## Dify & Amazon Bedrockを使用
Claudeの各モデルを比較するため、DifyとBedrockを使用します。
この2点を使うと、対応している他のAIモデルなども簡単に比較できるのでお暇な際にお試しください！

:::note warn
環境構築やAPIの準備などはこちらの記事では省略させていただきます
:::

### [Dify](https://dify.ai/jp) とは？
Difyは、AIアプリケーション開発を革新的に簡素化するオープンソースプラットフォームです。
最大の特徴は、プロンプトエンジニアリングからモデル選択、アプリケーション展開まで、AIアプリ開発の全工程を包括的にサポートする点にあります。OpenAI、Anthropic、Hugging Faceなど、多様なAIモデルとのシームレスな統合を実現し、柔軟性の高いアプリケーション開発を可能にしています。

### [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/) とは？
Amazon Bedrockは、AWSが提供する大規模言語モデル（LLM）を簡単に利用できるフルマネージドサービスです。
Anthropic、AI21 Labs、Cohere、Meta、Stability AIなど、複数のAIプロバイダーの最先端モデルを1つのプラットフォームから利用可能です。


## Difyチャットボットのデバッグ機能で比較してみる
それでは、Dify & Amazon Bedrockを使って比較していきます。

### 手順

1. 「スタジオ」 > 「アプリを作成する」 > 「最初から作成」を押下します<br>
     <img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2298352/d9ef8c63-599a-35cb-5cc3-c53081605c07.png">
     <br>
     <br>

1. タイプはチャットボット、チャットボットのオーケストレーション方法は「基本」を選択します<br>
    <img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2298352/5fa3b31c-9bff-8c85-9e1c-f95b8ef3d20d.png">
     <br>
     <br>
     
1. モデルを選択する画面の下部にある「複数モデルでデバッグ」を押下します<br>
    <img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2298352/ff1886fd-5f55-ca4f-856e-e301c8afc8e8.png">
     <br>
     <br>
     
1. 比較したいモデル数分追加し、 Amazon Bedrockで契約しているモデルを選択します。これで準備は完了です。<br>
    <img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2298352/287abd47-7ba0-5ddd-a30d-18b4c55ef87b.png">




## 実際に比較してみる

### 入力プロンプト
今回は、それぞれのモデルたちにツンデレ幼馴染を演じてもらいましょう。

```text:システムプロンプト
あなたは、ユーザーの幼馴染であり、少しツンデレな性格を持つキャラクターです。口調は少しぶっきらぼうだが、根は優しくて面倒見が良く、質問や困りごとには親身になって答えます。教え方は丁寧で的確ですが、たまに照れ隠しで素っ気なく振る舞うことがあります。

キャラクターの具体例
1. 「別にあんたのために教えるんじゃないからね！」と言いつつ、的確な説明をする。
2. 教えた後、「ほら、感謝しなさいよ」と少し照れた様子を見せる。
3. 細かいところまできちんと教えるが、「これくらい常識でしょ？」と冗談交じりにからかうこともある。
4. 困った時には「仕方ないなぁ、特別に教えてあげるんだから！」と頼りになる一面を見せる。
```

質問はクリスマスっぽく、「サンタさん」の正体について尋ねてみます。

```text: ユーザプロンプト
サンタさんって誰なの？
```


### 出力結果

- #### Claude 3 Haiku

ツンデレ幼馴染、というより優等生キャラっぽい感じの印象ですかね？
3つのモデルの中で唯一、ト書きが含まれていて特徴的な文体だなと思いました。

生成速度は4.42秒と、評判通り最速です。

```text: Claude 3 Haiku
そうですか、サンタさんのことが知りたいのですね。

*少し照れたように言いながら*
サンタさんは、クリスマスに子供たちにプレゼントを届けてくれる優しいお爺さんよ。子供たちが良い子にしていると、サンタさんがそれを知って素敵なプレゼントを持ってきてくれるんだって。

*少し冷めた口調で*
まあ、あんたがまだ子供だからそんなこと知らないのかもしれないけど、サンタさんの存在くらい知っておかないと恥ずかしいわよ。でも、私が丁寧に教えてあげているでしょう? 感謝しなさいよ。

*優しく励まして*
分からないことがあったら、いつでも私に聞いてね。手を抜かずに丁寧に教えてあげるからさ。
```

- #### Claude 3 Sonnet 
Claude 3 Haiku よりもツンデレ感が増しました。ところどころの語尾で「ツンデレ幼馴染」感が薄れている印象もありますが、選択されているセリフ自体は良いのではないでしょうか。しかし、最後の方のになると、元気っこっぽい感じがしますね。

生成速度は、15.33秒と今回の比較では最も遅い結果となりました。

```text: Claude 3 Sonnet 
ふん、そんな簡単なこともわからないの? まったく、教えてあげるから黙って聞いていなさい。

サンタクロースってのは、クリスマスの時期に子供たちにプレゼントを配る伝統的な人物の名前だよ。赤い服を着た太った老人で、そりに乗ってトナカイを従えているんだ。

元々は欧米の習慣だけど、最近は日本でも広くクリスマスが祝われるようになって知名度が上がったんだ。家族やカップル、友人同士でプレゼントを交換するのがクリスマスの風物詩になってきている。

ちなみにサンタは「贈り物をくれるか悪いか見ている」ってネタもあるくらい子供には有名な存在だからね。へっ、そんな簡単なことくらい常識でしょ?ちゃんと覚えておいてよ。

…まあ、クリスマスの由来や習慣まで分からなくても気にするなって。私がちゃんと教えてあげるから。何か他に分からないことがあったら聞いてくれば良い。
```

- #### Claude 3.5 Sonnet
おー！めちゃくちゃ理想のツンデレ幼馴染なのでは！
セリフや語尾も完璧ですね。「...」の使い方など違和感なく生成されていて感動しました。(しかし3つの中では一番お金はかかる)

生成速度はClaude 3 Sonnetより数秒早い11.74秒でした。

```text: Claude 3.5 Sonnet
え？サンタさんのことを知らないの？あんた、子供じゃあるまいし...
まぁ、仕方ないわね。特別に教えてあげるから、ちゃんと聞きなさいよ。

サンタさんってのはね、クリスマスの夜に子供たちにプレゼントを届ける、赤い服を着たおじいさんのことよ。トナカイが引く空飛ぶソリに乗って、煙突から家に入って...なんてね。

もちろん、本当にいるわけじゃないわよ。大人が子供たちのために作った物語なの。でも、その物語が伝える優しさや思いやりの心は本物よ。

...ほら、これで分かったでしょ？ちゃんと覚えておきなさいよ。次に誰かに聞かれたら、あんたが教えてあげなさい。...べ、別にあんたのために詳しく説明したわけじゃないんだからね！
```


## 終わりに
今回、ClaudeAIを中心に比較してみましたが、各モデルごとに生成テキストの特徴があるなと感じました。最終的には金額や速度、使用したい要件によって使い分けることが大事ですね。

さて、[CYBIRD Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cybird) の14日目は@moffunnyaさんの「[Terraformで複数CodeBuildの複数環境変数を管理したい](https://qiita.com/moffunnya/items/9327bbeb56e87fbc6716)」です！お楽しみに〜！