GPT-4を超えたと噂のClaude3を使ってみた。

# はじめに
3月4日に**Anthoropic社**が開発しているLLMである**Claude**から新しいモデルが発表されました。
その名も**Claude3**。
このモデル、Anthoropic社によるとGPT-4やGoogleのGemini-Ultraを超えたとのこと。
詳しくは公式から↓

https://www.anthropic.com/news/claude-3-family

今回はこのモデルについて紹介していきたいと思います。

# Claude3
公式によると、Claude3では以下の3つのモデルを使用できるとのこと。
- Claude3(Opus)
- Claude3(Sonnet)
- Claude3(Haiku)

無料版では中間に位置するSonnetを使用できるみたいです。ただ、会話が長くなりすぎたり、入力回数に制限があるみたいです。
有料版では、上位モデルであるOpusを使用することができます。お値段は$20です。
現在は、Haikuというモデルは実装されていないようですが、トークンあたりの値段がめちゃくちゃ安いみたいでコスパ最強だとか。
公式の情報にもあるように、どのモデルもGPT-3.5より性能が高いようですね。

![claude.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/0931565f-95df-7932-aeca-2597fff2556d.png)

また、今回は触れませんが、画像読み取りもかなり性能がいいとのこと。
今度触ってみます。

![claude-i.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/668f7121-8b81-3c47-962f-f2cd5ab89092.png)

# 実際に使ってみた
今回はコーディングの精度を確かめてみたかったので、コード生成をしてみました。
比較対象としてChatGPT（GPT-4）にも同様のプロンプトを入力してみました。
入力プロンプトは以下

```
Julia言語で指定したディレクトリ内にあるcsvファイルをglob関数を用いて取得し、それらをデータフレーム化してほしい。

その後、それぞれのデータフレームを横方向に結合し、10行目から20行目を削除してほしい。

その後、最後の列を1番最初の列へ持ってきてcsvファイルとして出力してほしい。

上記のコードを生成して
```

## Claude3
```julia
using CSV
using DataFrames
using Glob

# 指定されたディレクトリ内のcsvファイルを取得
csv_files = glob("path/to/directory/*.csv")

# csvファイルをデータフレームに変換
dfs = [DataFrame(CSV.File(file)) for file in csv_files]

# データフレームを横方向に結合
combined_df = vcat(dfs...)

# 10行目から20行目を削除
filtered_df = combined_df[Not(10:20), :]

# 最後の列を最初の列に移動
last_column = filtered_df[:, end]
final_df = hcat(last_column, filtered_df[:, 1:end-1])

# csvファイルとして出力
CSV.write("output.csv", final_df)
```

## GPT-4
```julia
using Glob
using DataFrames
using CSV

# 指定ディレクトリ内のCSVファイルを取得
csv_files = glob("*.csv", "指定したディレクトリへのパス")

# CSVファイルをデータフレームとして読み込み、縦方向に結合
combined_df = DataFrame()
for file in csv_files
    df = CSV.read(file, DataFrame)
    combined_df = isempty(combined_df) ? df : vcat(combined_df, df, cols=:union)
end

# 10行目から20行目を削除
# 行が10未満の場合、この操作はエラーを引き起こす可能性があるため、行数をチェックする
if nrow(combined_df) > 20
    delete!(combined_df, 10:20)
elseif nrow(combined_df) >= 10
    delete!(combined_df, 10:nrow(combined_df))
end

# 最後の列を先頭に移動
last_col = names(combined_df)[end]
combined_df = hcat(combined_df[:, last_col], combined_df[:, Not(last_col)], makeunique=true)

# 結果をCSVファイルとして出力
CSV.write("output.csv", combined_df)
```

どちらも正しいコードを生成してくれてはいますね。
コーディング精度はかなり高いようです。
Anthoropic社によると、GPT‐4よりコーディング性能は高いとの情報ですが、今後使い込んでみてどちらがいいかは判断していきたいです。

## 生成速度
GPT‐4は出力に時間がかかることを気にしている方もいらっしゃるかと思います。
今回は、上記のプロンプトを入力して出力が終わるまでの時間を計測してみました。

Claude3　：　32秒
GPT-4　：　59秒

約2倍の差ですね。
正直驚きました。
精度もよく、生成速度も速いのは魅力的じゃないでしょうか。

さらに、コードを出力した後のコード内容についての説明文では

## Claude3

![claudesetumei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/b38e1542-cb77-dad3-85e9-9d0d745cade3.png)

## GPT-4

![GPTsetumei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/a8d1a5b4-0996-f311-ad0a-697e1ce7408a.png)

なんかClaude3はめっちゃ丁寧ですよね。感動した( ;∀;)

# 結論
使い分けだと思います(/・ω・)/
GPT‐4はCodeInterpreterなどの優れた機能もあり、GPTsなどで専用のGPTを使用することでより大きな恩恵を得ることができます。
また、Webブラウジングなどもあるので最新の情報を取ってくることも可能です。
しかし、Claude3では2023年8月までのデータで学習されているため最新の情報は取ってくることが出来ません。
なので、一概にもGPT‐4が負けというわけではないのである(/・ω・)/（と思いたい。。。）

まあ、日本語の自然さや生成速度、精度はGPT‐4を超えるものがあるため、基本使いはClaude3に移行してもいいのかな？と思っています。

# まとめ
いかがだったでしょうか？
Claude3のOpusモデルはかなりヤバいです（語彙力）。
ﾔﾊﾞｲ(/・ω・)/
ストレスなく出力してくれるだけで私は満足です。
皆さんも、気になったら是非使ってみてください。
無料版のSonnetモデルでも十分に性能を発揮してくれると思いますので、試してみてください。
とりあえずOpenAIさん！GPT-5を！何卒！
それでは！！！