Megosztás a következőn keresztül:


Azure OpenAI assistant post input binding for Azure Functions

Fontos

Az Azure Functions Azure OpenAI bővítménye jelenleg előzetes verzióban érhető el.

Az Azure OpenAI-asszisztens bemeneti kötése lehetővé teszi, hogy kéréseket küldjön az asszisztens csevegőrobotoknak.

Az Azure OpenAI-bővítmény beállítási és konfigurációs részleteiről további információt az Azure Functions Azure OpenAI-bővítményeivel kapcsolatban talál. További információ az Azure OpenAI-asszisztensekről: Azure OpenAI Assistants API.

Feljegyzés

A referenciák és példák csak a Node.js v4-modellhez vannak megadva.

Feljegyzés

A hivatkozások és példák csak a Python v2-modellhez vannak megadva.

Feljegyzés

Bár mindkét C#-folyamatmodell támogatott, csak izolált feldolgozómodell-példák állnak rendelkezésre.

Példa

Ez a példa a létrehozási folyamatot mutatja be, ahol a felhasználót küldő HTTP POST függvény kéri a csevegőrobotot. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Ez a példa a létrehozási folyamatot mutatja be, ahol a felhasználót küldő HTTP POST függvény kéri a csevegőrobotot. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Ez a példa a létrehozási folyamatot mutatja be, ahol a felhasználót küldő HTTP POST függvény kéri a csevegőrobotot. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Ez a példa a létrehozási folyamatot mutatja be, ahol a felhasználót küldő HTTP POST függvény kéri a csevegőrobotot. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

A következő function.json fájl a felhasználói lekérdezés utáni lekérdezéshez:

{
  "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"
    }
  ]
}

A function.json fájltulajdonságokról a Konfiguráció szakaszban talál további információt.

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

Ez a példa a létrehozási folyamatot mutatja be, ahol a felhasználót küldő HTTP POST függvény kéri a csevegőrobotot. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Attribútumok

Alkalmazza az PostUserQuery attribútumot egy bemeneti kötés utáni segéd definiálására, amely támogatja az alábbi paramétereket:

Paraméter Leírás
Azonosító A frissíteni kívánt asszisztens azonosítója.
UserMessage Lekéri vagy beállítja a csevegővégzítési modell felhasználói üzenetét sztringként kódolva.
AIConnectionName Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót.
ChatModel Választható. Lekéri vagy beállítja a modell azonosítóját sztringként, alapértelmezett értékként gpt-3.5-turbo.
Hőmérséklet Választható. Lekéri vagy beállítja a használandó mintavételi hőmérsékletet sztringként az és 0a között2. A magasabb értékek (0.8) véletlenszerűbbé teszik a kimenetet, míg az alacsonyabb értékek(0.2) a kimenetet koncentráltabbá és determinisztikusabbá teszik. Használhatja vagy TemperatureTopP, de mindkettőt nem.
TopP Választható. Sztringként lekéri vagy beállítja a hőmérséklettel történő mintavételezés alternatívát, az úgynevezett nukleusz-mintavételezést. Ebben a mintavételezési módszerben a modell a valószínűségi tömeggel rendelkező top_p tokenek eredményeit veszi figyelembe. Ez azt 0.1 jelenti, hogy csak az első 10% valószínűségi tömeget tartalmazó jogkivonatokat veszi figyelembe. Használhatja vagy TemperatureTopP, de mindkettőt nem.
MaxTokens Választható. Lekéri vagy beállítja a befejezéskor létrehozandó jogkivonatok maximális számát egy alapértelmezett 100sztringként. A parancssor jogkivonatszáma plusz max_tokens nem haladhatja meg a modell környezethosszát. A legtöbb modell környezethossza 2048 token (kivéve a legújabb modelleket, amelyek támogatják a 4096-ot).
IsReasoningModel Választható. Lekéri vagy beállít egy értéket, amely jelzi, hogy a csevegés befejezési modellje érvelési modell-e. Ez a beállítás kísérleti jellegű, és mindaddig az érvelési modellhez van társítva, amíg az összes modell paritásos nem lesz a várt tulajdonságokban, és az alapértelmezett érték a false.

Jegyzetek

A PostUserQuery széljegyzet lehetővé teszi a bemeneti kötés utáni segéd definiálását, amely az alábbi paramétereket támogatja:

Elem Leírás
név A kimeneti kötés neve.
azonosító A frissíteni kívánt asszisztens azonosítója.
userMessage Lekéri vagy beállítja a csevegővégzítési modell felhasználói üzenetét sztringként kódolva.
aiConnectionName Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót.
chatModel Lekéri vagy beállítja a modell azonosítóját sztringként, alapértelmezett értékként gpt-3.5-turbo.
hőmérséklet Választható. Lekéri vagy beállítja a használandó mintavételi hőmérsékletet sztringként az és 0a között2. A magasabb értékek (0.8) véletlenszerűbbé teszik a kimenetet, míg az alacsonyabb értékek(0.2) a kimenetet koncentráltabbá és determinisztikusabbá teszik. Használhatja vagy TemperatureTopP, de mindkettőt nem.
topP Választható. Sztringként lekéri vagy beállítja a hőmérséklettel történő mintavételezés alternatívát, az úgynevezett nukleusz-mintavételezést. Ebben a mintavételezési módszerben a modell a valószínűségi tömeggel rendelkező top_p tokenek eredményeit veszi figyelembe. Ez azt 0.1 jelenti, hogy csak az első 10% valószínűségi tömeget tartalmazó jogkivonatokat veszi figyelembe. Használhatja vagy TemperatureTopP, de mindkettőt nem.
maxTokens Választható. Lekéri vagy beállítja a befejezéskor létrehozandó jogkivonatok maximális számát egy alapértelmezett 100sztringként. A parancssor jogkivonatszáma plusz max_tokens nem haladhatja meg a modell környezethosszát. A legtöbb modell környezethossza 2048 token (kivéve a legújabb modelleket, amelyek támogatják a 4096-ot).
isReasoningModel Választható. Lekéri vagy beállít egy értéket, amely jelzi, hogy a csevegés befejezési modellje érvelési modell-e. Ez a beállítás kísérleti jellegű, és mindaddig az érvelési modellhez van társítva, amíg az összes modell paritásos nem lesz a várt tulajdonságokban, és az alapértelmezett érték a false.

Dekorátorok

Az előzetes verzióban adja meg a kimeneti kötést típuskötésként generic_output_bindingpostUserQuery, amely támogatja az alábbi paramétereket:

Paraméter Leírás
arg_name A kötési paramétert képviselő változó neve.
azonosító A frissíteni kívánt asszisztens azonosítója.
user_message Lekéri vagy beállítja a csevegővégzítési modell felhasználói üzenetét sztringként kódolva.
ai_connection_name Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót.
chat_model Lekéri vagy beállítja a modell azonosítóját sztringként, alapértelmezett értékként gpt-3.5-turbo.
hőmérséklet Választható. Lekéri vagy beállítja a használandó mintavételi hőmérsékletet sztringként az és 0a között2. A magasabb értékek (0.8) véletlenszerűbbé teszik a kimenetet, míg az alacsonyabb értékek(0.2) a kimenetet koncentráltabbá és determinisztikusabbá teszik. Használhatja vagy TemperatureTopP, de mindkettőt nem.
top_p Választható. Sztringként lekéri vagy beállítja a hőmérséklettel történő mintavételezés alternatívát, az úgynevezett nukleusz-mintavételezést. Ebben a mintavételezési módszerben a modell a valószínűségi tömeggel rendelkező top_p tokenek eredményeit veszi figyelembe. Ez azt 0.1 jelenti, hogy csak az első 10% valószínűségi tömeget tartalmazó jogkivonatokat veszi figyelembe. Használhatja vagy TemperatureTopP, de mindkettőt nem.
max_tokens Választható. Lekéri vagy beállítja a befejezéskor létrehozandó jogkivonatok maximális számát egy alapértelmezett 100sztringként. A parancssor jogkivonatszáma plusz max_tokens nem haladhatja meg a modell környezethosszát. A legtöbb modell környezethossza 2048 token (kivéve a legújabb modelleket, amelyek támogatják a 4096-ot).
is_reasoning _model Választható. Lekéri vagy beállít egy értéket, amely jelzi, hogy a csevegés befejezési modellje érvelési modell-e. Ez a beállítás kísérleti jellegű, és mindaddig az érvelési modellhez van társítva, amíg az összes modell paritásos nem lesz a várt tulajdonságokban, és az alapértelmezett érték a false.

Konfiguráció

A kötés támogatja a function.json fájlban beállított konfigurációs tulajdonságokat.

Tulajdonság Leírás
típus Kell lennie PostUserQuery.
irány Kell lennie out.
név A kimeneti kötés neve.
azonosító A frissíteni kívánt asszisztens azonosítója.
userMessage Lekéri vagy beállítja a csevegővégzítési modell felhasználói üzenetét sztringként kódolva.
aiConnectionName Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót.
chatModel Lekéri vagy beállítja a modell azonosítóját sztringként, alapértelmezett értékként gpt-3.5-turbo.
hőmérséklet Választható. Lekéri vagy beállítja a használandó mintavételi hőmérsékletet sztringként az és 0a között2. A magasabb értékek (0.8) véletlenszerűbbé teszik a kimenetet, míg az alacsonyabb értékek(0.2) a kimenetet koncentráltabbá és determinisztikusabbá teszik. Használhatja vagy TemperatureTopP, de mindkettőt nem.
topP Választható. Sztringként lekéri vagy beállítja a hőmérséklettel történő mintavételezés alternatívát, az úgynevezett nukleusz-mintavételezést. Ebben a mintavételezési módszerben a modell a valószínűségi tömeggel rendelkező top_p tokenek eredményeit veszi figyelembe. Ez azt 0.1 jelenti, hogy csak az első 10% valószínűségi tömeget tartalmazó jogkivonatokat veszi figyelembe. Használhatja vagy TemperatureTopP, de mindkettőt nem.
maxTokens Választható. Lekéri vagy beállítja a befejezéskor létrehozandó jogkivonatok maximális számát egy alapértelmezett 100sztringként. A parancssor jogkivonatszáma plusz max_tokens nem haladhatja meg a modell környezethosszát. A legtöbb modell környezethossza 2048 token (kivéve a legújabb modelleket, amelyek támogatják a 4096-ot).
isReasoningModel Választható. Lekéri vagy beállít egy értéket, amely jelzi, hogy a csevegés befejezési modellje érvelési modell-e. Ez a beállítás kísérleti jellegű, és mindaddig az érvelési modellhez van társítva, amíg az összes modell paritásos nem lesz a várt tulajdonságokban, és az alapértelmezett érték a false.

Konfiguráció

A kötés támogatja ezeket a tulajdonságokat, amelyek a kódban vannak definiálva:

Tulajdonság Leírás
azonosító A frissíteni kívánt asszisztens azonosítója.
userMessage Lekéri vagy beállítja a csevegővégzítési modell felhasználói üzenetét sztringként kódolva.
aiConnectionName Választható. Lekéri vagy beállítja az AI szolgáltatás csatlakozási beállításaihoz tartozó konfigurációs szakasz nevét. Azure OpenAI esetén: Ha meg van adva, ebben a konfigurációs szakaszban keresse meg a "Végpont" és a "Kulcs" értéket. Ha nincs megadva, vagy a szakasz nem létezik, visszavált a környezeti változókra: AZURE_OPENAI_ENDPOINT és AZURE_OPENAI_KEY. A felhasználó által hozzárendelt felügyelt identitás hitelesítéséhez ez a tulajdonság szükséges. OpenAI szolgáltatás (nem Azure) esetén állítsa be a OPENAI_API_KEY környezeti változót.
chatModel Lekéri vagy beállítja a modell azonosítóját sztringként, alapértelmezett értékként gpt-3.5-turbo.
hőmérséklet Választható. Lekéri vagy beállítja a használandó mintavételi hőmérsékletet sztringként az és 0a között2. A magasabb értékek (0.8) véletlenszerűbbé teszik a kimenetet, míg az alacsonyabb értékek(0.2) a kimenetet koncentráltabbá és determinisztikusabbá teszik. Használhatja vagy TemperatureTopP, de mindkettőt nem.
topP Választható. Sztringként lekéri vagy beállítja a hőmérséklettel történő mintavételezés alternatívát, az úgynevezett nukleusz-mintavételezést. Ebben a mintavételezési módszerben a modell a valószínűségi tömeggel rendelkező top_p tokenek eredményeit veszi figyelembe. Ez azt 0.1 jelenti, hogy csak az első 10% valószínűségi tömeget tartalmazó jogkivonatokat veszi figyelembe. Használhatja vagy TemperatureTopP, de mindkettőt nem.
maxTokens Választható. Lekéri vagy beállítja a befejezéskor létrehozandó jogkivonatok maximális számát egy alapértelmezett 100sztringként. A parancssor jogkivonatszáma plusz max_tokens nem haladhatja meg a modell környezethosszát. A legtöbb modell környezethossza 2048 token (kivéve a legújabb modelleket, amelyek támogatják a 4096-ot).
isReasoningModel Választható. Lekéri vagy beállít egy értéket, amely jelzi, hogy a csevegés befejezési modellje érvelési modell-e. Ez a beállítás kísérleti jellegű, és mindaddig az érvelési modellhez van társítva, amíg az összes modell paritásos nem lesz a várt tulajdonságokban, és az alapértelmezett érték a false.

Használat

A teljes példákért tekintse meg a Példa szakaszt .