ربط إدخال إكمال نص Azure OpenAI لوظائف Azure

هام

ملحق Azure OpenAI ل Azure Functions قيد المعاينة حاليا.

يسمح لك ربط إدخال إكمال نص Azure OpenAI بإحضار واجهات برمجة التطبيقات الخاصة بإكمال نص النتائج في عمليات تنفيذ التعليمات البرمجية. يمكنك تعريف الربط لاستخدام كل من المطالبات المعرفة مسبقا مع المعلمات أو المرور عبر مطالبة بأكملها.

للحصول على معلومات حول تفاصيل الإعداد والتكوين لملحق Azure OpenAI، راجع ملحقات Azure OpenAI لوظائف Azure. لمعرفة المزيد حول إكمال Azure OpenAI، راجع التعرف على كيفية إنشاء النص أو معالجته.

إشعار

يتم توفير المراجع والأمثلة فقط لنموذج Node.js v4.

إشعار

يتم توفير المراجع والأمثلة فقط لنموذج Python v2.

إشعار

بينما يتم دعم نموذجي عملية C#، يتم توفير أمثلة نموذج عامل معزول فقط.

مثال

يوضح هذا المثال نمط القالب ، حيث تأخذ دالة مشغل HTTP معلمة name وتدمجها في مطالبة نصية، والتي يتم إرسالها بعد ذلك إلى واجهة برمجة تطبيقات إكمال Azure OpenAI بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

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

/// <summary>

يأخذ هذا المثال مطالبة كمدخل، ويرسلها مباشرة إلى واجهة برمجة تطبيقات الإكمال، ويعيد الاستجابة كإخراج.

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

يوضح هذا المثال نمط القالب ، حيث تأخذ دالة مشغل HTTP معلمة name وتدمجها في مطالبة نصية، والتي يتم إرسالها بعد ذلك إلى واجهة برمجة تطبيقات إكمال Azure OpenAI بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

يأخذ هذا المثال مطالبة كمدخل، ويرسلها مباشرة إلى واجهة برمجة تطبيقات الإكمال، ويعيد الاستجابة كإخراج.

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

يوضح هذا المثال نمط القالب ، حيث تأخذ دالة مشغل HTTP معلمة name وتدمجها في مطالبة نصية، والتي يتم إرسالها بعد ذلك إلى واجهة برمجة تطبيقات إكمال Azure OpenAI بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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',
    model: '%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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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',
    model: '%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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

فيما يلي ملف function.json ل 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",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

لمزيد من المعلومات حول خصائص الملف function.json ، راجع قسم التكوين .

ترجع التعليمات البرمجية ببساطة النص من واجهة برمجة تطبيقات الإكمال كاستجابة:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

يوضح هذا المثال نمط القالب ، حيث تأخذ دالة مشغل HTTP معلمة name وتدمجها في مطالبة نصية، والتي يتم إرسالها بعد ذلك إلى واجهة برمجة تطبيقات إكمال Azure OpenAI بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", 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)

يأخذ هذا المثال مطالبة كمدخل، ويرسلها مباشرة إلى واجهة برمجة تطبيقات الإكمال، ويعيد الاستجابة كإخراج.

@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(arg_name="response", prompt="{Prompt}", 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 لتعريف ربط إدخال إكمال النص.

تدعم السمة هذه المعلمات:

المعلمة ‏‏الوصف‬
المطالبة الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
النموذج يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي gpt-3.5-turbo.
درجة الحرارة اختياري. يحصل أو يعين درجة حرارة أخذ العينات لاستخدامها، كسلسلة بين 0 و 2. تجعل القيم الأعلى (0.8) الإخراج أكثر عشوائية، بينما تجعل القيم الأقل مثل (0.2) الإخراج أكثر تركيزا وحسما. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
TopP اختياري. الحصول على أو تعيين بديل لأخذ العينات مع درجة الحرارة، تسمى أخذ عينات النواة، كسلسلة. في طريقة أخذ العينات هذه، يأخذ النموذج في الاعتبار نتائج الرموز المميزة مع top_p كتلة الاحتمال. ويعني ذلك 0.1 أن الرموز المميزة التي تتألف من كتلة الاحتمال الأعلى بنسبة 10٪ فقط هي التي يتم أخذها بعين الاعتبار. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
الرموز المميزة القصوى اختياري. الحصول على الحد الأقصى لعدد الرموز المميزة أو تعيينها لإنشاء في الإكمال، كسلسلة مع افتراضي من 100. لا يمكن أن يتجاوز عدد الرموز المميزة لمطالبتك بالإضافة إلى max_tokens طول سياق النموذج. تحتوي معظم النماذج على طول سياق يبلغ 2048 رمزا مميزا (باستثناء أحدث النماذج، والتي تدعم 4096).

تعليقات توضيحية

TextCompletion يمكنك التعليق التوضيحي من تحديد ربط إدخال إكمال النص، والذي يدعم هذه المعلمات:

العنصر ‏‏الوصف‬
الاسم الحصول على اسم ربط الإدخال أو تعيينه.
prompt الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
النموذج يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي gpt-3.5-turbo.
درجة الحرارة اختياري. يحصل أو يعين درجة حرارة أخذ العينات لاستخدامها، كسلسلة بين 0 و 2. تجعل القيم الأعلى (0.8) الإخراج أكثر عشوائية، بينما تجعل القيم الأقل مثل (0.2) الإخراج أكثر تركيزا وحسما. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
topP اختياري. الحصول على أو تعيين بديل لأخذ العينات مع درجة الحرارة، تسمى أخذ عينات النواة، كسلسلة. في طريقة أخذ العينات هذه، يأخذ النموذج في الاعتبار نتائج الرموز المميزة مع top_p كتلة الاحتمال. ويعني ذلك 0.1 أن الرموز المميزة التي تتألف من كتلة الاحتمال الأعلى بنسبة 10٪ فقط هي التي يتم أخذها بعين الاعتبار. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
الرموز المميزة القصوى اختياري. الحصول على الحد الأقصى لعدد الرموز المميزة أو تعيينها لإنشاء في الإكمال، كسلسلة مع افتراضي من 100. لا يمكن أن يتجاوز عدد الرموز المميزة لمطالبتك بالإضافة إلى max_tokens طول سياق النموذج. تحتوي معظم النماذج على طول سياق يبلغ 2048 رمزا مميزا (باستثناء أحدث النماذج، والتي تدعم 4096).

الديكور

أثناء المعاينة، حدد ربط الإدخال كربط generic_input_binding من النوع textCompletion، والذي يدعم هذه المعلمات:

المعلمة ‏‏الوصف‬
arg_name اسم المتغير الذي يمثل معلمة الربط.
prompt الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
النموذج يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي gpt-3.5-turbo.
درجة الحرارة اختياري. يحصل أو يعين درجة حرارة أخذ العينات لاستخدامها، كسلسلة بين 0 و 2. تجعل القيم الأعلى (0.8) الإخراج أكثر عشوائية، بينما تجعل القيم الأقل مثل (0.2) الإخراج أكثر تركيزا وحسما. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
top_p اختياري. الحصول على أو تعيين بديل لأخذ العينات مع درجة الحرارة، تسمى أخذ عينات النواة، كسلسلة. في طريقة أخذ العينات هذه، يأخذ النموذج في الاعتبار نتائج الرموز المميزة مع top_p كتلة الاحتمال. ويعني ذلك 0.1 أن الرموز المميزة التي تتألف من كتلة الاحتمال الأعلى بنسبة 10٪ فقط هي التي يتم أخذها بعين الاعتبار. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
max_tokens اختياري. الحصول على الحد الأقصى لعدد الرموز المميزة أو تعيينها لإنشاء في الإكمال، كسلسلة مع افتراضي من 100. لا يمكن أن يتجاوز عدد الرموز المميزة لمطالبتك بالإضافة إلى max_tokens طول سياق النموذج. تحتوي معظم النماذج على طول سياق يبلغ 2048 رمزا مميزا (باستثناء أحدث النماذج، والتي تدعم 4096).

التكوين

يدعم الربط خصائص التكوين هذه التي قمت بتعيينها في ملف function.json.

الخاصية الوصف
النوع يجب أن يكونtextCompletion.
الاتجاه يجب أن يكونin.
الاسم اسم ربط الإدخال.
prompt الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
النموذج يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي gpt-3.5-turbo.
درجة الحرارة اختياري. يحصل أو يعين درجة حرارة أخذ العينات لاستخدامها، كسلسلة بين 0 و 2. تجعل القيم الأعلى (0.8) الإخراج أكثر عشوائية، بينما تجعل القيم الأقل مثل (0.2) الإخراج أكثر تركيزا وحسما. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
topP اختياري. الحصول على أو تعيين بديل لأخذ العينات مع درجة الحرارة، تسمى أخذ عينات النواة، كسلسلة. في طريقة أخذ العينات هذه، يأخذ النموذج في الاعتبار نتائج الرموز المميزة مع top_p كتلة الاحتمال. ويعني ذلك 0.1 أن الرموز المميزة التي تتألف من كتلة الاحتمال الأعلى بنسبة 10٪ فقط هي التي يتم أخذها بعين الاعتبار. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
الرموز المميزة القصوى اختياري. الحصول على الحد الأقصى لعدد الرموز المميزة أو تعيينها لإنشاء في الإكمال، كسلسلة مع افتراضي من 100. لا يمكن أن يتجاوز عدد الرموز المميزة لمطالبتك بالإضافة إلى max_tokens طول سياق النموذج. تحتوي معظم النماذج على طول سياق يبلغ 2048 رمزا مميزا (باستثناء أحدث النماذج، والتي تدعم 4096).

التكوين

يدعم الربط هذه الخصائص، والتي يتم تعريفها في التعليمات البرمجية الخاصة بك:

الخاصية ‏‏الوصف
prompt الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
النموذج يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي gpt-3.5-turbo.
درجة الحرارة اختياري. يحصل أو يعين درجة حرارة أخذ العينات لاستخدامها، كسلسلة بين 0 و 2. تجعل القيم الأعلى (0.8) الإخراج أكثر عشوائية، بينما تجعل القيم الأقل مثل (0.2) الإخراج أكثر تركيزا وحسما. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
topP اختياري. الحصول على أو تعيين بديل لأخذ العينات مع درجة الحرارة، تسمى أخذ عينات النواة، كسلسلة. في طريقة أخذ العينات هذه، يأخذ النموذج في الاعتبار نتائج الرموز المميزة مع top_p كتلة الاحتمال. ويعني ذلك 0.1 أن الرموز المميزة التي تتألف من كتلة الاحتمال الأعلى بنسبة 10٪ فقط هي التي يتم أخذها بعين الاعتبار. يجب استخدام إما Temperature أو TopP، ولكن ليس كليهما.
الرموز المميزة القصوى اختياري. الحصول على الحد الأقصى لعدد الرموز المميزة أو تعيينها لإنشاء في الإكمال، كسلسلة مع افتراضي من 100. لا يمكن أن يتجاوز عدد الرموز المميزة لمطالبتك بالإضافة إلى max_tokens طول سياق النموذج. تحتوي معظم النماذج على طول سياق يبلغ 2048 رمزا مميزا (باستثناء أحدث النماذج، والتي تدعم 4096).

الاستخدام

راجع قسم Example للحصول على أمثلة كاملة.