مشاركة عبر


ربط إدخال إكمال نص 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}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

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

[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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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();
}

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

@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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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 بواسطة الملحق. يتم إرجاع الاستجابة إلى المطالبة في استجابة 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",
      "chatModel": "%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",
    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)

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

@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 اختياري. الحصول على اسم قسم التكوين أو تعيينه لإعدادات اتصال الخدمة الذكاء الاصطناعي. بالنسبة إلى Azure OpenAI: إذا تم تحديده، يبحث عن قيم "نقطة النهاية" و"المفتاح" في قسم التكوين هذا. إذا لم يتم تحديده أو لم يكن المقطع موجودا، يعود إلى متغيرات البيئة: AZURE_OPENAI_ENDPOINT AZURE_OPENAI_KEY. لمصادقة الهوية المدارة المعينة من قبل المستخدم، هذه الخاصية مطلوبة. بالنسبة لخدمة OpenAI (غير Azure)، قم بتعيين متغير البيئة OPENAI_API_KEY.
ChatModel اختياري. يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي 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).
IsReasoningModel اختياري. الحصول على قيمة تشير إلى ما إذا كان نموذج إكمال الدردشة نموذجا منطقيا أم لا. هذا الخيار تجريبي ومرتبط بنموذج المنطق حتى يكون لجميع النماذج تماثل في الخصائص المتوقعة، بقيمة افتراضية ل false.

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

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

العنصر وصف
الاسم الحصول على اسم ربط الإدخال أو تعيينه.
فوري الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
aiConnectionName اختياري. الحصول على اسم قسم التكوين أو تعيينه لإعدادات اتصال الخدمة الذكاء الاصطناعي. بالنسبة إلى Azure OpenAI: إذا تم تحديده، يبحث عن قيم "نقطة النهاية" و"المفتاح" في قسم التكوين هذا. إذا لم يتم تحديده أو لم يكن المقطع موجودا، يعود إلى متغيرات البيئة: AZURE_OPENAI_ENDPOINT AZURE_OPENAI_KEY. لمصادقة الهوية المدارة المعينة من قبل المستخدم، هذه الخاصية مطلوبة. بالنسبة لخدمة OpenAI (غير Azure)، قم بتعيين متغير البيئة OPENAI_API_KEY.
نموذج الدردشة يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي 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).
isReasoningModel اختياري. الحصول على قيمة تشير إلى ما إذا كان نموذج إكمال الدردشة نموذجا منطقيا أم لا. هذا الخيار تجريبي ومرتبط بنموذج المنطق حتى يكون لجميع النماذج تماثل في الخصائص المتوقعة، بقيمة افتراضية ل false.

الديكور

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

المعلمة وصف
arg_name اسم المتغير الذي يمثل معلمة الربط.
فوري الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
ai_connection_name اختياري. الحصول على اسم قسم التكوين أو تعيينه لإعدادات اتصال الخدمة الذكاء الاصطناعي. بالنسبة إلى Azure OpenAI: إذا تم تحديده، يبحث عن قيم "نقطة النهاية" و"المفتاح" في قسم التكوين هذا. إذا لم يتم تحديده أو لم يكن المقطع موجودا، يعود إلى متغيرات البيئة: AZURE_OPENAI_ENDPOINT AZURE_OPENAI_KEY. لمصادقة الهوية المدارة المعينة من قبل المستخدم، هذه الخاصية مطلوبة. بالنسبة لخدمة OpenAI (غير Azure)، قم بتعيين متغير البيئة OPENAI_API_KEY.
chat_model يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي 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).
is_reasoning _model اختياري. الحصول على قيمة تشير إلى ما إذا كان نموذج إكمال الدردشة نموذجا منطقيا أم لا. هذا الخيار تجريبي ومرتبط بنموذج المنطق حتى يكون لجميع النماذج تماثل في الخصائص المتوقعة، بقيمة افتراضية ل false.

التكوين

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

الخاصية وصف
النوع يجب أن يكونtextCompletion.
الاتجاه يجب أن يكونin.
الاسم اسم ربط الإدخال.
فوري الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
aiConnectionName اختياري. الحصول على اسم قسم التكوين أو تعيينه لإعدادات اتصال الخدمة الذكاء الاصطناعي. بالنسبة إلى Azure OpenAI: إذا تم تحديده، يبحث عن قيم "نقطة النهاية" و"المفتاح" في قسم التكوين هذا. إذا لم يتم تحديده أو لم يكن المقطع موجودا، يعود إلى متغيرات البيئة: AZURE_OPENAI_ENDPOINT AZURE_OPENAI_KEY. لمصادقة الهوية المدارة المعينة من قبل المستخدم، هذه الخاصية مطلوبة. بالنسبة لخدمة OpenAI (غير Azure)، قم بتعيين متغير البيئة OPENAI_API_KEY.
نموذج الدردشة يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي 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).
isReasoningModel اختياري. الحصول على قيمة تشير إلى ما إذا كان نموذج إكمال الدردشة نموذجا منطقيا أم لا. هذا الخيار تجريبي ومرتبط بنموذج المنطق حتى يكون لجميع النماذج تماثل في الخصائص المتوقعة، بقيمة افتراضية ل false.

التكوين

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

الخاصية وصف
فوري الحصول على المطالبة أو تعيينها لإنشاء إكمالات، مرمزة كسلسلة.
aiConnectionName اختياري. الحصول على اسم قسم التكوين أو تعيينه لإعدادات اتصال الخدمة الذكاء الاصطناعي. بالنسبة إلى Azure OpenAI: إذا تم تحديده، يبحث عن قيم "نقطة النهاية" و"المفتاح" في قسم التكوين هذا. إذا لم يتم تحديده أو لم يكن المقطع موجودا، يعود إلى متغيرات البيئة: AZURE_OPENAI_ENDPOINT AZURE_OPENAI_KEY. لمصادقة الهوية المدارة المعينة من قبل المستخدم، هذه الخاصية مطلوبة. بالنسبة لخدمة OpenAI (غير Azure)، قم بتعيين متغير البيئة OPENAI_API_KEY.
نموذج الدردشة يحصل على معرف النموذج أو يعينه لاستخدامه كسلسلة، بقيمة افتراضية هي 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).
isReasoningModel اختياري. الحصول على قيمة تشير إلى ما إذا كان نموذج إكمال الدردشة نموذجا منطقيا أم لا. هذا الخيار تجريبي ومرتبط بنموذج المنطق حتى يكون لجميع النماذج تماثل في الخصائص المتوقعة، بقيمة افتراضية ل false.

الاستخدام

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