AzureOpenAIのクイックスタート

# 記載内容
## 本書では以下について手順を順次記載する
1. AzureOpenAIの作成
1. モデルのデプロイ
1. pythonでモデルに推論実行

## 背景
地味に手こずったためその記録として残す。
主に手こずった点は、2.モデルのデプロイ、3.pythonでモデルに推論実行のこの２点である。
備忘として残す

## 1. AzureOpenAIの作成

### 1、Azure Portal へログインして、Azure OpenAIにアクセスする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/6d84f70d-98d8-4272-b6cd-5e7724da2838.png)

### 2、＋作成　を押下する
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/5ff7f800-6f13-4d91-9988-d3e99fe1d3e2.png)

### 3、必要なパラメータの入力
　注意点：デプロイしたいモデルがリージョンの指定箇所と異なる場合、デプロイする際に自動でリソースが作成されてしまうため、この時点で合わせておく方がよいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/d88bf8a7-3d9d-4b49-8963-d2984e86d9dd.png)

### ４、今回はどこからでも接続可能な一番上の「インターネットを含む～」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/04f2a6db-6ebf-4095-8825-a2496d81f5c4.png)

### ５、Azure OpenAIが作成される。
　※この時点では、まだモデルはデプロイされていない。
 　**赤枠のキー1 or キー2（①）** 　、　**エンドポイント（②）** を控える。
  生成AIモデルに推論リクエストを行う際に必要なパラメータです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/e4e3d679-8025-4788-b3bd-5a50b02370d7.png)


## 2. モデルのデプロイ
### １、赤枠の「Go to Azure AI Foundry portal」へアクセスする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/8c65ec3b-c1e2-4113-8ae0-f1396a39f3e3.png)

### ２、サイドメニューでモデルカタログを選択の上、デプロイするモデルを選択する。
　今回は、「gpt-4o」 を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/6810cc02-ed28-40b3-a252-f2876baea7d8.png)

### ３、デプロイを押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/b1137b47-4122-4cff-9b8c-aa5c1777cc77.png)

### ４，デプロイ情報を入力する。
　※この時点で選択したモデルが、現状操作しているAzure OpenAIのリソースのリージョン（リソースの場所）と異なる場合はAIリソースの欄にデプロイ可能なリージョンのリソースを自動で作成しようとします。
　**デプロイ名（③）** は生成AIモデルに推論リクエストを行う際に必要なパラメータです。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/cb2a2d59-1c73-4337-8374-e8580915d444.png)



## 3. pythonでモデルに推論実行
### １、左サイドメニューのデプロイを選択するとデプロイしたモデルの一覧を確認可能です。
　今回はgpt-4oで作成したのでこちらが表示されています。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/26f4e056-731e-4366-abc0-ac876807a768.png)

### ２、デプロイ名を選択すると詳細画面にいきます。
　※ターゲットURIを確認すると以下のようなフォーマットで記載されています。
　 **api-version(④)** のパラメータを控えてください。生成AIモデルにリクエスト時に必要なパラメータです。
 　以下の場合だと、[2024-08-01-preview] を控える。
  また、キー　の値は①と同等の値になります。
  
 ```
 ターゲットURLフォーマット：
 https://[endpoint]/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview
 ```

 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492557/ed4eef16-eae3-4c02-9950-2851182dbee1.png)

## Azure OpenAI でデプロイしたgpt-4o へリクエストを行うサンプルコード

以下pythonコードを①～④の値を変更の上、実行すれば動作するはずです。
尚、今回のコードの記法は libruary:openai==1.x 想定の記法となります。　openai=0.x の記法は異なるため注意ください。 

```
import os
from openai import AzureOpenAI

# Azure OpenAIの設定
AZURE_OPENAI_KEY = [キーの値(①)]
AZURE_OPENAI_ENDPOINT = [エンドポイントの値（②）]
AZURE_DEPLOYMENT_NAME = [デプロイ名(③)]  
API_VERSION = [api-version(④)]  

def get_requirements(input_info):

    client = AzureOpenAI(
        azure_endpoint = AZURE_OPENAI_ENDPOINT,
        api_key = AZURE_OPENAI_KEY,
        api_version = API_VERSION
    )


    prompt = f"インプット情報を要約してください。\n\nインプット情報:\n{input_info}"

    response = client.chat.completions.create(
        model=AZURE_DEPLOYMENT_NAME,
        messages=[
            {"role": "system", "content": "あなたは文学者です。"},
            {"role": "user", "content": prompt}
        ],
        max_tokens=500,
        temperature=0.7
    )

    return response.choices[0].message.content

if __name__ == "__main__":
    # テスト用のインプット情報
    input_info = "~~~要約したい文章を入力してね~~~"

    # 要件定義の項目を取得
    requirements = get_requirements(input_info)
    
    print("=== 生成された要約内容 ===")
    print(requirements)
```

## おしまい