【生成AI オセロ最強決定戦】Gemini vs Dify(GPT-4o-mini) vs Llama3

## はじめに
初めましての人もそうでない人もこんにちは！

中華まんが美味しい季節になってきましたね！
まぁ外にはあまり出ないので食べる機会は非常に少ないですが・・・

今回はチキチキ「生成AI オセロ最強決定戦」を開催します！

開催理由は数多くある生成AIがあり生成AI同士で戦わせたらどうなるのか純粋に気になったからです！

オセロにした理由は開発しやすそうだったからという理由です
気が向いたら他のゲームの対戦もしてみたいですね！

## オセロ勝負をさせるAIモデル

- **エントリーナンバー1：Gemini**
- **エントリーナンバー2：Dify(GPT-4o-mini)**
- **エントリーナンバー3：Llama3**

この3つのモデルを使用していきたいと思います！

ChatGPTではなくDifyを使用する理由はお金がかかってしまうためです！

今回はCludeは使う予定はありませんが参考までに載せておきます！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/3d02f718-57b8-912d-c5ce-6cb3b9456f25.png)

印象元：https://doubleknot.co.jp/blog/2024/09/08/ai-comparison/

## 実装したい機能
- 使用するモデルを選択
- 勝負毎に学習を重ねる
- 実際にオセロ勝負している様子を見せる

それでは頑張っていきます！

## 作ってみた
今回の記事で全てのコードを載せたかったですが少々ここに載せるには少々長くなるので後ほど載せるGithubURLから見ていただければ幸いです。
(本音を言うとめんどくさいです...)

技術スタックは`React`と`TypeScript`と`Python`を用いて開発を行いました！

**完成画面**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/7a53f888-1b80-169e-1fb1-8473abe67faa.png)

さて、とりあえず完成できました！
それでは対戦していきましょう！

## 試合方法
- 2つのモデルを選択する
- 10回戦わせる
- 10回戦ったらサーバーを再起動して学習履歴をリセット
- 別のモデルを選択して以下同文

これらを繰り返してオセロ最強を決めていきたいと思います！

## 試合開始
**1巡目：Dify vs Llama**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/7a24e2f3-44fe-cc6e-11a8-37896ebfad4d.png)

これでは第1ゲームを開始します！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/4b92a597-f965-349d-ca65-a5956f8bda37.png)

自動で進んでしまうため途中の画像にはなってしまいますがこのように動作させることができます！

**第1ゲームの結果**
これは...圧倒的ですね...
この調子で続けて結果を見ていきましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/4185a741-89a1-8824-23d2-4afe967ee6b0.png)

**第2ゲーム**
どんでん返しがきましたね！今度は大差でllamaが勝ちました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/0fb57445-3aea-8910-6404-0b6269c3a52b.png)

**第3ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/9aa0d331-0b2d-70fe-92a9-d4bb35ef2b00.png)

**第4ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/a27769e1-3b3e-0f2c-42b9-a9fd287f2a02.png)

**第5ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/c2f7f9df-5853-0529-859e-e16e8b48c270.png)


**第6ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/f899d0ff-f42d-fb16-4a9b-1e312df06e08.png)

**第7ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/e0d9afe3-916f-a0dc-69db-39b59957dbb5.png)

**第8ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/efb38935-759a-b3ae-fca5-63c7f6074a13.png)

**第9ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/8b54e860-7363-50b0-cdae-c5dab116d7ec.png)

**第10ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/58411eb0-d2cb-0943-f670-a5c153f09218.png)

|  | dify | llama |
|--------|------|-------|
| 1回目  | ⚪️  | ⚫️   |
| 2回目  | ⚫️  | ⚪️   |
| 3回目  | ⚪️  | ⚫️   |
| 4回目  | ⚪️  | ⚫️   |
| 5回目  | ⚪️  | ⚫️   |
| 6回目  | ⚪️  | ⚫️   |
| 7回目  | ⚫️  | ⚪️   |
| 8回目  | ⚪️  | ⚫️   |
| 9回目  | ⚪️  | ⚫️   |
| 10回目 | ⚪️  | ⚫️   |

最終成績: dify 8勝 - llama 2勝

圧倒的ですね...(2回目)
それでは次の試合は`Gemini` vs `Dify`で対戦していきましょう！

サーバーを再起動して学習データをリセットします！

**2巡目：Gemini vs Dify**

**第1ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/b9173ce2-5148-383f-8965-71e38624ec83.png)

**第2ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/7c2b19da-d706-19a3-72c6-f23ec3da55cb.png)

**第3ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/59d357f0-c01e-46e8-3f1e-137820057246.png)

**第4ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/4dd7b7a4-205b-448a-00be-6a624d983dc6.png)

**第5ゲーム**
引き分け！？
引き分けの処理やっていなかったなぁ
処理上はdifyの勝ちとなっていますが引き分けとしてカウントします！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/77a48271-7616-d6fe-4485-febde2224ee9.png)

**第6ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/9c00341b-beca-f77f-585a-ffa29dce41c1.png)

**第7ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/a6ff9e3a-4c3e-a488-3cb7-4769207471c3.png)

**第8ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/1ef89320-f821-dd54-6ab0-736e17187695.png)

**第9ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/3336477b-e498-a37f-eeb5-e1f21e328677.png)

**第10ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/7afa3129-ff31-74ff-c21d-bcc19f60c97a.png)

| 回戦 | dify | gemini |
|--------|------|--------|
| 1回目  | ⚪️  | ⚫️    |
| 2回目  | ⚪️  | ⚫️    |
| 3回目  | ⚫️  | ⚪️    |
| 4回目  | ⚪️  | ⚫️    |
| 5回目  | -    | -      |
| 6回目  | ⚪️  | ⚫️    |
| 7回目  | ⚫️  | ⚪️    |
| 8回目  | ⚫️  | ⚪️    |
| 9回目  | ⚫️  | ⚪️    |
| 10回目 | ⚫️  | ⚪️    |

最終成績: dify 4勝5敗1分 - gemini 5勝4敗1分

予想外のことがありましたが今回の勝負はGeminiの勝ちとなりました！

ある程度予想はつきますが最後に`gemini`vs`llama`と勝負をしていきたいと思います！

**3巡目：Gemini vs Llama**

**第1ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/ed011eaf-d211-fc50-e2d7-44092f8f6252.png)

**第2ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/ec39f7cf-a837-9b09-0c95-2cafcab57e2d.png)

**第3ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/b3c93feb-ee99-bea3-7244-dd72bc277f66.png)

**第4ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/a345c962-deef-5fd2-6595-b688cd145e30.png)

**第5ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/94044cdb-d970-23bb-9154-5ff803d172b9.png)

**第6ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/3490cc1f-48b9-8d10-0b47-118ccefd7a3f.png)

**第7ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/31d281af-4d81-98ae-0236-8930ad353209.png)

**第8ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/e1f6a7aa-1f9e-7e01-e0df-608a7b131e1f.png)

**第9ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/78df0ec9-0a62-e2d6-2f95-adf70d8d503a.png)

**第10ゲーム**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631203/445f0687-9d03-17ae-9007-6dd8fed6de23.png)

|  | llama | gemini |
|--------|--------|---------|
| 1回目  | ⚫️    | ⚪️     |
| 2回目  | ⚫️    | ⚪️     |
| 3回目  | ⚫️    | ⚪️     |
| 4回目  | ⚫️    | ⚪️     |
| 5回目  | ⚪️    | ⚫️     |
| 6回目  | ⚪️    | ⚫️     |
| 7回目  | ⚫️    | ⚪️     |
| 8回目  | ⚪️    | ⚫️     |
| 9回目  | ⚫️    | ⚪️     |
| 10回目 | ⚪️    | ⚫️     |

最終成績: llama 4勝6敗 - gemini 6勝4敗

こんな感じの結果になりました！

## 総対戦成績
| LLM   | 勝利数 | 敗北数 | 引分数 | 勝率    |
|----------|---------|---------|---------|---------|
| dify     | 12       | 7       | 1       | 63%   |
| gemini   | 11       | 8       | 1       | 58%   |
| llama    | 6       | 14       | 0       | 30%   |

※勝率は引き分けを除いた試合数で計算。

|    | dify | gemini | llama |
|----------|---------|---------|---------|
| **dify**     | -       | ×       | ○       |
| **gemini**   | ○       | -       | ○       |
| **llama**    | ×       | ×       | -       |

**戦績**
Gemini：2勝0敗
Dify：1勝1敗
Llama：0勝2敗

**まとめ**
- dify(GPT-4o-mini)は対llamaでは強いが、geminiには若干苦戦
- geminiは安定した強さを見せ、両対戦で勝ち越し
- llamaは両対戦で苦戦し、最も成績が振るわない結果

## 終わりに
今回の記事はいかがだったでしょうか？
llamaが成績が振るわない結果となりましたがかなり善戦した戦いもあるため非常に見応えのある試合がたくさんありました！
実際に動いている様子もぜひ見せたかったですがかなり重くなってしまうため残念です

見ている分にはそこそこ面白かったです！
なので、もし機会があればオセロ以外にも将棋だったりチェスなどもやっていきたいと思います！

またどこかの記事でお会いしましょう！

## GithubURL
準備が出来次第載せます...