次の方法で共有


Azure AI Foundry SDK

Azure AI Foundry SDK は、Azure での AI アプリケーションの開発を簡略化するように設計された包括的なツールチェーンです。 これにより、開発者は次のことが可能になります。

  • 1 つのインターフェイスを使用して、さまざまなモデル プロバイダーから人気のあるモデルにアクセスする
  • モデル、データ、AI サービスを簡単に組み合わせて、AI 搭載のアプリケーションを構築する
  • 開発、テスト、運用環境全体でアプリケーションの品質と安全性を評価、デバッグして向上させる

Azure AI Foundry SDK は、連携して動作するように設計されたパッケージとサービスのセットです。 Azure AI Projects クライアント ライブラリを使用すると、1 つのプロジェクト クライアントと接続文字列を使用して複数のサービスを簡単に使用できます。 また、サービスと SDK を単独で使用し、サービスに直接接続することもできます。

すぐにアクセスしてアプリのビルドを開始する場合は、次の項目を確認してください。

プロジェクトの使用を開始する

Azure AI Foundry SDK の使用を開始する最善の方法は、プロジェクトを使用することです。 AI プロジェクトは、AI アプリケーションを構築するために必要なさまざまなデータ、資産、サービスを結び付けます。 AI プロジェクト クライアントを使用すると、1 つの接続文字列を使用して、コードからこれらのプロジェクト コンポーネントに簡単にアクセスできます。

まず、AI プロジェクトがない場合はそれを作成する手順に従います。

AI プロジェクトへのアクセスに使用するのと同じアカウントを使用して、Azure CLI にサインインします。

az login

Azure AI プロジェクト クライアント ライブラリをインストールします。

pip install azure-ai-projects azure-identity

コードでプロジェクト クライアントを作成します。

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

project_connection_string="your_connection_string"

project = AIProjectClient.from_connection_string(
  conn_str=project_connection_string,
  credential=DefaultAzureCredential())
dotnet add package Azure.AI.Projects
dotnet add package Azure.Identity

using ステートメントを追加します。

using Azure.Identity;
using Azure.AI.Projects;

コードでプロジェクト クライアントを作成します。

var connectionString = "<your_connection_string>";
var projectClient = new AIProjectClient(connectionString, new DefaultAzureCredential());

プロジェクトの [概要] ページから [プロジェクト接続文字列] をコピーし、上記の接続文字列の値を更新します。

プロジェクト クライアントを作成したら、次のセクションの機能にクライアントを使用できます。

参照サンプルを必ず確認してください。

参照サンプルを必ず確認してください。

Azure OpenAI Service

Azure OpenAI Service は、GPT-4o、GPT-4o mini、GPT-4、GPT-4 Turbo with Vision、DALLE-3、Whisper、Embeddings モデル シリーズなどの OpenAI のモデルへのアクセスを、Azure のデータ所在地、スケーラビリティ、安全性、セキュリティ、エンタープライズ機能と合わせて提供します。

OpenAI SDK を使用するコードがある場合は、Azure OpenAI Service を使用するようにコードを簡単にターゲットにすることができます。 まず、OpenAI SDK をインストールします。

pip install openai

OpenAI SDK を使用する既存のコードがある場合は、プロジェクト クライアントを使用して、プロジェクトの Azure OpenAI 接続を使用する AzureOpenAI クライアントを作成できます。

openai = project.inference.get_azure_openai_client(api_version="2024-06-01")
response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful writing assistant"},
        {"role": "user", "content": "Write me a poem about flowers"},
    ]
)

print(response.choices[0].message.content)
dotnet add package Azure.AI.OpenAI

using ステートメントを追加します。

using OpenAI.Chat;
using Azure.AI.OpenAI;

OpenAI SDK を使用する既存のコードがある場合は、プロジェクト クライアントを使用して、プロジェクトの Azure OpenAI 接続を使用する AzureOpenAI クライアントを作成できます。

var connections = projectClient.GetConnectionsClient();
ConnectionResponse connection = connections.GetDefaultConnection(ConnectionType.AzureOpenAI, withCredential: true);
var properties = connection.Properties as ConnectionPropertiesApiKeyAuth;

if (properties == null) {
    throw new Exception("Invalid auth type, expected API key auth");
}

// Create and use an Azure OpenAI client
AzureOpenAIClient azureOpenAIClient = new(
    new Uri(properties.Target),
    new AzureKeyCredential(properties.Credentials.Key));

// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureOpenAIClient.GetChatClient("gpt-4o-mini");

ChatCompletion completion = chatClient.CompleteChat(
    [
        new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
        new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
        new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
        new UserChatMessage("Do other Azure AI services support this too?")
    ]);

Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");

Azure OpenAI SDK を Azure OpenAI Service に対して直接使用している場合、プロジェクトは、Azure OpenAI Service 機能を他の Azure AI Foundry 機能と共に使用する便利な方法を提供します。

Azure AI モデル推論サービス

Azure AI モデル推論サービスでは、OpenAI、Microsoft、Meta などの大手プロバイダーから強力なモデルへのアクセスが提供されます。 これらのモデルは、コンテンツの生成、要約、コード生成などのタスクをサポートします。

モデル推論サービスを使用するには、まず、(管理センター内に) プロジェクトの AI サービス接続があることを確認します。

azure-ai-inference クライアント ライブラリをインストールします。

pip install azure-ai-inference

プロジェクト クライアントを使用して、構成および認証された ChatCompletionsClient または EmbeddingsClient を取得できます。

# 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",
    messages=[
        {"role": "system", "content": "You are a helpful writing assistant"},
        {"role": "user", "content": "Write me a poem about flowers"},
    ]
)

print(response.choices[0].message.content)
dotnet add package Azure.AI.Inference

using ステートメントを追加します。

using Azure.AI.Inference;

プロジェクト クライアントを使用して、構成および認証された ChatCompletionsClient または EmbeddingsClient を取得できます。

var connectionString = Environment.GetEnvironmentVariable("AIPROJECT_CONNECTION_STRING");
var projectClient = new AIProjectClient(connectionString, new DefaultAzureCredential());

ChatCompletionsClient chatClient = projectClient.GetChatCompletionsClient();

var requestOptions = new ChatCompletionsOptions()
{
    Messages =
        {
            new ChatRequestSystemMessage("You are a helpful assistant."),
            new ChatRequestUserMessage("How many feet are in a mile?"),
        },
    Model = "gpt-4o-mini"
};

Response<ChatCompletions> response = chatClient.Complete(requestOptions);
Console.WriteLine(response.Value.Content);

モデル名は、推論サービスまたは Azure OpenAI Service にデプロイした任意のモデルに変更できます。

Azure AI 推論クライアントの使用の詳細については、Azure AI モデル推論リファレンスを参照してください。

プロンプト テンプレート

推論クライアントでは、テンプレートからのプロンプト メッセージの作成がサポートされています。 このテンプレートを使用すると、実行時に使用可能な入力を使用して、プロンプトを動的に生成できます。

プロンプト テンプレートを使用するには、azure-ai-inference パッケージをインストールします。

pip install azure-ai-inference

インライン文字列からプロンプト テンプレートをレンダリングできます。

from azure.ai.inference.prompts import PromptTemplate

# create a prompt template from an inline string (using mustache syntax)
prompt_template = PromptTemplate.from_string(prompt_template="""
    system:
    You are a helpful writing assistant.
    The user's first name is {{first_name}} and their last name is {{last_name}}.

    user:
    Write me a poem about flowers
    """)

# generate system message from the template, passing in the context as variables
messages = prompt_template.create_messages(first_name="Jane", last_name="Doe")
print(messages)

Note

先頭の空白は、入力文字列から自動的にトリミングされます。

このコードによりメッセージが出力され、それをチャット入力候補呼び出しに渡すことができます。

[
  {'role': 'system', 'content': "You are a helpful writing assistant.\nThe user's first name is Jane and their last name is Doe."}
  {'role': 'user', 'content': 'Write me a poem about flowers'}
]

Prompty ファイルからプロンプトを読み込むこともできます。これにより、.prompty ファイルからモデル名とパラメーターを読み込むこともできます。

from azure.ai.inference.prompts import PromptTemplate

prompt_template = PromptTemplate.from_prompty("myprompt.prompty")
messages = prompt_template.create_messages(first_name="Jane", last_name="Doe")

response = chat.complete(
    messages=messages,
    model=prompt_template.model_name,
    **prompt_template.parameters,
)

プロジェクトに Azure AI 検索リソースが接続されている場合は、プロジェクト クライアントを使用して、プロジェクト接続を使用して Azure AI 検索クライアントを作成することもできます。

Azure AI 検索クライアント ライブラリをインストールします。

pip install azure-search-documents

必要に応じて、検索および検索インデックス クライアントをインスタンス化します。

from azure.core.credentials import AzureKeyCredential
from azure.ai.projects.models import ConnectionType
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient

# use the project client to get the default search connection
search_connection = project.connections.get_default(
    connection_type=ConnectionType.AZURE_AI_SEARCH,
    with_credentials=True)

# Create a client to create and manage search indexes
index_client = SearchIndexClient(
    endpoint=search_connection.endpoint_url,
    credential=AzureKeyCredential(key=search_connection.key)
)

# Create a client to run search queries
search_client = SearchClient(
    index_name="your_index_name",
    endpoint=search_connection.endpoint_url,
    credential=AzureKeyCredential(key=search_connection.key)
)
dotnet add package Azure.Search.Documents

using ステートメントを追加します。

using Azure.Search.Documents;
using Azure.Search.Documents.Models;

必要に応じて、検索および検索インデックス クライアントをインスタンス化します。

var connections = projectClient.GetConnectionsClient();
var connection = connections.GetDefaultConnection(ConnectionType.AzureAISearch, withCredential: true).Value;

var properties = connection.Properties as ConnectionPropertiesApiKeyAuth;
if (properties == null) {
    throw new Exception("Invalid auth type, expected API key auth");
}

SearchClient searchClient = new SearchClient(
    new Uri(properties.Target),
    "products",
    new AzureKeyCredential(properties.Credentials.Key));

Azure AI 検索の使用方法の詳細については、Azure AI 検索のドキュメントを参照してください。

Azure AI エージェント サービス

Azure AI Agent Service は、開発者が高品質で拡張可能な AI エージェントを安全にビルド、デプロイ、スケーリングできるように設計されたフル マネージド サービスです。 Azure AI Agent Service では、OpenAI、Microsoft、サード パーティ プロバイダーのモデル、ツール、および機能の広範なエコシステムを使用して、さまざまな生成型 AI ユース ケース用のエージェントを構築できます。

エージェントにアクセスするには、プレビューにサインアップしてください

評価

プロジェクト クライアントを使用すると、Azure AI 評価サービスと、エバリュエータの実行に必要なモデルに簡単に接続できます。

pip install azure-ai-evaluation

project.scope パラメーターを使用して、ViolenceEvaluator をインスタンス化できます。

from azure.ai.evaluation import ViolenceEvaluator
from azure.identity import DefaultAzureCredential

# Initializing Violence Evaluator with project information
violence_eval = ViolenceEvaluator(
    azure_ai_project=project.scope,
    credential=DefaultAzureCredential())

# Running Violence Evaluator on single input row
violence_score = violence_eval(query="what's the capital of france", response="Paris")
print(violence_score)

注: 暴力性エバリュエータを実行するには、プロジェクトが米国東部 2、スウェーデン中部、米国中北部、フランス中部にある必要があります。

詳細については、SDK を使用した評価に関するページを参照してください。

Azure AI 評価パッケージは、C# ではまだ使用できません。 評価に Prompty と Semantic Kernel を使う方法のサンプルについては、contoso-chat-csharp-prompty サンプルを参照してください。

トレース

トレースを有効にするには、まず、プロジェクトに Application Insights リソースがアタッチされていることを確認します。 プロジェクトの [トレース] ページに移動し、手順に従って Application Insights を作成またはアタッチします。

Azure Monitor OpenTelemetry パッケージをインストールします。

pip install azure-monitor-opentelemetry

次のコードを使用して、Azure AI 推論 SDK のインストルメンテーションと AI プロジェクトへのログ記録を有効にします。

from azure.monitor.opentelemetry import configure_azure_monitor

# Enable instrumentation of AI packages (inference, agents, openai, langchain)
project.telemetry.enable()

# Log traces to the project's application insights resource
application_insights_connection_string = project.telemetry.get_connection_string()
if application_insights_connection_string:
    configure_azure_monitor(connection_string=application_insights_connection_string)

トレースはまだプロジェクト パッケージに統合されていません。 Azure AI Inferencing パッケージからトレースをインストルメント化してログする方法については、azure-sdk-for-dotnet を参照してください。

Azure AI Foundry SDK で使用できる他のサービスとフレームワークへの便利なリンクを次に示します。

Azure AI Services

クライアント ライブラリ:

管理ライブラリ:

フレームワーク

Azure Machine Learning

プロンプト フロー

セマンティック カーネル