【Azure OpenAI】gpt-4oのAPIが使えるようになったので試してみる

# はじめに
2024年5月22日にAzureOpenAIにてgpt-4oが正式にリリースされました。
APIの仕様等に大きな変化がないか検証するついでに記事を作成しています。
API検証のためのソースコードは前回の記事にて作成したものを流用しています。

https://qiita.com/kawai_k/items/729bcabc4c982feb18bf

# モデルをデプロイしよう
現在、gpt-4oは6つのリージョンで使用可能です。
今回はeast usにてgpt-4oのデプロイを行います。
引用:[Azure OpenAI Service models](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/5a77d140-a364-bdac-d120-1e90547ffd87.png)
はじめに、AzureOpenAI Studioを開き新しいデプロイの作成を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/e46daef5-173a-8300-46d9-bad676dbbe83.png)
モデル、モデルバージョン、デプロイ名の三点を指定してください。
デプロイ名は任意のもので大丈夫です。
入力が完了したら作成ボタンで作成をしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/ba67b68e-f887-203c-0a79-0866ca18db2a.png)
少し待つとモデルがデプロイされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/ebfc646e-1f55-8c91-2da4-b70167be8763.png)
これでモデルの準備は完了です。

メニューのチャットボタンからAzureOpenAI Studioでモデルのデモが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/bbd37366-363d-41b1-36c9-9451649b5a6a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/1acc05de-8eaa-ec83-8853-dae8f1cda25c.png)

# OCR検証
私は昔から字が汚くて読めないとよく言われるのですが、更に汚くしてどの程度読んでくれるのか検証してみました。

"o"が"0"になってしまった以外は完璧なのではないでしょうか！！
このクセ字をほぼ完ぺきに読めるのには正直驚きました。gpt-4o恐るべし...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/b1dbbd40-677b-ebfe-febc-c3cb22f3d6e6.png)
一方でgpt-4 turboは....
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/782ace72-3cc0-f445-8f08-0e5de1e3bc12.png)
まだ私の字を読ませるには早すぎたようです。
的外れな回答が返ってきました。

これだけでgpt-4oがどれだけ進化しているのかが分かりますね！！

# APIの実装
今回は前回の記事に引き続きAzureOpenAIのNode.js用ライブラリを使用します。
使用しているライブラリやソースコードについての解説は前回の記事で行っているため割愛します。

https://qiita.com/kawai_k/items/729bcabc4c982feb18bf

"YOUR ○○○○"には対応する情報を入れてください。
```javascript:index.js
const express = require('express');
const http = require('http');
const { OpenAIClient, AzureKeyCredential } = require('@azure/openai');
const app = express();
const server = http.Server(app);
const port = 3000;

server.listen(port, () => {
    console.log(`listening on port ${port}`);
    main()
});

async function main(){
    const endpoint = "YOUR ENDPOINT";
    const azureApiKey = "YOUR APIKEY";
    const deploymentId = "YOUR DEPLOYMENT NAME";
    const message = "YOUR PROMPT";
    
    const resp = await getAzureOpenAI(message,endpoint,azureApiKey,deploymentId);
    
    console.log(resp);
}

async function getAzureOpenAI(message,endpoint,azureApiKey,deploymentId) {

    const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
    const messages = [
        { role: "system", content: "あなたは優秀なアシスタントで幅広い分野について回答することができます。" },
        { role: "user", content: message }
    ];

    const result = await client.getChatCompletions(deploymentId, messages);
    const [choice] = result.choices;

    return choice.message.content;
};
```
起動すると
"YOUR PROMPT"の部分に入力したメッセージに対する回答が出力されます。
こちらは"Azureについて200文字程度で教えてください。"と入力した場合の応答です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760635/906500b5-959c-8aaa-1e55-dfa086174177.png)

gpt-4oとgpt-4turboで
どの程度回答速度に差があるか計測してみました！
|　 |4o |4turbo  |
|---|---|---|
|1回目 |4.72秒|8.03秒  |
|2回目 |4.07秒|8.05秒  |
|3回目 |4.23秒|8.41秒  |
|4回目 |3.71秒|8.76秒  |
|5回目 |3.41秒|11.99秒  |

[中央値]
gpt-4o    :4.07秒
gpt-4turbo:8.41秒

先ほどと同様"Azureについて教えてください。"と入力した場合の応答速度です。

プロンプトによって結果は異なると思われますが今回の検証ではほぼ二倍の速さ....
gpt-4o進化しすぎでは...？

# 感想
gpt4-turbo 2024-04-09も十分に早かったですがそれを上回る速さに驚きました。

OCRの精度も飛躍的に向上しており手書き文字の場合も95%以上の精度で読み取ることができました。(私の汚い字を読むことができる)

こちらの記事にあるようにOpenAIのCEOが「さらなるプロダクトを近く発表する」とコメントされたそうなので今後もOpenAI関連のニュースに注目していきたいと思います。
引用:[オープンＡＩ、新ＡＩモデル「ＧＰＴ－４ｏ」発表－低価格で高速](https://news.yahoo.co.jp/articles/f14803451a1f5f5ee8c86eaa384c2b06d61a560d?page=2)

日々新しい情報が公開されていて飽きないですね！！最近は帰宅後も調べてしまうくらいに沼にハマっています。。