Azure AI FoundryでLLMを使ってみる

Microsoft Learnの[「Explore the components and tools of the Azure AI Foundry」](https://microsoftlearning.github.io/mslearn-ai-studio/Instructions/01-Explore-ai-studio.html)を参照して、LLMを使ってみました。

# 前提
1. Azureでサブスクリプションとリソースグループは作成済(Namingは[「Define your naming convention」](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming)参照)

# Step
## 1. プロジェクト作成
[Azure AI Foundry](https://ai.azure.com/)を開いて「プロジェクト作成」ボタンクリック
※ Sign Inなどは省略
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/0ef85c7e-9e17-aa65-46ff-f8f0c1ad03b5.png)

プロジェクト名は提案されたものをそのままにして、「カスタマイズ」ボタンクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/949bd1c1-04ad-bded-ea87-02118ccbeb0c.png)

以下の項目のみ変更して作成
- リソースグループ: 事前作成しておいたものに変更
- 場所: 「選択に関するヘルプ」をクリックして、gpt-4o-miniを使うことにしたら提案された「East US」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/296aeb49-d890-3ba6-445f-8322291a35c4.png)

これにより以下のリソースが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/2a28d393-08fb-9931-5298-839432cf22c9.png)

Azure Portalでリソースグループ内の以下のリソース作成を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/88b56ec7-5251-4d97-6ba7-7ece953bd0b7.png)

## 2. モデルデプロイ
左のナビゲーションメニューで、マイアセット -> モデル+エンドポイントを選択し、コンテンツエリアで +モデルのデプロイ -> 基本モデルをデプロイする をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/1c8c1cf2-83ef-88e1-4597-70a23d05fc25.png)

gpt-4o-miniを選択して、「確認」ボタンクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/50c64309-bbbe-a72d-9eda-bb2433741731.png)

デプロイ詳細項目を特に変えずにデプロイします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/103d1bb8-392e-e989-cbb8-e68c6b827de9.png)

## 3. Playgroundでテスト
「プレイグラウンドで開く」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/7d4c93b8-79ec-527c-1854-df782a68f5f8.png)

これでチャットのテストができるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/f51fbc76-a18b-c1c7-b46e-66d35c11257a.png)

## 4. Pythonから利用
こちらを見て実行。

https://learn.microsoft.com/en-us/azure/ai-studio/how-to/develop/sdk-overview?tabs=sync&pivots=programming-language-python

### 4.1. Python環境
以下の環境で動かしています。

|種類|バージョン|備考|
|:-:|:--|:--|
|OS|Mac15.1.1||
|Python|3.13.1||
|Pyenv|2.4.23|あんま関係ないですが|
|Azure CLI|2.67.0|

Pythonの追加パッケージ

|種類|バージョン|備考|
|:-:|:--|:--|
|azure-ai-projects|1.0.0b4|
|azure-identity|1.19.0|
|azure-ai-inference|1.0.0b6|
|jupyterlab|4.3.4|

### 4.2. ログイン
Shellでログイン

```bash
az login
```

### 4.3. プログラム実行
Jupyterで実行しています。

```python
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

project_connection_string="<プロジェクト接続文字列>"

project = AIProjectClient.from_connection_string(
  conn_str=project_connection_string,
  credential=DefaultAzureCredential())

# get an chat inferencing client using the project's default model inferencing endpoint
chat = project.inference.get_chat_completions_client()

# run a chat completion using the inferencing client
response = chat.complete(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Hi"},
    ]
)

print(response.choices[0].message.content)
```

```:結果
Hello! How can I assist you today?
```

プロジェクト接続文字列はプロジェクト概要画面にあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/01074065-a1a7-2b73-dc41-716aa64d3621.png)

モデル名はデプロイした"gpt-4o-mini"にしています。