Egyéni képesség hozzáadása Azure AI Keresés bővítési folyamathoz

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az AI-bővítési folyamatok beépített készségeket és egyéni képességeket is tartalmazhatnak, amelyeket ön hoz létre és tesz közzé. Az egyéni kód a keresési szolgáltatáson kívül fut (például Azure függvényként), de fogadja a bemeneteket, és kimeneteket küld a képességkészletnek, ugyanúgy, mint bármely más képességnek. Az adatokat azon földrajzi helyen dolgozzák fel, ahol a modell üzembe van helyezve.

Az egyéni készségek összetettnek tűnhetnek, de könnyen implementálhatók. Ha már rendelkezik olyan csomagokkal, amelyek mintaegyezési vagy besorolási modelleket biztosítanak, a blobokból kinyert tartalmat átadhatja ezeknek a modelleknek feldolgozás céljából. Mivel az AI-gazdagítás Azure-alapú, a modellt is az Azure-ban kell üzemeltetnie. A gyakori üzemeltetési lehetőségek közé tartozik a Azure Functions vagy kontainers.

Ha egyéni készséget fejleszt, ez a cikk azt a felületet ismerteti, a segítségével integrálhatja a képességet a folyamatba. Az elsődleges követelmény a bemenetek elfogadása és a kimenetek olyan módon történő kibocsátása, amelyet a képességkészlet teljes mértékben felhasználhat. Ezért a cikk középpontjában a bővítési folyamat által igényelt bemeneti és kimeneti formátumok áll.

Az egyéni készségek előnyei

Az egyéni képességek létrehozása lehetővé teszi a tartalomra jellemző egyedi átalakítások beillesztését. Létrehozhat például egyéni besorolási modelleket az üzleti és pénzügyi szerződések és dokumentumok megkülönböztetéséhez, vagy hozzáadhat olyan beszédfelismerési képességet, amely részletesebben keres releváns tartalmakat a hangfájlokban. A lépésről-lépésre példát lásd : Egyéni képesség létrehozása AI-bővítéshez.

A végpont és az időtúllépés időközének beállítása

Adja meg az egyéni képességek felületét a Custom Web API-képességen keresztül.

"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "This skill has a 230-second timeout",
"uri": "https://[your custom skill uri goes here]",
"authResourceId": "[for managed identity connections, your app's client ID goes here]",
"timeout": "PT230S",

Az URI a függvény vagy alkalmazás HTTPS-végpontja. Az URI beállításakor győződjön meg arról, hogy az URI biztonságos (HTTPS). Ha egy Azure függvényalkalmazásban üzemelteti a kódot, a kérés engedélyezéséhez adjon meg egy API-kulcsot a fejlécben vagy URI-paraméterként az URI-ban.

Ha a függvény vagy alkalmazás Azure felügyelt identitásokat és Azure szerepköröket használ a hitelesítéshez és az engedélyezéshez, az egyéni képesség egy hitelesítési jogkivonatot is tartalmazhat a kérelemben. A következő pontok a megközelítés követelményeit írják le:

Győződjön meg arról, hogy uri az alkalmazás által azonosított authResourceIdvégpontra mutat. A nem egyező értékek hitelesítési hibákat vagy kéréseket okozhatnak egy nem kívánt végpontnak. A biztonsági útmutatásért, az ajánlott eljárásokért és a konfiguráció ellenőrzésének lépéseiért tekintse meg a felügyelt identitás hitelesítésének biztonsági szempontjait.

Alapértelmezés szerint időtúllépés történik, ha a válasz nem érkezik 30 másodpercen belül (PT30S). Az indexelési folyamat szinkron, és az indexelés időtúllépési hibát okoz, ha az adott időkeretben nem érkezik válasz. Az intervallumot a paraméter (timeout) beállításával PT230S legfeljebb 230 másodpercre növelheti.

Ha egy IP-hozzáférési korlátozásokkal védett végpont nem válaszol, ideiglenesen állítson be timeout egy rövid értéket, például PT10Saz időtúllépési hiba gyorsabb felszínre hozásához. Egy Azure függvényalkalmazás esetén kezelje a bejövő IP-szabályokat a Beállítások>hálózatkezelési>hozzáférési korlátozások területen. Az IP-címek engedélyezéséhez lásd: IP-tűzfalszabályok konfigurálása indexelő kapcsolatok engedélyezéséhez.

Webes API-bemenetek formázása

A webes API-nak rekordtömböt kell elfogadnia a feldolgozáshoz. Minden rekordon belül adjon meg egy tulajdonságcsomagot a webes API bemeneteként.

Tegyük fel, hogy létre szeretne hozni egy alapszintű bővítőt, amely azonosítja a szerződés szövegében említett első dátumot. Ebben a példában az egyéni képesség egyetlen bemenetet fogad el. contractText A képesség egyetlen kimenettel is rendelkezik, amely a szerződés dátuma. A gazdagító érdekesebbé tétele érdekében térjen vissza contractDate egy többrészes összetett típus formájában.

A webes API-nak készen kell állnia a bemeneti rekordok kötegének fogadására. A tömb minden tagja values egy adott rekord bemenetét jelöli. Minden rekordhoz a következő elemek szükségesek:

  • Egy recordId tag, amely egy adott rekord egyedi azonosítója. Amikor a dúsító eredményeket ad vissza, tartalmaznia kell ezt a(z) recordId elemet, hogy a hívó össze tudja rendelni a rekordok eredményeit a bemenetekkel.

  • Egy data elem, amely az egyes rekordokhoz tartozó beviteli mezők gyűjteménye.

Az eredményként kapott webes API-kérés a következőképpen nézhet ki:

{
    "values": [
      {
        "recordId": "a1",
        "data":
           {
             "contractText": 
                "This is a contract that was issued on November 3, 2023 and that involves... "
           }
      },
      {
        "recordId": "b5",
        "data":
           {
             "contractText": 
                "In the City of Seattle, WA on February 5, 2018 there was a decision made..."
           }
      },
      {
        "recordId": "c3",
        "data":
           {
             "contractText": null
           }
      }
    ]
}

A gyakorlatban a kód több száz vagy több ezer rekorddal hívható meg az itt látható három helyett.

Webes API-kimenetek formázása

A kimeneti formátum olyan rekordok készlete, amelyek egy recordId és egy tulajdonságcsomagot tartalmaznak. Ez a példa csak egy kimenettel rendelkezik, de több tulajdonságot is visszaadhat. Ajánlott eljárásként érdemes lehet hibaüzeneteket és figyelmeztető üzeneteket visszaadni, ha egy rekordot nem sikerült feldolgozni.

{
  "values": 
  [
      {
        "recordId": "b5",
        "data" : 
        {
            "contractDate":  { "day" : 5, "month": 2, "year" : 2018 }
        }
      },
      {
        "recordId": "a1",
        "data" : {
            "contractDate": { "day" : 3, "month": 11, "year" : 2023 }                    
        }
      },
      {
        "recordId": "c3",
        "data" : 
        {
        },
        "errors": [ { "message": "contractText field required "}   ],  
        "warnings": [ {"message": "Date not found" }  ]
      }
    ]
}

Egyéni képesség hozzáadása egy készségkészlethez

Webes API-bővítő létrehozásakor a kérés részeként HTTP-fejléceket és paramétereket határozhat meg. Az alábbi kódrészlet bemutatja, hogyan vehetők fel a kérelemparaméterek és az opcionális HTTP-fejlécek a képességkészlet definíciójában. A HTTP-fejléc beállítása hasznos, ha át kell adnia a kódnak a konfigurációs beállításokat.

{
    "skills": [
      {
        "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
        "name": "myCustomSkill",
        "description": "This skill calls an Azure function, which in turn calls TA sentiment",
        "uri": "https://indexer-e2e-webskill.azurewebsites.net/api/DateExtractor?language=en",
        "context": "/document",
        "httpHeaders": {
            "DateExtractor-Api-Key": "foo"
        },
        "inputs": [
          {
            "name": "contractText",
            "source": "/document/content"
          }
        ],
        "outputs": [
          {
            "name": "contractDate",
            "targetName": "date"
          }
        ]
      }
  ]
}

Note

Amikor GET-tel kéri le a tudáskészletet, a szolgáltatás minden <redacted> értékhez httpHeaders értéket ad vissza, a hitelesítő adatok felfedésének megelőzése érdekében. Ha a készséget a tárolt fejlécértékek módosítása nélkül szeretné frissíteni, állítsa az egyes értékeket a következőre <unchanged>: . További részletekért és példákért lásd: Custom Web API skill – Skill parameters.

Videó megtekintése

A bevezető videó és a bemutató megtekintéséhez nézze meg az alábbi demót.

Következő lépések

Ez a cikk az egyéni készségek készségkészletbe való integrálásához szükséges felületi követelményeket ismerteti. Az egyéni készségekről és a képességkészletek összetételéről az alábbi forrásokból tudhat meg többet: