Kurz: Přidání tipů pro dokončování textu v Azure OpenAI do funkcí v editoru Visual Studio Code
V tomto článku se dozvíte, jak pomocí editoru Visual Studio Code přidat koncový bod HTTP do aplikace funkcí, kterou jste vytvořili v předchozím článku rychlého startu. Při aktivaci tento nový koncový bod HTTP používá vstupní vazbu pro dokončování textu Azure OpenAI k získání tipů pro dokončování textu z datového modelu.
Během tohoto kurzu se naučíte, jak provádět tyto úlohy:
- Vytváření prostředků v Azure OpenAI
- Nasaďte model v OpenAI prostředku.
- Nastavte přístupová oprávnění k prostředku modelu.
- Povolte aplikaci funkcí pro připojení k OpenAI.
- Přidejte vazby OpenAI do funkce aktivované protokolem HTTP.
1. Kontrola požadavků
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Dokončete kroky v části 1 rychlého startu editoru Visual Studio Code.
- Získejte přístup k Azure OpenAI ve vašem předplatném Azure. Pokud jste přístup ještě nedostali, vyplňte tento formulář a požádejte o přístup.
- Nainstalujte nástroje rozhraní příkazového řádku .NET Core.
- Emulátor úložiště Azurite. I když můžete použít skutečný účet služby Azure Storage, článek předpokládá, že používáte tento emulátor.
2. Vytvoření prostředků Azure OpenAI
Následující kroky ukazují, jak vytvořit datový model Azure OpenAI na webu Azure Portal.
Přihlaste se pomocí svého předplatného Azure na webu Azure Portal.
Vyberte Vytvořit prostředek a vyhledejte Azure OpenAI. Když službu vyhledáte, vyberte Vytvořit.
Na stránce Vytvořit Azure OpenAI zadejte následující informace pro pole na kartě Základy:
Pole Popis Předplatné Vaše předplatné, které bylo nasazené pro použití Azure OpenAI Skupina prostředků Skupina prostředků, kterou jste vytvořili pro aplikaci funkcí v předchozím článku. Název této skupiny prostředků najdete tak, že kliknete pravým tlačítkem na aplikaci funkcí v prohlížeči prostředků Azure, vyberete vlastnosti a pak vyhledáte resourceGroup
nastavení ve vrácených souborech prostředků JSON.Oblast V ideálním případě je stejné umístění jako aplikace funkcí. Název Popisný název prostředku služby Azure OpenAI, například mySampleOpenAI. Cenová úroveň Cenová úroveň prostředku. V současné době je pro službu Azure OpenAI dostupná jenom úroveň Standard. Další informace o cenách najdete na stránce s cenami Azure OpenAI. Výběrem možnosti Další dvakrát přijměte výchozí hodnoty na kartách Síť i Značky . Služba, kterou vytvoříte, nemá žádná omezení sítě, včetně z internetu.
Vyberte Další poslední čas, abyste přešli do konečné fáze procesu: Zkontrolovat a odeslat.
Potvrďte nastavení konfigurace a vyberte Vytvořit.
Na webu Azure Portal se zobrazí oznámení o dostupnosti nového prostředku. V oznámení vyberte Přejít k prostředku nebo vyhledejte nový prostředek Azure OpenAI podle názvu.
Na stránce prostředku Azure OpenAI pro nový prostředek vyberte Kliknutím sem zobrazíte koncové body v části Essentials Endpoints>. Zkopírujte adresu URL koncového bodu a klíče. Tyto hodnoty uložte, budete je potřebovat později.
Teď, když máte přihlašovací údaje pro připojení k modelu v Azure OpenAI, musíte tyto přihlašovací údaje pro přístup nastavit v nastavení aplikace.
3. Nasazení modelu
Teď můžete nasadit model. V nástroji Azure OpenAI Studio si můžete vybrat jeden z několika dostupných modelů.
Pokud chcete nasadit model, postupujte takto:
Přihlaste se k Azure OpenAI Studiu.
Zvolte předplatné a prostředek Azure OpenAI, který jste vytvořili, a vyberte Použít prostředek.
V části Správa vyberte Nasazení.
Vyberte Vytvořit nové nasazení a nakonfigurujte následující pole:
Pole Popis Název nasazení Pečlivě zvolte jméno. Název nasazení se ve vašem kódu používá k volání modelu pomocí klientských knihoven a rozhraní REST API, takže je nutné ho uložit pro pozdější použití. Výběr modelu Dostupnost modelů se liší podle oblasti. Seznam dostupných modelů pro každou oblast najdete v tabulce souhrnu modelů a dostupnosti oblastí. Důležité
Když k modelu přistupujete přes rozhraní API, musíte místo názvu základního modelu ve voláních rozhraní API odkazovat na název nasazení, což je jeden z klíčových rozdílů mezi OpenAI a Azure OpenAI. OpenAI vyžaduje pouze název modelu. Azure OpenAI vždy vyžaduje název nasazení, i když používáte parametr modelu. V naší dokumentaci často máme příklady, kdy jsou názvy nasazení reprezentovány jako identické s názvy modelů, což pomáhá určit, který model funguje s konkrétním koncovým bodem rozhraní API. V konečném důsledku můžou názvy nasazení dodržovat jakoukoli konvenci pojmenování, která je pro váš případ použití nejvhodnější.
Přijměte výchozí hodnoty pro zbytek nastavení a vyberte Vytvořit.
Tabulka nasazení zobrazuje novou položku, která odpovídá nově vytvořenému modelu.
Teď máte všechno, co potřebujete k přidání dokončování textu založeného na Azure OpenAI do aplikace funkcí.
4. Aktualizace nastavení aplikace
V editoru Visual Studio Code otevřete místní projekt kódu, který jste vytvořili po dokončení předchozího článku.
V souboru local.settings.json v kořenové složce projektu aktualizujte
AzureWebJobsStorage
nastavení naUseDevelopmentStorage=true
. Tento krok můžete přeskočit, pokudAzureWebJobsStorage
je nastavení v local.settings.json nastavené na připojovací řetězec pro existující účet azure Storage místoUseDevelopmentStorage=true
.Do souboru local.settings.json přidejte tyto hodnoty nastavení:
AZURE_OPENAI_ENDPOINT
: vyžaduje rozšíření vazby. Tuto hodnotu nastavte na koncový bod prostředku Azure OpenAI, který jste vytvořili dříve.AZURE_OPENAI_KEY
: vyžaduje rozšíření vazby. Nastavte tuto hodnotu na klíč prostředku Azure OpenAI.CHAT_MODEL_DEPLOYMENT_NAME
: slouží k definování vstupní vazby. Nastavte tuto hodnotu na název, který jste zvolili pro nasazení modelu.
Uložte soubor. Když nasadíte do Azure, musíte tato nastavení také přidat do aplikace funkcí.
5. Registrace rozšíření vazeb
Vzhledem k tomu, že používáte výstupní vazbu Azure OpenAI, musíte mít před spuštěním projektu nainstalované odpovídající rozšíření vazeb.
Kromě triggerů HTTP a časovače se vazby implementují jako balíčky rozšíření. Pokud chcete do projektu přidat balíček rozšíření Azure OpenAI, spusťte tento příkaz dotnet add package v okně terminálu :
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI --prerelease
5. Aktualizace sady rozšíření
Pokud chcete získat přístup k vazbám Azure OpenAI ve verzi Preview, musíte použít verzi Preview sady rozšíření, která obsahuje toto rozšíření.
extensionBundle
Nahraďte nastavení v aktuálním host.json
souboru tímto kódem JSON:
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.*, 5.0.0)"
}
Teď můžete ve svém projektu použít výstupní vazbu Azure OpenAI.
6. Vrácení dokončování textu z modelu
Kód, který přidáte, whois
vytvoří koncový bod funkce HTTP ve stávajícím projektu. V této funkci se data předaná v parametru ADRESY URL name
požadavku GET používají k dynamickému vytvoření výzvy k dokončení. Tato dynamická výzva je vázána na vstupní vazbu pro dokončení textu, která vrátí odpověď z modelu na základě výzvy. Dokončení z modelu se vrátí v odpovědi HTTP.
Do existujícího
HttpExample
souboru třídy přidejte tentousing
příkaz:using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
Do stejného souboru přidejte tento kód, který definuje nový koncový bod triggeru HTTP s názvem
whois
:[Function(nameof(WhoIs))] public IActionResult WhoIs([HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequest req, [TextCompletionInput("Who is {name}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response) { if(!String.IsNullOrEmpty(response.Content)) { return new OkObjectResult(response.Content); } else { return new NotFoundObjectResult("Something went wrong."); } }
pom.xml
Aktualizujte soubor projektu, aby se tento odkaz přidal doproperties
kolekce:<azure-functions-java-library-openai>0.4.0-preview</azure-functions-java-library-openai>
Do stejného souboru přidejte tuto závislost do
dependencies
kolekce:<dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-library-openai</artifactId> <version>${azure-functions-java-library-openai}</version> </dependency>
Do existujícího
Function.java
souboru projektu přidejte tytoimport
příkazy:import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion; import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
Do stejného souboru přidejte tento kód, který definuje nový koncový bod triggeru HTTP s názvem
whois
:@FunctionName("WhoIs") public HttpResponseMessage whoIs( @HttpTrigger( name = "req", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS, route = "whois/{name}") HttpRequestMessage<Optional<String>> request, @BindingName("name") String name, @TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response, final ExecutionContext context) { return request.createResponseBuilder(HttpStatus.OK) .header("Content-Type", "application/json") .body(response.getContent()) .build(); }
V editoru Visual Studio Code stiskněte klávesu F1 a v typ
Azure Functions: Create Function...
palety příkazů vyberte trigger HTTP, zadejte názevwhois
funkce a stiskněte Enter.V novém
whois.js
souboru kódu nahraďte obsah souboru tímto kódem:const { app, input } = require("@azure/functions"); // This OpenAI completion input requires a {name} binding value. const openAICompletionInput = input.generic({ prompt: 'Who is {name}?', maxTokens: '100', type: 'textCompletion', model: '%CHAT_MODEL_DEPLOYMENT_NAME%' }) app.http('whois', { methods: ['GET'], route: 'whois/{name}', authLevel: 'function', extraInputs: [openAICompletionInput], handler: async (_request, context) => { var response = context.extraInputs.get(openAICompletionInput) return { body: response.content.trim() } } });
V editoru Visual Studio Code stiskněte klávesu F1 a v typ
Azure Functions: Create Function...
palety příkazů vyberte trigger HTTP, zadejte názevwhois
funkce a stiskněte Enter.V novém
whois.ts
souboru kódu nahraďte obsah souboru tímto kódem:import { app, input } from "@azure/functions"; // This OpenAI completion input requires a {name} binding value. const openAICompletionInput = input.generic({ prompt: 'Who is {name}?', maxTokens: '100', type: 'textCompletion', model: '%CHAT_MODEL_DEPLOYMENT_NAME%' }) app.http('whois', { methods: ['GET'], route: 'whois/{name}', authLevel: 'function', extraInputs: [openAICompletionInput], handler: async (_request, context) => { var response: any = context.extraInputs.get(openAICompletionInput) return { body: response.content.trim() } } });
Do existujícího
function_app.py
souboru projektu přidejte tentoimport
příkaz:import json
Do stejného souboru přidejte tento kód, který definuje nový koncový bod triggeru HTTP s názvem
whois
:@app.route(route="whois/{name}", methods=["GET"]) @app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", model = "%CHAT_MODEL_DEPLOYMENT_NAME%") def whois(req: func.HttpRequest, response: str) -> func.HttpResponse: response_json = json.loads(response) return func.HttpResponse(response_json["content"], status_code=200) @app.route(route="genericcompletion", methods=["POST"]) @app.text_completion_input(arg_name="response", prompt="{Prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%") def genericcompletion(req: func.HttpRequest, response: str) -> func.HttpResponse: response_json = json.loads(response) return func.HttpResponse(response_json["content"], status_code=200)
V editoru Visual Studio Code stiskněte klávesu F1 a v typu
Azure Functions: Create Function...
palety příkazů vyberte trigger HTTP, zadejte názevwhois
funkce, vyberte Anonymní a stiskněte Enter.Otevřete nový
whois/function.json
soubor kódu a nahraďte jeho obsah tímto kódem, který přidá definiciTextCompletionResponse
vstupní vazby:{ "bindings": [ { "authLevel": "function", "type": "httpTrigger", "direction": "in", "name": "Request", "route": "whois/{name}", "methods": [ "get" ] }, { "type": "http", "direction": "out", "name": "Response" }, { "type": "textCompletion", "direction": "in", "name": "TextCompletionResponse", "prompt": "Who is {name}?", "maxTokens": "100", "model": "%CHAT_MODEL_DEPLOYMENT_NAME%" } ] }
Nahraďte obsah
whois/run.ps1
souboru kódu tímto kódem, který vrátí odpověď vstupní vazby:using namespace System.Net param($Request, $TriggerMetadata, $TextCompletionResponse) Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::OK Body = $TextCompletionResponse.Content })
7. Spusťte funkci.
V editoru Visual Studio Code stiskněte klávesu F1 a na paletě příkazů zadejte a
Azurite: Start
stisknutím klávesy Enter spusťte emulátor úložiště Azurite.Stisknutím klávesy F5 spusťte projekt aplikace funkcí a nástroje Core Tools v režimu ladění.
Se spuštěnými nástroji Core Tools odešlete do funkce koncového
whois
bodu požadavek GET s názvem v cestě, jako je tato adresa URL:http://localhost:7071/api/whois/<NAME>
<NAME>
Nahraďte řetězec hodnotou, kterou chcete předat do výzvy"Who is {name}?"
. Musí<NAME>
to být název veřejného obrázku kódovaný adresou URL, napříkladAbraham%20Lincoln
.Zobrazená odpověď je odpověď na dokončení textu z modelu Azure OpenAI.
Po vrácení odpovědi stiskněte Ctrl+C a zastavte nástroje Core Tools.
8. Vyčištění prostředků
Prostředky v Azure odkazují na aplikace funkcí, funkce, účty úložiště atd. Jsou seskupené do skupin prostředků a můžete odstranit všechno ve skupině odstraněním skupiny.
Vytvořili jste prostředky k dokončení těchto rychlých startů. Tyto prostředky se vám můžou účtovat v závislosti na stavu vašeho účtu a cenách služeb. Pokud prostředky už nepotřebujete, můžete k jejich odstranění použít tento postup:
V editoru Visual Studio Code stisknutím klávesy F1 otevřete paletu příkazů. Na paletě příkazů vyhledejte a vyberte
Azure: Open in portal
.Zvolte aplikaci funkcí a stiskněte Enter. Otevře se stránka aplikace funkcí na webu Azure Portal.
Na kartě Přehled vyberte pojmenovaný odkaz vedle skupiny prostředků.
Na stránce Skupina prostředků zkontrolujte seznam zahrnutých prostředků a ověřte, že se jedná o prostředky, které chcete odstranit.
Vyberte Odstranit skupinu prostředků a postupujte podle pokynů.
Odstranění může trvat několik minut. Po jeho dokončení se na několik sekund zobrazí oznámení. K zobrazení tohoto oznámení můžete také vybrat ikonu zvonku v horní části stránky.