Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példa archiválva van, és nem támogatott. Elmagyarázta, hogyan hozhat létre egyéni webes API-képességet a Python és a Visual Studio Code használatával. A példa egy Azure Function szolgáltatást használt, amely implementálja a speciális készségfelületet.
Előfeltételek
Tekintse át az egyéni készség felületét az egyéni képesség által implementálandó bemenetek és kimenetek áttekintéséhez.
Állítsd be a környezetet. A rövid útmutatót követtük: Függvény létrehozása az Azure-ban Pythonnal a Visual Studio Code használatával kiszolgáló nélküli Azure-függvény beállítása Visual Studio Code- és Python-bővítmények használatával. A rövid útmutató végigvezeti a következő eszközök és összetevők telepítésén:
Azure-függvény létrehozása
Ez a példa egy Azure-függvény használatával szemlélteti a webes API-k üzemeltetésének fogalmát, de más megközelítések is lehetségesek. Mindaddig, amíg megfelel a kognitív képességek felületi követelményeinek, az ön által használt megközelítés nem lényegtelen. Az Azure Functions azonban megkönnyíti az egyéni képességek létrehozását.
Projekt létrehozása a függvényhez
A Visual Studio Code Azure Functions-projektsablonja létrehoz egy helyi projektet, amely közzétehető egy azure-beli függvényalkalmazásban. A függvényalkalmazásokkal logikai egységként csoportosíthatja a függvényeket az erőforrások felügyeletéhez, üzembe helyezéséhez és megosztásához.
- 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
Azure Functions: Create new project.... - Válasszon egy könyvtárhelyet a projekt-munkaterülethez, és válassza a . Ne használjon olyan projektmappát, amely már egy másik munkaterület része.
- Válasszon nyelvet a függvényalkalmazás-projekthez. Ebben az oktatóanyagban válassza a Python-t.
- Válassza ki a Python-verziót (a 3.7.5-ös verziót az Azure Functions támogatja).
- Válasszon egy sablont a projekt első függvényéhez. Válassza a(z) HTTP-trigger lehetőséget egy HTTP-vel aktivált függvény létrehozásához az új függvényalkalmazásban.
- Adjon meg egy függvénynevet. Ebben az esetben használjuk Concatenator
- Engedélyezési szintként válassza függvény. A függvény HTTP-végpontjának meghívásához függvényelérési kulcsot fog használni.
- Adja meg, hogyan szeretné megnyitni a projektet. Ebben a lépésben válassza a Hozzáadás munkaterülethez lehetőséget a függvényalkalmazás létrehozásához az aktuális munkaterületen.
A Visual Studio Code egy új munkaterületen hozza létre a függvényalkalmazás-projektet. Ez a projekt tartalmazza a host.json és a local.settings.jsonconfiguration fájlokat, valamint a nyelvspecifikus projektfájlokat.
Egy új HTTP-aktivált függvény is létrejön a függvényalkalmazás-projekt Concatenator mappájában. Benne lesz egy "__init__.py" nevű fájl, amely a következő tartalommal rendelkezik:
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
Most módosítsuk a kódot az egyéni képességfelület követéséhez. Cserélje le az alapértelmezett kódot a következő tartalomra:
import logging
import azure.functions as func
import json
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
try:
body = json.dumps(req.get_json())
except ValueError:
return func.HttpResponse(
"Invalid body",
status_code=400
)
if body:
result = compose_response(body)
return func.HttpResponse(result, mimetype="application/json")
else:
return func.HttpResponse(
"Invalid body",
status_code=400
)
def compose_response(json_data):
values = json.loads(json_data)['values']
# Prepare the Output before the loop
results = {}
results["values"] = []
for value in values:
output_record = transform_value(value)
if output_record != None:
results["values"].append(output_record)
return json.dumps(results, ensure_ascii=False)
## Perform an operation on a record
def transform_value(value):
try:
recordId = value['recordId']
except AssertionError as error:
return None
# Validate the inputs
try:
assert ('data' in value), "'data' field is required."
data = value['data']
assert ('text1' in data), "'text1' field is required in 'data' object."
assert ('text2' in data), "'text2' field is required in 'data' object."
except AssertionError as error:
return (
{
"recordId": recordId,
"errors": [ { "message": "Error:" + error.args[0] } ]
})
try:
concatenated_string = value['data']['text1'] + " " + value['data']['text2']
# Here you could do something more interesting with the inputs
except:
return (
{
"recordId": recordId,
"errors": [ { "message": "Could not complete operation for record." } ]
})
return ({
"recordId": recordId,
"data": {
"text": concatenated_string
}
})
A transform_value metódus egyetlen rekordon hajt végre műveletet. A metódust az igényeinek megfelelően módosíthatja. Ne felejtse el elvégezni a szükséges bemenet-ellenőrzést, és ha a művelet nem hajtható végre, ne felejtsen el hibákat és figyelmeztetéseket visszaadni.
A kód helyi hibakeresése
A Visual Studio Code megkönnyíti a kód hibakeresését. Nyomja le az F5 billentyűt, vagy lépjen a Hibakeresés menüre, és válassza Hibakeresés indításalehetőséget.
A kódban bármelyik töréspontot beállíthatja úgy, hogy lenyomja az "F9"-et a kívánt soron.
A hibakeresés megkezdése után a függvény helyileg fog futni. Egy olyan eszközzel, mint a Postman vagy a Fiddler, kiadhatja a kérelmet a localhostnak. Jegyezze fel a helyi végpont helyét a terminálablakban.
Függvényalkalmazás létrehozása az Azure-ban
Ha elégedett a függvény viselkedésével, közzéteheti. Eddig lokálisan dolgozott. Ebben a szakaszban egy függvényalkalmazást fog létrehozni az Azure-ban, majd üzembe helyezi a helyi projektet a létrehozott alkalmazásban.
Az alkalmazás létrehozása a Visual Studio Code-ból
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 a Függvényalkalmazás létrehozása az Azure-ban.
Ha több aktív előfizetéssel rendelkezik, válassza ki az alkalmazás előfizetését.
Adjon meg egy globálisan egyedi nevet a függvényalkalmazásnak. Írjon be egy URL-címre érvényes nevet.
Válassza ki a futtatási környezetet, és válassza ki a helyileg futtatott nyelvi verziót.
Válasszon egy helyet az alkalmazásnak. Ha lehetséges, válassza ki ugyanazt a régiót, amely a keresési szolgáltatást is üzemelteti.
Az alkalmazás létrehozása néhány percet vesz igénybe. Ha elkészült, az új alkalmazást az aktív előfizetés Erőforrások és Függvényalkalmazás alatt láthatja.
Üzembe helyezés az Azure-ban
A Visual Studio Code-ban továbbra is nyomja le az F1 billentyűt a parancskatalógus megnyitásához. A parancspalettában keressen rá, majd válassza a(z) Üzembe helyezés a függvényalkalmazásba...lehetőséget.
Válassza ki a létrehozott függvényalkalmazást.
Ellenőrizze, hogy folytatni szeretné-e a műveletet, majd válassza a Üzembe helyezéslehetőséget. Az üzembe helyezés állapotát a kimeneti ablakban figyelheti.
Váltson a Azure portál, majd lépjen a Minden erőforrásszakaszba. Keresse meg az előző lépésben megadott globálisan egyedi névvel üzembe helyezett függvényalkalmazást.
Borravaló
A Visual Studio Code-ban kattintson a jobb gombbal a függvényalkalmazásra, és válassza a Megnyitás a Portálonlehetőséget.
A portál bal oldalán válassza a Függvényeklehetőséget, majd válassza ki a létrehozott függvényt.
A függvény áttekintő lapján válassza a Függvény URL-címének lekérése lehetőséget a felső parancssávon. Ez lehetővé teszi, hogy másolja az URL-címet a függvény meghívásához.
A függvény tesztelése az Azure-ban
A másolt alapértelmezett gazdagépkulcs és URL-cím használatával tesztelje a függvényt az Azure Portalon.
A bal oldalon, a Fejlesztőeszközök csoportban válassza a Code + Testlehetőséget.
Válassza a Teszt/Futtatás lehetőséget a parancssávban.
Bemenetként használja az alapértelmezett Postbillentyűt, majd illessze be a kérelem törzsébe:
{ "values": [ { "recordId": "e1", "data": { "text1": "Hello", "text2": "World" } }, { "recordId": "e2", "data": "This is an invalid input" } ] }Válassza a Futtatás lehetőséget.
képernyőképe
Ennek a példának ugyanazt az eredményt kell eredményeznie, amit korábban a függvény helyi környezetben való futtatásakor látott.
Hozzáadás egy készségkészlethez
Most, hogy új egyéni képességekkel rendelkezik, hozzáadhatja azt a készségkészlethez. Az alábbi példa bemutatja, hogyan hívhatja meg azt a képességet, amely összefűzi a dokumentum címét és szerzőét egyetlen mezőbe, amelyet merged_title_author hívunk.
Cserélje az [your-function-url-here]-t az új Azure-függvény URL-címével.
{
"skills": [
"[... other existing skills in the skillset are here]",
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "Our new search custom skill",
"uri": "https://[your-function-url-here]",
"context": "/document/merged_content/organizations/*",
"inputs": [
{
"name": "text1",
"source": "/document/metadata_title"
},
{
"name": "text2",
"source": "/document/metadata_author"
},
],
"outputs": [
{
"name": "text",
"targetName": "merged_title_author"
}
]
}
]
}
Ne felejtsen el hozzáadni egy "outputFieldMapping"-et az indexelő definíciójához, hogy a "merged_title_author"-t átvigye a keresési index "fullname" mezőjéhez.
"outputFieldMappings": [
{
"sourceFieldName": "/document/content/merged_title_author",
"targetFieldName": "fullname"
}
]