Aracılığıyla paylaş


Azure İşlevleri için giriş bağlaması sonrasında Azure OpenAI yardımcısı

Önemli

Azure İşlevleri için Azure OpenAI uzantısı şu anda önizleme aşamasındadır.

Giriş bağlama sonrası Azure OpenAI yardımcısı, yardımcı sohbet botlarına istemler göndermenizi sağlar.

Azure OpenAI uzantısının kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. Azure İşlevleri için Azure OpenAI uzantıları. Azure OpenAI yardımcıları hakkında daha fazla bilgi edinmek için bkz. [Azure OpenAI Yardımcıları API'si](.. /ai-services/openai/

Not

Başvurular ve örnekler yalnızca Node.js v4 modeli için sağlanır.

Not

Başvurular ve örnekler yalnızca Python v2 modeli için sağlanır.

Not

Her iki C# işlem modeli de destekleniyor olsa da yalnızca yalıtılmış çalışan modeli örnekleri sağlanır.

Örnek

Bu örnekte, kullanıcı istemlerini yardımcı sohbet bota gönderen HTTP POST işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

/// <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)
{

Bu örnekte, kullanıcı istemlerini yardımcı sohbet bota gönderen HTTP POST işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

public HttpResponseMessage getChatState(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.GET}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(state)
            .build();
}

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(

Bu örnekte, kullanıcı istemlerini yardımcı sohbet bota gönderen HTTP POST işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
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 = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
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)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

Bu örnekte, kullanıcı istemlerini yardımcı sohbet bota gönderen HTTP POST işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

Kullanıcı sonrası sorgusu için function.json dosyası aşağıdadır:

{
  "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 dosya özellikleri hakkında daha fazla bilgi için Yapılandırma bölümüne bakın.

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"
    }
})

Bu örnekte, kullanıcı istemlerini yardımcı sohbet bota gönderen HTTP POST işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

    response_json = {"assistantId": assistantId}
    return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")


@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%", 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)

Özellikler

PostUserQuery Şu parametreleri destekleyen bir yardımcı giriş bağlaması tanımlamak için özniteliğini uygulayın:

Parametre Açıklama
Kimlik Güncelleştirilecek yardımcının kimliği.
Model Kullanılacak OpenAI sohbet modelinin adı. Azure OpenAI için bu değer model dağıtımının adıdır.

Ek Açıklamalar

Ek PostUserQuery açıklama, giriş bağlaması sonrasında şu parametreleri destekleyen bir yardımcı tanımlamanızı sağlar:

Öğe Açıklama
ad Çıkış bağlamasının adı.
id Güncelleştirilecek yardımcının kimliği.
model Kullanılacak OpenAI sohbet modelinin adı. Azure OpenAI için bu değer model dağıtımının adıdır.

Dekoratörler

Önizleme sırasında çıkış bağlamasını, şu parametreleri destekleyen türünde postUserQuerybir generic_output_binding bağlama olarak tanımlayın:

Parametre Açıklama
arg_name Bağlama parametresini temsil eden değişkenin adı.
id Güncelleştirilecek yardımcının kimliği.
model Kullanılacak OpenAI sohbet modelinin adı. Azure OpenAI için bu değer model dağıtımının adıdır.

Yapılandırma

Bağlama, function.json dosyasında ayarladığınız bu yapılandırma özelliklerini destekler.

Özellik Açıklama
type olmalıdır PostUserQuery.
direction olmalıdır out.
ad Çıkış bağlamasının adı.
id Güncelleştirilecek yardımcının kimliği.
model Kullanılacak OpenAI sohbet modelinin adı. Azure OpenAI için bu değer model dağıtımının adıdır.

Yapılandırma

Bağlama, kodunuzda tanımlanan şu özellikleri destekler:

Özellik Açıklama
id Güncelleştirilecek yardımcının kimliği.
model Kullanılacak OpenAI sohbet modelinin adı. Azure OpenAI için bu değer model dağıtımının adıdır.

Kullanım

Tam örnekler için Örnek bölümüne bakın.