Aracılığıyla paylaş


Azure OpenAI yardımcısı Azure İşlevleri için çıkış bağlaması oluşturma

Önemli

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

Azure OpenAI yardımcısı oluşturma çıkış bağlaması, işlev kodu yürütmenizden yeni bir yardımcı sohbet botu oluşturmanıza olanak tanır.

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.

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, belirtilen kimlikle yeni bir yardımcı sohbet botu oluşturan HTTP PUT 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 PUT function that creates a new assistant chat bot with the specified ID.
/// </summary>
[Function(nameof(CreateAssistant))]
public static async Task<CreateChatBotOutput> CreateAssistant(
    [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId)
{
    string instructions =
       """
        Don't make assumptions about what values to plug into functions.
        Ask for clarification if a user request is ambiguous.
        """;

    using StreamReader reader = new(req.Body);

    string request = await reader.ReadToEndAsync();


    return new CreateChatBotOutput
    {
        HttpResponse = new ObjectResult(new { assistantId }) { StatusCode = 201 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting,
            CollectionName = DefaultCollectionName,
        },
    };
}

public class CreateChatBotOutput
{
    [AssistantCreateOutput()]
    public AssistantCreateRequest? ChatBotCreateRequest { get; set; }

    [HttpResult]
    public IActionResult? HttpResponse { get; set; }
}

Bu örnekte, belirtilen kimlikle yeni bir yardımcı sohbet botu oluşturan HTTP PUT işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

/**
 * The default storage account setting for the table storage account.
 * This constant is used to specify the connection string for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_CHATSTORAGE = "AzureWebJobsStorage";

/**
 * The default collection name for the table storage account.
 * This constant is used to specify the collection name for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_COLLECTION = "ChatState";

/*
 * HTTP PUT function that creates a new assistant chat bot with the specified ID.
 */
@FunctionName("CreateAssistant")
public HttpResponseMessage createAssistant(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.PUT}, 
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,
    @AssistantCreate(name = "AssistantCreate") OutputBinding<AssistantCreateRequest> message,
    final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        
        String instructions = "Don't make assumptions about what values to plug into functions.\n" +
                "Ask for clarification if a user request is ambiguous.";

        AssistantCreateRequest assistantCreateRequest = new AssistantCreateRequest(assistantId, instructions);
        assistantCreateRequest.setChatStorageConnectionSetting(DEFAULT_CHATSTORAGE);
        assistantCreateRequest.setCollectionName(DEFAULT_COLLECTION);

        message.setValue(assistantCreateRequest);
        JSONObject response = new JSONObject();
        response.put("assistantId", assistantId);
        
        return request.createResponseBuilder(HttpStatus.CREATED)
            .header("Content-Type", "application/json")
            .body(response.toString())
            .build();    
}

Bu örnekte, belirtilen kimlikle yeni bir yardımcı sohbet botu oluşturan HTTP PUT işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

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

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request, context) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request: HttpRequest, context: InvocationContext) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})

Bu örnekte, belirtilen kimlikle yeni bir yardımcı sohbet botu oluşturan HTTP PUT işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

Create Assistant için function.json dosyası aşağıdadır:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "put"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "assistantCreate",
      "direction": "out",
      "dataType": "string",
      "name": "Requests"
    }
  ]
}

function.json dosya özellikleri hakkında daha fazla bilgi için Yapılandırma bölümüne bakın.

{{Bu örnek kod açıklamasından gelir}}

using namespace System.Net

param($Request, $TriggerMetadata)

$assistantId = $Request.params.assistantId

$instructions = "Don't make assumptions about what values to plug into functions."
$instructions += "\nAsk for clarification if a user request is ambiguous."

$create_request = @{
    "id" = $assistantId
    "instructions" = $instructions
    "chatStorageConnectionSetting" = "AzureWebJobsStorage"
    "collectionName" = "ChatState"
}

Push-OutputBinding -Name Requests -Value (ConvertTo-Json $create_request)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::Accepted
    Body       = (ConvertTo-Json @{ "assistantId" = $assistantId})
    Headers    = @{
        "Content-Type" = "application/json"
    }
})

Bu örnekte, belirtilen kimlikle yeni bir yardımcı sohbet botu oluşturan HTTP PUT işlevinin oluşturulduğu oluşturma işlemi gösterilmektedir. İstem yanıtı HTTP yanıtında döndürülür.

DEFAULT_CHAT_STORAGE_SETTING = "AzureWebJobsStorage"
DEFAULT_CHAT_COLLECTION_NAME = "ChatState"


@apis.function_name("CreateAssistant")
@apis.route(route="assistants/{assistantId}", methods=["PUT"])
@apis.assistant_create_output(arg_name="requests")
def create_assistant(
    req: func.HttpRequest, requests: func.Out[str]
) -> func.HttpResponse:
    assistantId = req.route_params.get("assistantId")
    instructions = """
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            """
    create_request = {
        "id": assistantId,
        "instructions": instructions,
        "chatStorageConnectionSetting": DEFAULT_CHAT_STORAGE_SETTING,
        "collectionName": DEFAULT_CHAT_COLLECTION_NAME,
    }
    requests.set(json.dumps(create_request))
    response_json = {"assistantId": assistantId}
    return func.HttpResponse(
        json.dumps(response_json), status_code=202, mimetype="application/json"
    )

Özellikler

CreateAssistant Şu parametreleri destekleyen bir yardımcı oluşturma çıkış bağlaması tanımlamak için özniteliğini uygulayın:

Parametre Açıklama
Kimlik Oluşturulacak yardımcının tanımlayıcısı.
Yönergeler İsteğe bağlı. Yardımcıya izleyebileceğiniz yönergeler.
ChatStorageConnectionSetting İsteğe bağlı. Sohbet depolama için tablo ayarlarının yapılandırma bölümü adı. Varsayılan değer şudur: AzureWebJobsStorage.
CollectionName İsteğe bağlı. Sohbet depolama için tablo koleksiyonu adı. Varsayılan değer şudur: ChatState.

Ek Açıklamalar

Ek CreateAssistant açıklama, şu parametreleri destekleyen bir yardımcı oluşturma çıkış bağlaması tanımlamanızı sağlar:

Öğe Açıklama
ad Çıkış bağlamasının adını alır veya ayarlar.
ID Oluşturulacak yardımcının tanımlayıcısı.
Talimat -ları İsteğe bağlı. Yardımcıya izleyebileceğiniz yönergeler.
chatStorageConnectionSetting İsteğe bağlı. Sohbet depolama için tablo ayarlarının yapılandırma bölümü adı. Varsayılan değer şudur: AzureWebJobsStorage.
collectionName İsteğe bağlı. Sohbet depolama için tablo koleksiyonu adı. Varsayılan değer şudur: ChatState.

Dekoratörler

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

Parametre Açıklama
arg_name Bağlama parametresini temsil eden değişkenin adı.
ID Oluşturulacak yardımcının tanımlayıcısı.
Talimat -ları İsteğe bağlı. Yardımcıya izleyebileceğiniz yönergeler.
chat_storage_connection_setting İsteğe bağlı. Sohbet depolama için tablo ayarlarının yapılandırma bölümü adı. Varsayılan değer şudur: AzureWebJobsStorage.
collection_name İsteğe bağlı. Sohbet depolama için tablo koleksiyonu adı. Varsayılan değer şudur: ChatState.

Yapılandırma

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

Özellik Açıklama
türü olmalıdır CreateAssistant.
yön olmalıdır out.
ad Çıkış bağlamasının adı.
ID Oluşturulacak yardımcının tanımlayıcısı.
Talimat -ları İsteğe bağlı. Yardımcıya izleyebileceğiniz yönergeler.
chatStorageConnectionSetting İsteğe bağlı. Sohbet depolama için tablo ayarlarının yapılandırma bölümü adı. Varsayılan değer şudur: AzureWebJobsStorage.
collectionName İsteğe bağlı. Sohbet depolama için tablo koleksiyonu adı. Varsayılan değer şudur: ChatState.

Yapılandırma

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

Özellik Açıklama
ID Oluşturulacak yardımcının tanımlayıcısı.
Talimat -ları İsteğe bağlı. Yardımcıya izleyebileceğiniz yönergeler.
chatStorageConnectionSetting İsteğe bağlı. Sohbet depolama için tablo ayarlarının yapılandırma bölümü adı. Varsayılan değer şudur: AzureWebJobsStorage.
collectionName İsteğe bağlı. Sohbet depolama için tablo koleksiyonu adı. Varsayılan değer şudur: ChatState.

Kullanım

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