مشاركة عبر


مساعد Azure OpenAI بعد ربط الإدخال لوظائف Azure

هام

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

يتيح لك ربط الإدخال اللاحق لمساعد Azure OpenAI إرسال مطالبات إلى روبوتات الدردشة المساعدة.

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

إشعار

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

إشعار

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

إشعار

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

مثال

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة HTTP POST التي ترسل مطالبة المستخدم إلى روبوت الدردشة المساعد. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
    return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة HTTP POST التي ترسل مطالبة المستخدم إلى روبوت الدردشة المساعد. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.POST}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        
        List<AssistantMessage> recentMessages = state.getRecentMessages();
        String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
        
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response)
            .build();
}

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة HTTP POST التي ترسل مطالبة المستخدم إلى روبوت الدردشة المساعد. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

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

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState: any = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة HTTP POST التي ترسل مطالبة المستخدم إلى روبوت الدردشة المساعد. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

فيما يلي ملف function.json لنشر استعلام المستخدم:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantPost",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "userMessage": "{Query.message}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

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

using namespace System.Net

param($Request, $TriggerMetadata, $State)

$recent_message_content = "No recent messages!"

if ($State.recentMessages.Count -gt 0) {
    $recent_message_content = $State.recentMessages[0].content
}

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body       = $recent_message_content
    Headers    = @{
        "Content-Type" = "text/plain"
    }
})

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة HTTP POST التي ترسل مطالبة المستخدم إلى روبوت الدردشة المساعد. يتم إرجاع الاستجابة إلى المطالبة في استجابة HTTP.

@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
    arg_name="state",
    id="{assistantId}",
    user_message="{Query.message}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
    collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
    # Parse the JSON string into a dictionary
    data = json.loads(state)

    # Extract the content of the recentMessage
    recent_message_content = data["recentMessages"][0]["content"]
    return func.HttpResponse(
        recent_message_content, status_code=200, mimetype="text/plain"
    )

السمات

تطبيق السمة PostUserQuery لتعريف ربط إدخال آخر مساعد، والذي يدعم هذه المعلمات:

المعلمة ‏‏الوصف‬
معرّف معرف المساعد المراد تحديثه.
رسالة المستخدم الحصول على رسالة المستخدم أو تعيينها لنموذج إكمال الدردشة، مرمزة كسلسلة.
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.

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

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

العنصر ‏‏الوصف‬
الاسم اسم ربط الإخراج.
معرف معرف المساعد المراد تحديثه.
رسالة المستخدم الحصول على رسالة المستخدم أو تعيينها لنموذج إكمال الدردشة، مرمزة كسلسلة.
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_output_binding من النوع postUserQuery، والذي يدعم هذه المعلمات:

المعلمة ‏‏الوصف‬
arg_name اسم المتغير الذي يمثل معلمة الربط.
معرف معرف المساعد المراد تحديثه.
user_message الحصول على رسالة المستخدم أو تعيينها لنموذج إكمال الدردشة، مرمزة كسلسلة.
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.

الخاصية ‏‏الوصف‬
النوع يجب أن يكونPostUserQuery.
الاتجاه يجب أن يكونout.
الاسم اسم ربط الإخراج.
معرف معرف المساعد المراد تحديثه.
رسالة المستخدم الحصول على رسالة المستخدم أو تعيينها لنموذج إكمال الدردشة، مرمزة كسلسلة.
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 للحصول على أمثلة كاملة.