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

هام

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

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

للحصول على معلومات حول تفاصيل الإعداد والتكوين لملحق Azure OpenAI، راجع ملحقات Azure OpenAI لوظائف Azure. لمعرفة المزيد حول مساعدي Azure OpenAI، راجع [Azure OpenAI Assistants API](.. /ai-services/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 async Task<IActionResult> PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", Model = "%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.");
}

/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
   [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
   string assistantId,
   [AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{

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

    @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}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}") AssistantState state,
        final ExecutionContext context) {
            
            List<ChatMessage> 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 assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    model: '%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)

يوضح هذا المثال عملية الإنشاء، حيث تقوم وظيفة 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}",
      "model": "%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}", model="%CHAT_MODEL_DEPLOYMENT_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

السمات

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

المعلمة ‏‏الوصف‬
معرّف معرف المساعد المراد تحديثه.
النموذج اسم نموذج دردشة OpenAI المراد استخدامه. بالنسبة إلى Azure OpenAI، هذه القيمة هي اسم نشر النموذج.

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

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

العنصر ‏‏الوصف‬
الاسم اسم ربط الإخراج.
معرف معرف المساعد المراد تحديثه.
النموذج اسم نموذج دردشة OpenAI المراد استخدامه. بالنسبة إلى Azure OpenAI، هذه القيمة هي اسم نشر النموذج.

الديكور

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

المعلمة ‏‏الوصف‬
arg_name اسم المتغير الذي يمثل معلمة الربط.
معرف معرف المساعد المراد تحديثه.
النموذج اسم نموذج دردشة OpenAI المراد استخدامه. بالنسبة إلى Azure OpenAI، هذه القيمة هي اسم نشر النموذج.

التكوين

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

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

التكوين

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

الخاصية ‏‏الوصف
معرف معرف المساعد المراد تحديثه.
النموذج اسم نموذج دردشة OpenAI المراد استخدامه. بالنسبة إلى Azure OpenAI، هذه القيمة هي اسم نشر النموذج.

الاستخدام

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