Azure AI Foundry SDK を使用して Python で基本的なチャット アプリを構築する
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
このクイックスタートでは、Azure AI Foundry SDK を使用してローカル開発環境を設定する方法について説明します。 プロンプトを記述し、それをアプリ コードの一部として実行し、実行されている LLM 呼び出しをトレースし、LLM の出力に対して基本的な評価を実行します。
前提条件
- このクイック スタートを始める前に、AI Foundry プレイグラウンドのクイックスタート を完了して、gpt-4o-mini モデルをプロジェクトにデプロイしてください。
Azure CLI をインストールしてサインインする
ユーザー資格情報を使用して Azure OpenAI Service を呼び出すことができるように、Azure CLI をインストールしてローカル開発環境からサインインします。
ほとんどの場合は、次のコマンドを使用して、ターミナルから Azure CLI をインストールできます。
これらのコマンドが特定のオペレーティング システムまたはセットアップで機能しない場合は、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 以降が既にインストールされている場合は、次のコマンドを使用して仮想環境を作成できます:
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 を呼び出します。
クライアント アプリケーションから入力を受け取り、プロンプト テンプレートを使用してシステム メッセージを生成するようにスクリプトを変更しましょう。
応答を出力するスクリプトの最後の行を削除します。
次に、メッセージとコンテキストを受け取り、プロンプト テンプレートを使用してシステム メッセージを生成し、モデルを呼び出す
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 アプリケーションからこの関数を呼び出すことができます。
次に、フロントエンド アプリケーションからこの関数への情報の受け渡しをシミュレートします。 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