次の方法で共有


Azure AI Foundry SDK を使用して Python で基本的なチャット アプリを構築する

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

このクイックスタートでは、Azure AI Foundry SDK を使用してローカル開発環境を設定する方法について説明します。 プロンプトを記述し、それをアプリ コードの一部として実行し、実行されている LLM 呼び出しをトレースし、LLM の出力に対して基本的な評価を実行します。

前提条件

Azure CLI をインストールしてサインインする

ユーザー資格情報を使用して Azure OpenAI Service を呼び出すことができるように、Azure CLI をインストールしてローカル開発環境からサインインします。

ほとんどの場合は、次のコマンドを使用して、ターミナルから Azure CLI をインストールできます。

winget install -e --id Microsoft.AzureCLI

これらのコマンドが特定のオペレーティング システムまたはセットアップで機能しない場合は、Azure CLI をインストールする方法の手順に従うことができます。

Azure CLI をインストールしたら、以下のように az login コマンドを使用してサインインし、ブラウザーを使用してサインインします。

az login

または、デバイス コードを使用してブラウザーから手動でログインすることもできます。

az login --use-device-code

新しい Python 環境を作成する

このチュートリアルに必要なパッケージのインストールに使用される、新しい Python 環境を最初に作成する必要があります。 グローバル Python インストールにパッケージをインストールしないでください。 Python パッケージをインストールするときは、常に仮想環境または conda 環境を使用する必要があります。そうしないと、Python のグローバル インストールが中断される場合があります。

必要に応じて Python をインストールする

Python 3.10 以降を使用することをお勧めしますが、少なくとも Python 3.8 が必要です。 適切なバージョンの Python がインストールされていない場合は、オペレーティング システムへの Python のインストールの最も簡単な方法として、VS Code Python チュートリアルの手順に従うことができます。

仮想環境を作成する

Python 3.10 以降が既にインストールされている場合は、次のコマンドを使用して仮想環境を作成できます:

py -3 -m venv .venv
.venv\scripts\activate

Python 環境をアクティブ化するということは、コマンド ラインから python または pip を実行する際に、アプリケーションの .venv フォルダーに含まれている Python インタープリターを使用するということを意味します。

Note

deactivate コマンドを使用して Python 仮想環境を終了し、必要に応じて、それを後で再アクティブ化できます。

パッケージをインストールする

azure-ai-projects (プレビュー)、azure-ai-inference (プレビュー)、azure-identity パッケージをインストールします。

pip install azure-ai-projects azure-ai-inference azure-identity 

チャット アプリをビルドする

chat.py という名前のファイルを作成します。 次のコードをコピーしてそれに貼り付けます。

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

project_connection_string = "<your-connection-string-goes-here>"

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

chat = project.inference.get_chat_completions_client()
response = chat.complete(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "system",
            "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?",
        },
        {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."},
    ],
)

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

接続文字列を挿入する

Azure OpenAI Service をコードから呼び出すには、プロジェクト接続文字列が必要です。

AI Foundry プレイグラウンドのクイックスタートで作成した Azure AI Foundry プロジェクト内で接続文字列を見つけます。 プロジェクトを開いて、[概要] ページで接続文字列を見つけます。

プロジェクトの概要ページと接続文字列の場所を示すスクリーンショット。

接続文字列をコピーし、chat.py ファイル内の <your-connection-string-goes-here> を置き換えます。

チャット スクリプトを実行する

スクリプトを実行して、モデルからの応答を確認します。

python chat.py

ユーザーによる入力とプロンプト テンプレートからプロンプトを生成する

このスクリプトでは、ハードコーディングされた入力および出力メッセージが使用されます。 実際のアプリでは、クライアント アプリケーションから入力を受け取り、モデルへの内部命令を含むシステム メッセージを生成し、すべてのメッセージで LLM を呼び出します。

クライアント アプリケーションから入力を受け取り、プロンプト テンプレートを使用してシステム メッセージを生成するようにスクリプトを変更しましょう。

  1. 応答を出力するスクリプトの最後の行を削除します。

  2. 次に、メッセージとコンテキストを受け取り、プロンプト テンプレートを使用してシステム メッセージを生成し、モデルを呼び出す get_chat_response 関数を定義します。 既存の chat.py ファイルに次のコードを追加します。

    from azure.ai.inference.prompts import PromptTemplate
    
    
    def get_chat_response(messages, context):
        # create a prompt template from an inline string (using mustache syntax)
        prompt_template = PromptTemplate.from_string(
            prompt_template="""
            system:
            You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun.
    
            The user's first name is {{first_name}} and their last name is {{last_name}}.
            """
        )
    
        # generate system message from the template, passing in the context as variables
        system_message = prompt_template.create_messages(data=context)
    
        # add the prompt messages to the user messages
        response = chat.complete(
            model="gpt-4o-mini",
            messages=system_message + messages,
            temperature=1,
            frequency_penalty=0.5,
            presence_penalty=0.5,
        )
    
        return response
    

    Note

    プロンプト テンプレートでは mustache 形式が使用されます。

    get_chat_response 関数は、FastAPI または Flask アプリへのルートとして簡単に追加でき、フロントエンド Web アプリケーションからこの関数を呼び出すことができます。

  3. 次に、フロントエンド アプリケーションからこの関数への情報の受け渡しをシミュレートします。 chat.py ファイルの末尾に次のコードを追加します。 メッセージに自分の名前を入れたりして、自由に遊んでみてください。

    if __name__ == "__main__":
        response = get_chat_response(
            messages=[{"role": "user", "content": "what city has the best food in the world?"}],
            context={"first_name": "Jessie", "last_name": "Irwin"},
        )
        print(response.choices[0].message.content)
    

修正したスクリプトを実行して、この新しい入力を使用してモデルからの応答を確認します。

python chat.py

次のステップ