Azure FunctionsでOpenAIのAPIを使ってChatGPTに質問する方法 - 環境変数の設定手順付き

## Azure FunctionsでOpenAIのAPIを使ってChatGPTを呼び出す方法

この記事では、**Azure Functions**を使用して、OpenAIのAPIを使い、ChatGPTから回答を得る方法を紹介します。特に、Azure Functionsの環境変数に`OPENAI_API_KEY`を登録し、APIキーを安全に管理する方法について説明します。

### 概要

Azure Functionsは、イベント駆動型のサーバーレスコンピューティングサービスです。ここでは、Azure FunctionsからOpenAI APIを呼び出して、ChatGPTから回答を取得する例を紹介します。OpenAI APIを利用するには、APIキーを環境変数として設定する必要があります。

以下のコードは、OpenAI APIを使用してChatGPTのAPIにリクエストを送信するシンプルな例です。

```python
import azure.functions as func
import logging
from openai import OpenAI

# Azure Function App
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)

@app.route(route="openai_trigger")
def openai_trigger(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    # OpenAIクライアントの初期化
    client = OpenAI()

    # リクエストから名前を取得
    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    # OpenAI APIを呼び出すためのメッセージを定義
    if name:
        message_content = f"Write a haiku about {name} in programming."
    else:
        message_content = "Write a haiku about recursion in programming."

    try:
        # OpenAI API呼び出し
        completion = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": message_content}
            ]
        )

        # OpenAIの結果からメッセージを取得
        openai_response = completion.choices[0].message.content
        
        # 結果をHTTPレスポンスとして返す
        return func.HttpResponse(f"OpenAI response: {openai_response}", status_code=200)

    except Exception as e:
        logging.error(f"Error calling OpenAI API: {e}")
        return func.HttpResponse(f"Failed to get response from OpenAI: {str(e)}", status_code=500)
```

詳細なAPIの呼び出し方は、[こちらの公式ドキュメント](https://platform.openai.com/docs/quickstart)をご覧ください。

### 環境変数に`OPENAI_API_KEY`を設定する理由

OpenAIのAPIを利用するためには、認証用のAPIキーが必要です。APIキーはコード内に直接埋め込むのではなく、**環境変数**として設定することが推奨されています。これにより、セキュリティが強化され、キーがコードから漏洩するリスクを避けることができます。

次に、Azure Functionsの環境変数に`OPENAI_API_KEY`を追加する手順を説明します。

### Azure Functionsで環境変数`OPENAI_API_KEY`を追加する手順

1. **Azureポータルにサインイン**  
   [Azureポータル](https://portal.azure.com)にサインインします。

2. **Azure Functionsアプリを選択**  
   サインイン後、対象の**Azure Functions**アプリケーションを選択します。

3. **構成に移動**  
   Azure Functionsのメイン画面に移動したら、左側のメニューで「**設定**」セクションにある「**構成**」をクリックします。

4. **新しいアプリケーション設定を追加**  
   構成ページの「アプリケーション設定」セクションで、「**+ 新しいアプリケーション設定**」をクリックします。

5. **環境変数の詳細を入力**  
   新しい設定を追加するウィンドウが表示されたら、以下のように設定します：
   
   - **名前**: `OPENAI_API_KEY`
   - **値**: OpenAIのAPIキー（[OpenAIダッシュボード](https://platform.openai.com/)から取得）

   入力後、「OK」をクリックします。

6. **変更を保存**  
   「保存」ボタンをクリックして、変更を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529836/d4b3d6ce-e22c-8593-4071-0fb33b55378f.png)

7. **Azure Functionsを再起動**  
   環境変数の変更が反映されるように、Azure Functionsアプリケーションを再起動します。再起動は「概要」ページの「再起動」ボタンから行います。

これで、Azure Functionsで安全にAPIキーを管理し、OpenAI APIにアクセスできるようになります。

### 結論

Azure Functionsを利用してOpenAI APIを呼び出す場合、APIキーを環境変数として設定することがセキュリティ上のベストプラクティスです。環境変数を使うことで、コードを安全に保ちつつ、ChatGPTのようなAIモデルを簡単に利用できるようになります。