1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure AI Foundry の Project connectionから別リソースのモデル呼出

Posted at

Azure AI Foundryで別のAzure AI Foudnryリソースのモデルを接続できます。その場合にPython SDKでどう呼び出すのか調べてみました。複数Azure AI Foudnryのリソースを使っているときに何かいいことないかと試してみましたが、特別便利なこともなかったです。

Steps

前提

Ubuntu 22.04.5で動かしています。

project.toml抜粋
[tool.poetry.dependencies]
python = "^3.11"
openai = "^1.64.0"
jupyterlab = "^4.3.5"
azure-ai-projects = "^1.0.0b10"
azure-identity = "^1.21.0"

1. AI Foundry Project接続

Jpana East リージョンの AI Foundry ProjectからJpana East リージョンで使えないモデルをデプロイ。aif-ai-test-wusが別リソースのAI Foundryです。これで自動で接続が作られます(こんな方法とらなくても、直接接続してもいいはず)。
image.png

管理センターみると接続リソースができています。
image.png

もう一度接続元のモデルデプロイを見ると別Azure AI Foundryリソースのモデルデプロイが確認できます(o1-mini以外は以前に作っていたモデルデプロイ)。
image.png

2. Python Script

2.1. Project Client 作成

SDKを使ってClient作成。ここまでは普通です。

from pprint import pprint

from openai import AzureOpenAI
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential, get_bearer_token_provider


project = AIProjectClient(
  endpoint="https://<project>.services.ai.azure.com/api/projects/<project>",
  credential=DefaultAzureCredential())

このまま呼び出そうとしてもエラーが起きました。

client = project.inference.get_azure_openai_client(api_version="2024-10-21")
response = client.chat.completions.create(
    model="o1-mini",
    messages=[
        {"role": "user", "content": "あなたは誰?"},
    ],
)
print(response.choices[0].message.content)
NotFoundError: Error code: 404 - 
{'error': {'code': 'DeploymentNotFound', 
           'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}

2.2. 接続リソース取得

リソース名から接続リソースを取得します。

project.connections.get("aif-ai-test-wus")
pprint(vars(conn))
'data': {'credentials': {'type': 'ApiKey'},
           'id': '/subscriptions/<略>',
           'isDefault': True,
           'metadata': {'ApiType': 'Azure',
                        'Location': 'westus',
                        'ResourceId': '/subscriptions/<略>'},
           'name': 'aif-ai-test-wus',
           'target': 'https://リソース名.cognitiveservices.azure.com/',
           'type': 'AIServices'}}

2.3. Client 取得

Auzre OpenAIのCleintを取得。ただエンドポイントに取得した接続リソースの情報conn.targetを使っているだけ。

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

aoai_client = AzureOpenAI(
    api_version="2024-10-21",
    azure_endpoint=conn.target,
    azure_ad_token_provider=token_provider,
)

2.4. Chat Completion API呼出

当然ですが呼び出せます。

response = aoai_client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "I am going to Paris, what should I see?",
        }
    ],
    model="o1-mini"
)

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?