適用対象:Foundry (クラシック) ポータル。 この記事は、新しい Foundry ポータルでは使用できません。
新しいポータルの詳細を確認します。
メモ
この記事のリンクは、現在表示している Foundry (クラシック) ドキュメントではなく、新しい Microsoft Foundry ドキュメントのコンテンツを開く場合があります。
この記事では、Microsoft Foundry のモデル カタログからデプロイされたモデルで LlamaIndex を使用する方法について説明します。
LlamaIndex で Microsoft Foundry にデプロイされたモデルは、次の 2 つの方法で使用できます。
モデルのプロバイダー固有の API の使用: OpenAI、Cohere、Mistral などの一部のモデルでは、LlamaIndex 用の独自の API と拡張機能のセットが提供されています。 これらの拡張機能には、モデルがサポートする特定の機能が含まれる可能性があるため、それらを利用する場合に適しています。
llama-indexを使用する場合は、llama-index-llms-openaiやllama-index-llms-cohereなど、使用するモデルに固有の拡張機能をインストールします。Azure AI モデル推論 API の使用: Foundry にデプロイされるすべてのモデルは、カタログ内のほとんどのモデルで使用できる一般的な機能セットを提供する Model Inference API をサポートします。 この API の利点は、すべてのモデルで同じであるため、1 つから別のモデルへの変更は、使用しているモデルデプロイを変更するのと同じくらい簡単であるということです。 コードにそれ以上の変更は必要ありません。 LlamaIndex を使用する場合は、拡張機能の
llama-index-llms-azure-inferenceとllama-index-embeddings-azure-inferenceをインストールします。
この例では、 モデル推論 API を使用します。
重要
Azure AI 推論ベータ SDK は、2026 年 8 月 26 日に廃止されました。 安定した OpenAI SDK を使用して、一般公開されている OpenAI/v1 API に切り替えます。 好みのプログラミング言語に SDK を使用して、 移行ガイド に従って OpenAI/v1 に切り替えます。
前提 条件
このチュートリアルを実行するには、次のものが必要です。
- アクティブなサブスクリプションを持つAzure アカウント。 お持ちでない場合は、無料試用版サブスクリプションを含む無料Azure アカウントを作成します。
- Foundry プロジェクト。
- 必要なロール:
モデルをデプロイするための Foundry リソースまたは AI ハブの所有者または共同作成者
Foundry プロジェクトでモデルを使用するためのFoundry ユーザー
重要
Foundry RBAC ロールの名前が最近変更されました。 Foundry User, Foundry Owner, Foundry Account Owner、および Foundry Project Manager は、以前は、AZURE AI ユーザー、Azure AI 所有者、Azure AI アカウント所有者、および AZURE AI Project Manager という名前でした。 名前の変更がロールアウトされている間、以前の名前が表示される場合があります。ロール ID とコア アクセス許可は、名前の変更によって変更されません。
Azure AI Developer ハブベースのプロジェクトでモデルを使用する
モデル推論 API をサポートするモデル デプロイ。 この記事では、コード例で
Mistral-Large-3を使用します。デプロイした独自のモデル名に置き換えることができます。LlamaIndex で埋め込み機能を使用するには、
cohere-embed-v3-multilingualなどの埋め込みモデルが必要です。- サーバーレス API デプロイとしてのモデルのデプロイに関する記事の手順に従うことができます。
Python pip を含む 3.8 以降がインストールされています。
LlamaIndex がインストールされています。 次のコマンドを使用してインストールできます。
pip install llama-indexこの例では、モデル推論 API を使用しているため、次のパッケージをインストールします。
pip install -U llama-index-llms-azure-inference pip install -U llama-index-embeddings-azure-inference重要
Foundry Models サービスを使用するには、
0.2.4またはllama-index-llms-azure-inferenceのバージョンllama-index-embeddings-azure-inferenceが必要です。
環境を構成する
Microsoft Foundry ポータルにデプロイされた LLM を使用するには、接続するためのエンドポイントと資格情報が必要です。 使用するモデルから必要な情報を取得するには、次の手順に従います。
-
Microsoft Foundry にサインイン>。 新しいファウンドリーのトグルがオンになっていることを確認します。 これらの手順は Foundry (新規) を参照します。
モデルがまだ開いていない場合は、モデルが配置されているプロジェクトを開きます。
エンドポイントの URL とキーをコピーします。
このシナリオでは、エンドポイントの URL とキーを環境変数として設定します。 (コピーしたエンドポイントに /models後に追加のテキストが含まれている場合は、次に示すように URL が /models で終わるように削除します)。
export AZURE_INFERENCE_ENDPOINT="https://<resource>.services.ai.azure.com/models"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"
環境を構成したら、エンドポイントに接続するクライアントを作成します。
import os
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
)
ヒント
モデルのデプロイが Foundry Models または Foundry Tools リソースAzure OpenAI でホストされている場合は、Azure OpenAI モデルと Foundry Models サービスで示されているようにクライアントを構成します。
エンドポイントが複数のモデル (Foundry Models サービスまたは GitHub Models など) にサービスを提供する場合は、model_name パラメーターを指定する必要があります。
import os
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
model_name="Mistral-Large-3",
)
これにより、次の処理が実行されます。 マルチモデル エンドポイントの明示的なモデル名の指定を持つ LLM クライアントを作成します。
model_name パラメーターは、チャットの完了に使用するモデルをサービスに指示します。
参照:
または、エンドポイントがMicrosoft Entra IDをサポートしている場合は、次のコードを使用してクライアントを作成できます。
import os
from azure.identity import DefaultAzureCredential
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)
これを行うには: API キーよりも運用環境の方が安全なMicrosoft Entra ID (Azure AD) 認証を使用して LLM クライアントを作成します。
メモ
Microsoft Entra IDを使用する場合は、その認証方法でエンドポイントがデプロイされていること、およびエンドポイントを呼び出すために必要なアクセス許可があることを確認します。
セットアップを確認する
単純な呼び出しでクライアント接続をテストします。
from llama_index.core.llms import ChatMessage
messages = [ChatMessage(role="user", content="Hello")]
response = llm.chat(messages)
print(response)
これにより、次の処理が実行されます。 単純なメッセージでモデルを呼び出して、認証と接続を確認します。 予期される出力: モデルのあいさつメッセージを含む応答オブジェクト。
参照:
非同期呼び出しを使用する場合は、資格情報に非同期バージョンを使用します。
from azure.identity.aio import (
DefaultAzureCredential as DefaultAzureCredentialAsync,
)
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredentialAsync(),
)
Azure OpenAI モデルと Foundry Models サービス
Azure OpenAI または Foundry Models サービス を使用している場合は、LlamaIndex 統合のバージョン 0.2.4 以上であることを確認してください。 特定のapi_versionを選択する必要がある場合は、api_version パラメーターを使用します。
Foundry Models サービスの場合は、model_name パラメーターを渡す必要があります。
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
model_name="Mistral-Large-3",
)
Azure OpenAI の Foundry モデルの場合:
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint="https://<resource>.openai.azure.com/openai/deployments/<deployment-name>",
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
api_version="2024-05-01-preview",
)
ヒント
デプロイで使用している API バージョンを確認します。 間違った api_version を使用するか、モデルでサポートされていない ResourceNotFound 例外が発生します。
推論パラメーター
追加のパラメーターを設定することで、このクライアントを使用するすべての操作に対して推論を実行する方法を構成できます。 この方法は、モデルに対して行う各呼び出しでこれらを指定しないようにするのに役立ちます。
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"top_p": 1.0},
)
これにより、次の処理が実行されます。 このクライアントで行われたすべてのチャット呼び出しと完了呼び出しに適用される既定の推論パラメーター (temperature と top_p) を設定します。 温度 (0.0) が低いほど、より確定的な出力が生成されます。 top_p サンプリングの多様性を制御します。
参照:
モデル推論 API (リファレンス) ではサポートされていないが、基になるモデルで使用できるパラメーターの場合は、 model_extras 引数を使用します。 次の例では、Mistral モデルでのみ使用できるパラメーター safe_promptが渡されます。
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"model_extras": {"safe_prompt": True}},
)
LLM モデルを使用する
クライアントを直接使用することも、LlamaIndex のコードで使用するモデルを構成 することもできます。 モデルを直接使用するには、チャット命令モデルに chat メソッドを使用します。
from llama_index.core.llms import ChatMessage
messages = [
ChatMessage(
role="system", content="You are a pirate with colorful personality."
),
ChatMessage(role="user", content="Hello"),
]
response = llm.chat(messages)
print(response)
出力をストリーミングすることもできます。
response = llm.stream_chat(messages)
for r in response:
print(r.delta, end="")
completeメソッドは、chat-completions型のモデルで引き続き使用できます。 このような場合、入力テキストは role="user"を使用してメッセージに変換されます。
埋め込みモデルを使用する
LLM クライアントを作成するのと同じように、埋め込みモデルに接続できます。 次の例では、埋め込みモデルを指すように環境変数を設定します。
export AZURE_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"
次に、クライアントを作成します。
from llama_index.embeddings.azure_inference import AzureAIEmbeddingsModel
embed_model = AzureAIEmbeddingsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ['AZURE_INFERENCE_CREDENTIAL'],
model="<your-model-name>",
)
これにより、次の処理が実行されます。 埋め込みクライアントをインスタンス化して、テキストをベクター埋め込みに変換します。 埋め込みとは、セマンティック類似性検索と取得拡張生成 (RAG) に使用されるテキストの数値表現です。
参照:
次の例は、動作することを確認するための簡単なテストを示しています。
from llama_index.core.schema import TextNode
nodes = [
TextNode(
text="Before college the two main things I worked on, "
"outside of school, were writing and programming."
)
]
response = embed_model(nodes=nodes)
print(response[0].embedding)
これにより、次の処理が実行されます。 テキスト ノードを埋め込み形式に変換し、数値ベクター表現を出力します。 予期される出力: テキストのセマンティックの意味を表す浮動小数点数の一覧 (通常の長さ: モデルに応じて 384 ~ 1024 ディメンション)。
参照:
コードで使用するモデルを構成する
コードでは、LlamaIndex を使用するときに LLM または埋め込みモデル クライアントを個別に使用することも、 Settings オプションを使用してセッション全体を構成することもできます。 セッションを構成すると、すべてのコードですべての操作に同じモデルが使用されます。
from llama_index.core import Settings
Settings.llm = llm
Settings.embed_model = embed_model
これにより、次の処理が実行されます。 LLM を登録し、クライアントをグローバルに埋め込むため、すべての LlamaIndex 操作でこれらのモデルが自動的に使用されるため、各関数にパラメーターとして渡す必要はありません。
参照:
ただし、一部のシナリオでは、ほとんどの操作の一般的なモデルと、特定のタスクの特定のモデルが必要です。 このような場合は、LlamaIndex コンストラクトごとに LLM または埋め込みモデルを設定します。 次の例は、特定のモデルを設定する方法を示しています。
from llama_index.core.evaluation import RelevancyEvaluator
relevancy_evaluator = RelevancyEvaluator(llm=llm)
これにより、次の処理が実行されます。 取得結果を評価するためにカスタム LLM クライアントを使用する関連性エバリュエーターを作成します。 これにより、さまざまなタスクに異なるモデルを使用できます (たとえば、評価用の特定のモデルと一般的なチャット)。
参照:
一般に、両方の戦略を組み合わせて使用します。