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


Oktatóanyag: Azure OpenAI szövegkiegészítési tippek hozzáadása a Visual Studio Code funkcióihoz

Ez a cikk bemutatja, hogyan adhat hozzá HTTP-végpontot a Visual Studio Code-nak az előző rövid útmutatóban létrehozott függvényalkalmazáshoz. Ha aktiválódik, ez az új HTTP-végpont egy Azure OpenAI szövegkimeneti bemeneti kötést használ a szövegkiegészítési tippek lekéréséhez az adatmodellből.

Az oktatóanyag során megtanulhatja, hogyan végezheti el ezeket a feladatokat:

  • Erőforrások létrehozása az Azure OpenAI-ban.
  • Modell üzembe helyezése az Erőforrás OpenAI-ban.
  • Hozzáférési engedélyek beállítása a modellerőforráshoz.
  • Engedélyezze a függvényalkalmazásnak az OpenAI-hoz való csatlakozást.
  • OpenAI-kötések hozzáadása a HTTP által aktivált függvényhez.

1. Az előfeltételek ellenőrzése

  • Az Azure OpenAI-hoz való hozzáférés beszerzése az Azure-előfizetésben. Ha még nem kapott hozzáférést, töltse ki ezt az űrlapot a hozzáférés kéréséhez.
  • Az Azurite Storage emulátor. Bár tényleges Azure Storage-fiókot is használhat, a cikk feltételezi, hogy ezt az emulátort használja.

2. Azure OpenAI-erőforrások létrehozása

Az alábbi lépések bemutatják, hogyan hozhat létre Azure OpenAI-adatmodellt az Azure Portalon.

  1. Jelentkezzen be azure-előfizetésével az Azure Portalon.

  2. Válassza az Erőforrás létrehozása lehetőséget, és keresse meg az Azure OpenAI-t. A szolgáltatás megkeresése után válassza a Létrehozás lehetőséget.

  3. Az Azure OpenAI létrehozása lapon adja meg a következő információkat az Alapok lapon található mezőkről:

    Mező Leírás
    Előfizetés Az Ön előfizetése, amely az Azure OpenAI használatára lett előkészítve.
    Erőforráscsoport Az előző cikkben a függvényalkalmazáshoz létrehozott erőforráscsoport. Ezt az erőforráscsoportnevet úgy találja meg, hogy a jobb gombbal a függvényalkalmazásra kattint az Azure Resources böngészőben, kiválasztja a tulajdonságokat, majd megkeresi a beállítást a resourceGroup visszaadott JSON-erőforrásfájlban.
    Régió Ideális esetben ugyanaz a hely, mint a függvényalkalmazás.
    Név Az Azure OpenAI-szolgáltatás erőforrásának leíró neve, például a mySampleOpenAI.
    Tarifacsomag Az erőforrás tarifacsomagja. Jelenleg csak a Standard szint érhető el az Azure OpenAI szolgáltatáshoz. A díjszabásról további információt az Azure OpenAI díjszabási oldalán talál

    Képernyőkép az Azure OpenAI-erőforrások Azure Portalon való konfigurálásáról.

  4. Válassza kétszer a Tovább gombot a Hálózat és a Címkék lap alapértelmezett értékeinek elfogadásához. A létrehozott szolgáltatás nem rendelkezik hálózati korlátozásokkal, beleértve az internetet is.

  5. Válassza a Következő lehetőséget, hogy a folyamat utolsó szakaszára lépjen: Véleményezés és küldés.

  6. Erősítse meg a konfigurációs beállításokat, és válassza a Létrehozás lehetőséget.

    Az Azure Portal értesítést jelenít meg, ha az új erőforrás elérhető. Válassza az Ugrás az erőforrásra lehetőséget az értesítésben, vagy keressen rá az új Azure OpenAI-erőforrásra név szerint.

  7. Az új erőforrás Azure OpenAI-erőforráslapján válassza az Ide kattintva megtekintheti a végpontokat az Essentials-végpontok> területen. Másolja ki a végpont URL-címét és a kulcsokat. Mentse ezeket az értékeket, később szüksége lesz rájuk.

Most, hogy rendelkezik a modellhez való csatlakozáshoz szükséges hitelesítő adatokkal az Azure OpenAI-ban, be kell állítania ezeket a hozzáférési hitelesítő adatokat az alkalmazásbeállításokban.

3. Modell üzembe helyezése

Most már üzembe helyezhet egy modellt. Az Azure OpenAI Studióban számos elérhető modell közül választhat.

Modell üzembe helyezéséhez kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure OpenAI Studióba.

  2. Válassza ki az előfizetést és a létrehozott Azure OpenAI-erőforrást, majd válassza az Erőforrás használata lehetőséget.

  3. A Felügyelet területen válassza a Központi telepítések lehetőséget.

  4. Válassza az Új üzembe helyezés létrehozása lehetőséget, és konfigurálja a következő mezőket:

    Mező Leírás
    Üzembe helyezés neve Válasszon nevet körültekintően. A kódban az üzembe helyezés neve az ügyfélkódtárak és a REST API-k használatával hívja meg a modellt, ezért később mentenie kell a használathoz.
    Modell kiválasztása A modellek elérhetősége régiónként változik. Az elérhető modellek régiónkénti listáját a Modellösszesítő táblázat és a régió rendelkezésre állása című témakörben találja.

    Fontos

    Amikor az API-val éri el a modellt, az API-hívásokban az alapul szolgáló modellnév helyett az üzembe helyezés nevére kell hivatkoznia, ami az OpenAI és az Azure OpenAI közötti egyik fő különbség. Az OpenAI csak a modell nevét igényli. Az Azure OpenAI-nak mindig szüksége van az üzembehelyezési névre, még akkor is, ha a modellparamétert használja. A dokumentumainkban gyakran vannak példák arra, hogy az üzembehelyezési nevek azonosak a modellnevekkel, így jelezve, hogy melyik modell működik egy adott API-végponttal. Végső soron az üzemelő példányok nevei bármilyen elnevezési konvenciót követhetnek a használati esethez legjobban.

  5. Fogadja el a beállítás többi részének alapértelmezett értékeit, és válassza a Létrehozás lehetőséget.

    Az üzembe helyezési táblázat egy új bejegyzést jelenít meg, amely megfelel az újonnan létrehozott modellnek.

Most már mindennel rendelkezik, amire szüksége van ahhoz, hogy Azure OpenAI-alapú szövegkiegészítést vegyen fel a függvényalkalmazásba.

4. Alkalmazásbeállítások frissítése

  1. A Visual Studio Code-ban nyissa meg az előző cikk befejezésekor létrehozott helyi kódprojektet.

  2. A projekt gyökérmappájában lévő local.settings.json fájlban frissítse a beállítást a AzureWebJobsStorage következőre UseDevelopmentStorage=true: . Ezt a lépést kihagyhatja, ha a AzureWebJobsStorage local.settings.json beállítása egy meglévő Azure Storage-fiók kapcsolati sztring értékére UseDevelopmentStorage=truevan állítva.

  3. A local.settings.json fájlban adja hozzá a következő beállításokat:

    • AZURE_OPENAI_ENDPOINT: a kötésbővítmény megköveteli. Állítsa ezt az értéket a korábban létrehozott Azure OpenAI-erőforrás végpontjára.
    • AZURE_OPENAI_KEY: a kötésbővítmény megköveteli. Állítsa be ezt az értéket az Azure OpenAI-erőforrás kulcsára.
    • CHAT_MODEL_DEPLOYMENT_NAME: a bemeneti kötés definiálására szolgál. Állítsa be ezt az értéket a modell üzembe helyezéséhez választott névre.
  4. Mentse a fájlt. Az Azure-ban való üzembe helyezéskor ezeket a beállításokat is hozzá kell adnia a függvényalkalmazáshoz.

5. Kötésbővítmények regisztrálása

Mivel Azure OpenAI kimeneti kötést használ, a projekt futtatása előtt telepítenie kell a megfelelő kötési bővítményt.

A HTTP- és időzítő-eseményindítók kivételével a kötések bővítménycsomagként vannak implementálva. Az Azure OpenAI bővítménycsomag projekthez való hozzáadásához futtassa ezt a dotnet add package parancsot a Terminálablakban :

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI --prerelease

5. A bővítménycsomag frissítése

Az előzetes verziójú Azure OpenAI-kötések eléréséhez a bővítménycsomag előzetes verzióját kell használnia, amely tartalmazza ezt a bővítményt.

Cserélje le az extensionBundle aktuális host.json fájl beállítását erre a JSON-ra:

 "extensionBundle": {
   "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
   "version": "[4.*, 5.0.0)"
 }

Most már használhatja az Azure OpenAI kimeneti kötést a projektben.

6. Szövegkiegészítés visszaadása a modellből

A hozzáadott kód létrehoz egy HTTP-függvényvégpontot whois a meglévő projektben. Ebben a függvényben egy GET-kérés URL-paraméterében name átadott adatok használatával dinamikusan hozhat létre befejezési kérést. Ez a dinamikus kérés egy szövegkiegészítési bemeneti kötéshez van kötve, amely a modell válaszát adja vissza a parancssor alapján. A modell befejezése a HTTP-válaszban lesz visszaadva.

  1. A meglévő HttpExample osztályfájlban adja hozzá ezt az using utasítást:

    using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
    
  2. Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot whoisdefiniál:

    [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.");
        }
    }
    
  1. Frissítse a pom.xml projektfájlt, hogy hozzáadja ezt a hivatkozást a properties gyűjteményhez:

    <azure-functions-java-library-openai>0.3.0-preview</azure-functions-java-library-openai>
    
  2. Ugyanabban a fájlban adja hozzá ezt a függőséget a dependencies gyűjteményhez:

    <dependency>
        <groupId>com.microsoft.azure.functions</groupId>
        <artifactId>azure-functions-java-library-openai</artifactId>
        <version>${azure-functions-java-library-openai}</version>
    </dependency>
    
  3. A meglévő Function.java projektfájlban adja hozzá az alábbi import utasításokat:

    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion;
    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
    
  4. Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot whoisdefiniál:

    @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();
    }
    
  1. A Visual Studio Code-ban nyomja le az F1 billentyűt, majd a parancskatalógus típusában Azure Functions: Create Function...válassza a HTTP-eseményindítót, írja be a függvény nevét whois, majd nyomja le az Enter billentyűt.

  2. Az új whois.js kódfájlban cserélje le a fájl tartalmát a következő kódra:

    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() }
        }
    });
    
  1. A Visual Studio Code-ban nyomja le az F1 billentyűt, majd a parancskatalógus típusában Azure Functions: Create Function...válassza a HTTP-eseményindítót, írja be a függvény nevét whois, majd nyomja le az Enter billentyűt.

  2. Az új whois.ts kódfájlban cserélje le a fájl tartalmát a következő kódra:

    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() }
        }
    });
    
  1. A meglévő function_app.py projektfájlban adja hozzá ezt az import utasítást:

    import json
    
  2. Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot whoisdefiniál:

    @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)
    
  1. A Visual Studio Code-ban nyomja le az F1 billentyűt, majd a parancskatalógus típusában Azure Functions: Create Function...válassza a HTTP-eseményindítót, írja be a függvény nevét whois, válassza a Névtelen lehetőséget, majd nyomja le az Enter billentyűt.

  2. Nyissa meg az új whois/function.json kódfájlt, és cserélje le a tartalmát erre a kódra, amely hozzáad egy definíciót a TextCompletionResponse bemeneti kötéshez:

    {
      "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%"
        }
      ]
    }
    
  3. Cserélje le a kódfájl tartalmát erre a whois/run.ps1 kódra, amely a bemeneti kötésre adott választ adja vissza:

    using namespace System.Net
    
    param($Request, $TriggerMetadata, $TextCompletionResponse)
    
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
            StatusCode = [HttpStatusCode]::OK
            Body       = $TextCompletionResponse.Content
        })
    

7. Futtassa a függvényt

  1. A Visual Studio Code-ban nyomja le az F1 billentyűt, majd a parancskatalógus típusában Azurite: Start , majd nyomja le az Enter billentyűt az Azurite Storage emulátor elindításához.

  2. Nyomja le az F5 billentyűt a függvényalkalmazás projektjének és a Core Tools hibakeresési módban való elindításához.

  3. Ha a Core Tools fut, küldjön egy GET kérést a whois végpontfüggvénynek az elérési úton található névvel, például az alábbi URL-címmel:

    http://localhost:7071/api/whois/<NAME>

    Cserélje le a sztringet <NAME> a parancssornak átadni kívánt értékre "Who is {name}?" . A <NAME> nyilvános adat URL-kódolt nevének kell lennie, például Abraham%20Lincoln.

    A megjelenő válasz az Azure OpenAI-modell szövegkiegészítési válasza.

  4. A válasz visszaadása után nyomja le a Ctrl + C billentyűkombinációt a Core Tools leállításához.

8. Erőforrások törlése

Az Azure-ban az erőforrások függvényalkalmazásokra, függvényekre, tárfiókokra és így tovább. Ezek erőforráscsoportokba vannak csoportosítva, és a csoport törlésével törölheti a csoport összes elemét.

E rövid útmutatók elvégzéséhez erőforrásokat hozott létre. Ezekért az erőforrásokért a fiók állapotától és a szolgáltatás díjszabásától függően számlázhatók. Ha már nincs szüksége ezekre az erőforrásokra, a következőképpen törölheti őket:

  1. A Visual Studio Code-ban nyomja le az F1 billentyűt a parancskatalógus megnyitásához. A parancskatalógusban keresse meg és válassza ki a kívánt parancsot Azure: Open in portal.

  2. Válassza ki a függvényalkalmazást, és nyomja le az Enter billentyűt. Megnyílik a függvényalkalmazás lapja az Azure Portalon.

  3. Az Áttekintés lapon válassza az Erőforráscsoport melletti elnevezett hivatkozást.

    Képernyőkép a függvényalkalmazás oldaláról törölni kívánt erőforráscsoport kiválasztásáról.

  4. Az Erőforráscsoport lapon tekintse át a belefoglalt erőforrások listáját, és ellenőrizze, hogy ezek-e törölni kívánt erőforrások.

  5. Válassza az Erőforráscsoport törlése elemet, majd kövesse az utasításokat.

    A törlés eltarthat néhány percig. Amint a művelet befejeződött, néhány másodpercre egy értesítés jelenik meg. Az értesítést úgy is megtekintheti, ha kiválasztja a harang ikont az oldal tetején.