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.

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

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.

/*
 * 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();
}

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 { 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'
            }
        };
    }
})

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}",
      "chatModel": "%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.

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

Ö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.
UserMessage Sohbet tamamlama modeli için kullanıcı iletisini alır veya ayarlar, dize olarak kodlanır.
AIConnectionName İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın.
ChatModel İsteğe bağlı. Varsayılan değeri gpt-3.5-turboolan bir dize olarak kullanılacak modelin kimliğini alır veya ayarlar.
Sıcaklık İsteğe bağlı. ve 0arasında 2 bir dize olarak kullanılacak örnekleme sıcaklığını alır veya ayarlar. Daha yüksek değerler (0.8) çıkışı daha rastgele hale getirirken (0.2) gibi düşük değerler çıkışı daha odaklanmış ve belirlenimci hale getirir. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
TopP İsteğe bağlı. Sıcaklıkla örneklemeye alternatif olarak çekirdek örnekleme adı verilen bir dize alır veya ayarlar. Bu örnekleme yönteminde model, olasılık kütleli belirteçlerin sonuçlarını dikkate alır top_p . Yani 0.1 yalnızca ilk 10% olasılık kütlesinden oluşan belirteçler dikkate alınır. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
MaxTokens İsteğe bağlı. Tamamlanmada oluşturulacak en fazla belirteç sayısını varsayılan 100değeri olan bir dize olarak alır veya ayarlar. İsteminizin ve artı max_tokens değerin belirteç sayısı modelin bağlam uzunluğunu aşamaz. Çoğu modelin bağlam uzunluğu 2.048 belirteçtir (4096'yı destekleyen en yeni modeller hariç).
IsReasoningModel İsteğe bağlı. Sohbet tamamlama modelinin bir akıl yürütme modeli olup olmadığını belirten bir değer alır veya ayarlar. Bu seçenek deneyseldir ve tüm modeller varsayılan değeri olan beklenen özelliklerde eşliğe sahip olana kadar mantık modeliyle ilişkilendirilir false.

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.
userMessage Sohbet tamamlama modeli için kullanıcı iletisini alır veya ayarlar, dize olarak kodlanır.
aiConnectionName İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın.
chatModel Varsayılan değeri gpt-3.5-turboolan bir dize olarak kullanılacak modelin kimliğini alır veya ayarlar.
sıcaklık İsteğe bağlı. ve 0arasında 2 bir dize olarak kullanılacak örnekleme sıcaklığını alır veya ayarlar. Daha yüksek değerler (0.8) çıkışı daha rastgele hale getirirken (0.2) gibi düşük değerler çıkışı daha odaklanmış ve belirlenimci hale getirir. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
topP İsteğe bağlı. Sıcaklıkla örneklemeye alternatif olarak çekirdek örnekleme adı verilen bir dize alır veya ayarlar. Bu örnekleme yönteminde model, olasılık kütleli belirteçlerin sonuçlarını dikkate alır top_p . Yani 0.1 yalnızca ilk 10% olasılık kütlesinden oluşan belirteçler dikkate alınır. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
maxTokens İsteğe bağlı. Tamamlanmada oluşturulacak en fazla belirteç sayısını varsayılan 100değeri olan bir dize olarak alır veya ayarlar. İsteminizin ve artı max_tokens değerin belirteç sayısı modelin bağlam uzunluğunu aşamaz. Çoğu modelin bağlam uzunluğu 2.048 belirteçtir (4096'yı destekleyen en yeni modeller hariç).
isReasoningModel İsteğe bağlı. Sohbet tamamlama modelinin bir akıl yürütme modeli olup olmadığını belirten bir değer alır veya ayarlar. Bu seçenek deneyseldir ve tüm modeller varsayılan değeri olan beklenen özelliklerde eşliğe sahip olana kadar mantık modeliyle ilişkilendirilir false.

Dekoratörler

Önizleme sırasında çıkış bağlamasını, şu parametreleri destekleyen türünde generic_output_bindingbir postUserQuery 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.
user_message Sohbet tamamlama modeli için kullanıcı iletisini alır veya ayarlar, dize olarak kodlanır.
ai_connection_name İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın.
chat_model Varsayılan değeri gpt-3.5-turboolan bir dize olarak kullanılacak modelin kimliğini alır veya ayarlar.
sıcaklık İsteğe bağlı. ve 0arasında 2 bir dize olarak kullanılacak örnekleme sıcaklığını alır veya ayarlar. Daha yüksek değerler (0.8) çıkışı daha rastgele hale getirirken (0.2) gibi düşük değerler çıkışı daha odaklanmış ve belirlenimci hale getirir. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
top_p İsteğe bağlı. Sıcaklıkla örneklemeye alternatif olarak çekirdek örnekleme adı verilen bir dize alır veya ayarlar. Bu örnekleme yönteminde model, olasılık kütleli belirteçlerin sonuçlarını dikkate alır top_p . Yani 0.1 yalnızca ilk 10% olasılık kütlesinden oluşan belirteçler dikkate alınır. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
max_tokens İsteğe bağlı. Tamamlanmada oluşturulacak en fazla belirteç sayısını varsayılan 100değeri olan bir dize olarak alır veya ayarlar. İsteminizin ve artı max_tokens değerin belirteç sayısı modelin bağlam uzunluğunu aşamaz. Çoğu modelin bağlam uzunluğu 2.048 belirteçtir (4096'yı destekleyen en yeni modeller hariç).
is_reasoning _model İsteğe bağlı. Sohbet tamamlama modelinin bir akıl yürütme modeli olup olmadığını belirten bir değer alır veya ayarlar. Bu seçenek deneyseldir ve tüm modeller varsayılan değeri olan beklenen özelliklerde eşliğe sahip olana kadar mantık modeliyle ilişkilendirilir false.

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 PostUserQuery.
yön olmalıdır out.
ad Çıkış bağlamasının adı.
ID Güncelleştirilecek yardımcının kimliği.
userMessage Sohbet tamamlama modeli için kullanıcı iletisini alır veya ayarlar, dize olarak kodlanır.
aiConnectionName İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın.
chatModel Varsayılan değeri gpt-3.5-turboolan bir dize olarak kullanılacak modelin kimliğini alır veya ayarlar.
sıcaklık İsteğe bağlı. ve 0arasında 2 bir dize olarak kullanılacak örnekleme sıcaklığını alır veya ayarlar. Daha yüksek değerler (0.8) çıkışı daha rastgele hale getirirken (0.2) gibi düşük değerler çıkışı daha odaklanmış ve belirlenimci hale getirir. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
topP İsteğe bağlı. Sıcaklıkla örneklemeye alternatif olarak çekirdek örnekleme adı verilen bir dize alır veya ayarlar. Bu örnekleme yönteminde model, olasılık kütleli belirteçlerin sonuçlarını dikkate alır top_p . Yani 0.1 yalnızca ilk 10% olasılık kütlesinden oluşan belirteçler dikkate alınır. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
maxTokens İsteğe bağlı. Tamamlanmada oluşturulacak en fazla belirteç sayısını varsayılan 100değeri olan bir dize olarak alır veya ayarlar. İsteminizin ve artı max_tokens değerin belirteç sayısı modelin bağlam uzunluğunu aşamaz. Çoğu modelin bağlam uzunluğu 2.048 belirteçtir (4096'yı destekleyen en yeni modeller hariç).
isReasoningModel İsteğe bağlı. Sohbet tamamlama modelinin bir akıl yürütme modeli olup olmadığını belirten bir değer alır veya ayarlar. Bu seçenek deneyseldir ve tüm modeller varsayılan değeri olan beklenen özelliklerde eşliğe sahip olana kadar mantık modeliyle ilişkilendirilir false.

Yapılandırma

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

Özellik Açıklama
ID Güncelleştirilecek yardımcının kimliği.
userMessage Sohbet tamamlama modeli için kullanıcı iletisini alır veya ayarlar, dize olarak kodlanır.
aiConnectionName İsteğe bağlı. Yapay zeka hizmeti bağlantı ayarları için yapılandırma bölümünün adını alır veya ayarlar. Azure OpenAI için: Belirtilirse, bu yapılandırma bölümünde "Uç Nokta" ve "Anahtar" değerlerini arar. Belirtilmezse veya bölüm yoksa ortam değişkenlerine geri döner: AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_KEY. Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması için bu özellik gereklidir. OpenAI hizmeti (Azure olmayan) için OPENAI_API_KEY ortam değişkenini ayarlayın.
chatModel Varsayılan değeri gpt-3.5-turboolan bir dize olarak kullanılacak modelin kimliğini alır veya ayarlar.
sıcaklık İsteğe bağlı. ve 0arasında 2 bir dize olarak kullanılacak örnekleme sıcaklığını alır veya ayarlar. Daha yüksek değerler (0.8) çıkışı daha rastgele hale getirirken (0.2) gibi düşük değerler çıkışı daha odaklanmış ve belirlenimci hale getirir. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
topP İsteğe bağlı. Sıcaklıkla örneklemeye alternatif olarak çekirdek örnekleme adı verilen bir dize alır veya ayarlar. Bu örnekleme yönteminde model, olasılık kütleli belirteçlerin sonuçlarını dikkate alır top_p . Yani 0.1 yalnızca ilk 10% olasılık kütlesinden oluşan belirteçler dikkate alınır. ya da TemperatureTopPkullanmanız gerekir, ancak ikisini birden kullanmamalısınız.
maxTokens İsteğe bağlı. Tamamlanmada oluşturulacak en fazla belirteç sayısını varsayılan 100değeri olan bir dize olarak alır veya ayarlar. İsteminizin ve artı max_tokens değerin belirteç sayısı modelin bağlam uzunluğunu aşamaz. Çoğu modelin bağlam uzunluğu 2.048 belirteçtir (4096'yı destekleyen en yeni modeller hariç).
isReasoningModel İsteğe bağlı. Sohbet tamamlama modelinin bir akıl yürütme modeli olup olmadığını belirten bir değer alır veya ayarlar. Bu seçenek deneyseldir ve tüm modeller varsayılan değeri olan beklenen özelliklerde eşliğe sahip olana kadar mantık modeliyle ilişkilendirilir false.

Kullanım

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