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
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- Hajtsa végre a Visual Studio Code rövid útmutatójának 1. részében szereplő lépéseket.
- 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.
- Telepítse a .NET Core CLI-eszközöket.
- 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.
Jelentkezzen be azure-előfizetésével az Azure Portalon.
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.
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 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.
Válassza a Következő lehetőséget, hogy a folyamat utolsó szakaszára lépjen: Véleményezés és küldés.
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.
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:
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.
A Felügyelet területen válassza a Központi telepítések lehetőséget.
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.
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
A Visual Studio Code-ban nyissa meg az előző cikk befejezésekor létrehozott helyi kódprojektet.
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őreUseDevelopmentStorage=true
: . Ezt a lépést kihagyhatja, ha aAzureWebJobsStorage
local.settings.json beállítása egy meglévő Azure Storage-fiók kapcsolati sztring értékéreUseDevelopmentStorage=true
van állítva.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.
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.
A meglévő
HttpExample
osztályfájlban adja hozzá ezt azusing
utasítást:using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot
whois
definiá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."); } }
Frissítse a
pom.xml
projektfájlt, hogy hozzáadja ezt a hivatkozást aproperties
gyűjteményhez:<azure-functions-java-library-openai>0.3.0-preview</azure-functions-java-library-openai>
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>
A meglévő
Function.java
projektfájlban adja hozzá az alábbiimport
utasításokat:import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion; import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot
whois
definiá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(); }
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étwhois
, majd nyomja le az Enter billentyűt.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() } } });
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étwhois
, majd nyomja le az Enter billentyűt.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() } } });
A meglévő
function_app.py
projektfájlban adja hozzá ezt azimport
utasítást:import json
Ugyanabban a fájlban adja hozzá ezt a kódot, amely egy új HTTP-eseményindító végpontot
whois
definiá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)
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étwhois
, válassza a Névtelen lehetőséget, majd nyomja le az Enter billentyűt.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 aTextCompletionResponse
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%" } ] }
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
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.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.
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áulAbraham%20Lincoln
.A megjelenő válasz az Azure OpenAI-modell szövegkiegészítési válasza.
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:
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
.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.
Az Áttekintés lapon válassza az Erőforráscsoport melletti elnevezett hivatkozást.
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.
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.