次の方法で共有


Azure Functions 用の Azure OpenAI テキスト補完入力バインド

Von Bedeutung

現在、Azure Functions 用の Azure OpenAI 拡張機能はプレビュー段階です。

Azure OpenAI テキスト補完入力バインドを使用すると、結果テキスト入力候補 API をコード実行に取り込みます。 パラメーターで両方の定義済みプロンプトを使用するか、プロンプト全体を渡すバインディングを定義できます。

Azure OpenAI 拡張機能のセットアップと構成の詳細については、「Azure Functions 用の Azure OpenAI 拡張機能」を参照してください。 Azure OpenAI の入力候補の詳細については、「 テキストを生成または操作する方法」を参照してください。

リファレンスと例は、Node.js v4 モデルに対してのみ提供されています。

リファレンスと例は、Python v2 モデルに対してのみ提供されます。

両方の C# プロセス モデルがサポートされていますが、 isolated worker モデル 例のみが提供されます。

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
    [HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
    [TextCompletionInput("Who is {name}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

この例では、プロンプトを入力として受け取り、入力候補 API に直接送信し、応答を出力として返します。

[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
    ILogger log)
{
    string text = response.Content;
    return new OkObjectResult(text);
}

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.GET},
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

この例では、プロンプトを入力として受け取り、入力候補 API に直接送信し、応答を出力として返します。

@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

const { app, input } = require("@azure/functions");

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

import { app, input } from "@azure/functions";

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response: any = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

TextCompletionResponse ファイルを次に示します。

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "whois/{name}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "textCompletion",
      "direction": "in",
      "name": "TextCompletionResponse",
      "prompt": "Who is {name}?",
      "maxTokens": "100",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

function.json ファイルのプロパティについて詳しくは、「構成」セクションをご覧ください。

このコードは、応答として入力候補 API からテキストを返すだけです。

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $TextCompletionResponse.Content
    })

この例では、テンプレート パターン 示します。このパターンでは、HTTP トリガー関数が name パラメーターを受け取り、それをテキスト プロンプトに埋め込み、拡張機能によって Azure OpenAI 入力候補 API に送信します。 プロンプトに対する応答は HTTP 応答で返されます。

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(
    arg_name="response",
    prompt="Who is {name}?",
    max_tokens="100",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

この例では、プロンプトを入力として受け取り、入力候補 API に直接送信し、応答を出力として返します。

@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(
    arg_name="response",
    prompt="{Prompt}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def genericcompletion(
    req: func.HttpRequest,
    response: str
) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

属性

テキスト補完入力バインドを定義するために適用する特定の属性は、C# プロセス モードによって異なります。

分離ワーカー モデルで、TextCompletionInputを適用してテキスト補完入力バインドを定義します。

この属性は、次のパラメーターをサポートしています。

パラメーター 説明
プロンプト 文字列としてエンコードされた入力候補を生成するプロンプトを取得または設定します。
AIConnectionName オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。
ChatModel オプション。 既定値の gpt-3.5-turbo を使用して、文字列として使用するモデルの ID を取得または設定します。
気温 オプション02の間の文字列として、使用するサンプリング温度を取得または設定します。 値が大きいほど (0.8) 出力がランダムになり、(0.2) などの値が小さいほど出力のフォーカスが高くなり、決定論的になります。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
TopP オプション。 温度を使用したサンプリングの代替手段を取得または設定します。これは、核サンプリングと呼ばれ、文字列として設定されます。 このサンプリング方法では、モデルは top_p 確率質量を持つトークンの結果を考慮します。 したがって、 0.1 は、上位 10 個の% 確率質量を含むトークンのみが考慮されていることを意味します。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
MaxTokens オプション。 既定の 100 を持つ文字列として、完了時に生成するトークンの最大数を取得または設定します。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。 ほとんどのモデルのコンテキスト長は 2,048 トークンです (4096 をサポートする最新のモデルを除く)。
IsReasoningModel オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。

注釈

TextCompletion注釈を使用すると、次のパラメーターをサポートするテキスト補完入力バインドを定義できます。

要素 説明
名前 入力バインドの名前を取得または設定します。
プロンプト 文字列としてエンコードされた入力候補を生成するプロンプトを取得または設定します。
aiConnectionName オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。
chatModel 既定値の gpt-3.5-turbo を使用して、文字列として使用するモデルの ID を取得または設定します。
温度 オプション02の間の文字列として、使用するサンプリング温度を取得または設定します。 値が大きいほど (0.8) 出力がランダムになり、(0.2) などの値が小さいほど出力のフォーカスが高くなり、決定論的になります。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
topP オプション。 温度を使用したサンプリングの代替手段を取得または設定します。これは、核サンプリングと呼ばれ、文字列として設定されます。 このサンプリング方法では、モデルは top_p 確率質量を持つトークンの結果を考慮します。 したがって、 0.1 は、上位 10 個の% 確率質量を含むトークンのみが考慮されていることを意味します。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
maxTokens オプション。 既定の 100 を持つ文字列として、完了時に生成するトークンの最大数を取得または設定します。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。 ほとんどのモデルのコンテキスト長は 2,048 トークンです (4096 をサポートする最新のモデルを除く)。
isReasoningModel オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。

デコレータ

プレビュー中に、入力バインドを次のパラメーターをサポートする generic_input_binding 型の textCompletion バインドとして定義します。

パラメーター 説明
arg_name バインド パラメーターを表す変数の名前。
プロンプト 文字列としてエンコードされた入力候補を生成するプロンプトを取得または設定します。
ai_connection_name オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。
chat_model 既定値の gpt-3.5-turbo を使用して、文字列として使用するモデルの ID を取得または設定します。
温度 オプション02の間の文字列として、使用するサンプリング温度を取得または設定します。 値が大きいほど (0.8) 出力がランダムになり、(0.2) などの値が小さいほど出力のフォーカスが高くなり、決定論的になります。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
top_p オプション。 温度を使用したサンプリングの代替手段を取得または設定します。これは、核サンプリングと呼ばれ、文字列として設定されます。 このサンプリング方法では、モデルは top_p 確率質量を持つトークンの結果を考慮します。 したがって、 0.1 は、上位 10 個の% 確率質量を含むトークンのみが考慮されていることを意味します。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
max_tokens オプション。 既定の 100 を持つ文字列として、完了時に生成するトークンの最大数を取得または設定します。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。 ほとんどのモデルのコンテキスト長は 2,048 トークンです (4096 をサポートする最新のモデルを除く)。
is_reasoning _model オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。

コンフィギュレーション

このバインドでは、function.json ファイルで設定したこれらの構成プロパティをサポートします。

プロパティ 説明
タイプ textCompletionである必要があります。
方向 inである必要があります。
名前 入力バインドの名前。
プロンプト 文字列としてエンコードされた入力候補を生成するプロンプトを取得または設定します。
aiConnectionName オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。
chatModel 既定値の gpt-3.5-turbo を使用して、文字列として使用するモデルの ID を取得または設定します。
温度 オプション02の間の文字列として、使用するサンプリング温度を取得または設定します。 値が大きいほど (0.8) 出力がランダムになり、(0.2) などの値が小さいほど出力のフォーカスが高くなり、決定論的になります。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
topP オプション。 温度を使用したサンプリングの代替手段を取得または設定します。これは、核サンプリングと呼ばれ、文字列として設定されます。 このサンプリング方法では、モデルは top_p 確率質量を持つトークンの結果を考慮します。 したがって、 0.1 は、上位 10 個の% 確率質量を含むトークンのみが考慮されていることを意味します。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
maxTokens オプション。 既定の 100 を持つ文字列として、完了時に生成するトークンの最大数を取得または設定します。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。 ほとんどのモデルのコンテキスト長は 2,048 トークンです (4096 をサポートする最新のモデルを除く)。
isReasoningModel オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。

コンフィギュレーション

このバインドでは、コードで定義されている、これらのプロパティをサポートします。

プロパティ 説明
プロンプト 文字列としてエンコードされた入力候補を生成するプロンプトを取得または設定します。
aiConnectionName オプション。 AI サービス接続設定の構成セクションの名前を取得または設定します。 Azure OpenAI の場合: 指定した場合は、この構成セクションで "Endpoint" と "Key" の値を探します。 指定されていない場合、またはセクションが存在しない場合は、環境変数 (AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEY) にフォールバックします。 ユーザー割り当てマネージド ID 認証の場合、このプロパティは必須です。 OpenAI サービス (Azure 以外) の場合は、OPENAI_API_KEY環境変数を設定します。
chatModel 既定値の gpt-3.5-turbo を使用して、文字列として使用するモデルの ID を取得または設定します。
温度 オプション02の間の文字列として、使用するサンプリング温度を取得または設定します。 値が大きいほど (0.8) 出力がランダムになり、(0.2) などの値が小さいほど出力のフォーカスが高くなり、決定論的になります。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
topP オプション。 温度を使用したサンプリングの代替手段を取得または設定します。これは、核サンプリングと呼ばれ、文字列として設定されます。 このサンプリング方法では、モデルは top_p 確率質量を持つトークンの結果を考慮します。 したがって、 0.1 は、上位 10 個の% 確率質量を含むトークンのみが考慮されていることを意味します。 TemperatureまたはTopPを使用する必要がありますが、両方は使用しないでください。
maxTokens オプション。 既定の 100 を持つ文字列として、完了時に生成するトークンの最大数を取得または設定します。 プロンプトのトークン数と max_tokens の合計は、モデルのコンテキスト長を超えることはできません。 ほとんどのモデルのコンテキスト長は 2,048 トークンです (4096 をサポートする最新のモデルを除く)。
isReasoningModel オプション。 チャット完了モデルが推論モデルであるかどうかを示す値を取得または設定します。 このオプションは試験段階であり、すべてのモデルが予期されるプロパティにパリティを持ち、既定値が false になるまで推論モデルに関連付けられます。

使用方法

完全な例については、セクションの例を参照してください。