A Text Analytics használata állapottárolókhoz

A tárolók lehetővé teszik a Text Analytics for Health API üzemeltetését a saját infrastruktúráján. Ha olyan biztonsági vagy adatszabályozási követelményekkel rendelkezik, amelyeket nem lehet teljesíteni a Text Analytics távolról történő meghívásával, akkor a tárolók jó választásnak bizonyulhatnak.

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

A Text Analytics állapottárolókhoz való használata előtt meg kell felelnie az alábbi előfeltételeknek. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

  • A Docker telepítve van egy gazdagépen. A Dockert úgy kell konfigurálni, hogy a tárolók kapcsolódhassanak és számlázási adatokat küldjenek az Azure-ba.
    • Windows rendszeren a Dockert úgy is konfigurálnia kell, hogy támogassa a Linux-tárolókat.
    • Ismernie kell a Docker alapfogalmait.
  • Az ingyenes (F0) vagy standard (S) tarifacsomaggal rendelkező nyelvi erőforrás.

A szükséges paraméterek összegyűjtése

Három elsődleges paraméter szükséges az összes Azure AI-tárolóhoz. A Microsoft szoftverlicenc-feltételeinek elfogadási értékkel kell rendelkeznie. Végponti URI- és API-kulcsra is szükség van.

Végpont URI-ja

Az {ENDPOINT_URI} érték a megfelelő Azure AI-szolgáltatási erőforrás Azure Portal áttekintési oldalán érhető el. Lépjen az Áttekintés lapra, mutasson a végpont fölé, és megjelenik egy Másolás vágólapra ikon. Szükség esetén másolja és használja a végpontot.

Screenshot that shows gathering the endpoint URI for later use.

Kulcsok

Az {API_KEY} érték a tároló elindítására szolgál, és elérhető a megfelelő Azure AI-szolgáltatási erőforrás Kulcsok lapján. Lépjen a Kulcsok lapra, és válassza a Vágólapra másolás ikont.

Screenshot that shows getting one of the two keys for later use.

Fontos

Ezek az előfizetési kulcsok az Azure AI-szolgáltatások API-ját használják. Ne ossza meg a kulcsait. Biztonságosan tárolja őket. Használja például az Azure Key Vaultot. Azt is javasoljuk, hogy ezeket a kulcsokat rendszeresen újragenerálja. API-hívás létrehozásához csak egy kulcs szükséges. Az első kulcs újragenerálása után a második kulcsot használhatja a szolgáltatáshoz való folyamatos hozzáféréshez.

A gazdagépre vonatkozó követelmények és javaslatok

A gazdagép egy x64-alapú számítógép, amely a Docker-tárolót futtatja. Ez lehet egy számítógép a helyszínen vagy egy Docker-üzemeltetési szolgáltatás az Azure-ban, például:

Az alábbi táblázat az állapottárolókhoz készült Text Analytics minimális és ajánlott specifikációit ismerteti. Minden processzormagnak legalább 2,6 gigahertzesnek (GHz) vagy gyorsabbnak kell lennie. Az engedélyezett másodpercenkénti tranzakciók (TPS) is fel vannak sorolva.

Minimális gazdagép-specifikációk Ajánlott gazdagép-specifikációk Minimális TPS Maximális TPS
1 dokumentum/kérelem 4 magos, 12 GB-os memória 6 magos, 12 GB-os memória 15 30
10 dokumentum/kérelem 6 magos, 16 GB-os memória 8 magos, 20 GB-os memória 15 30

A processzormag és a memória megfelel a --cpus parancs részeként docker run használt beállításoknak és --memory beállításoknak.

A tároló lemezképének lekérése docker pull

Az állapottároló szövegelemzési rendszerképe a mcr.microsoft.com tárolóregisztrációs adatbázis szindikátumán található. Az adattárban azure-cognitive-services/textanalytics/ található, és neve healthcare. A teljes tárolórendszerkép neve a következő: mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare

A tároló legújabb verziójának használatához használhatja a címkét latest . Az MCR-en a címkék teljes listája is megtalálható.

A parancs használatával töltse le ezt a docker pull tárolórendszerképet a Microsoft nyilvános tárolóregisztrációs adatbázisából. A kiemelt címkék a Microsoft Container Registryben találhatók

docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name>

Tipp.

A docker images paranccsal listázhatja a letöltött tárolólemezképeket. Az alábbi parancs például az egyes letöltött tárolólemezképek azonosítóját, adattárát és címkéjét sorolja fel táblázatként formázva:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

A tároló futtatása a következővel: docker run

Ha a tároló a gazdaszámítógépen van, a docker-futtatási paranccsal futtassa a tárolókat. A tároló addig fut, amíg le nem állítja.

Fontos

  • A következő szakaszok docker-parancsai a fordított perjelet használják, \vonal-folytatási karakterként. Cserélje le vagy távolítsa el ezt a gazda operációs rendszer követelményei alapján.
  • A Eulatároló futtatásához meg kell adni a , Billingés ApiKey a beállításokat, ellenkező esetben a tároló nem indul el. További információ: Számlázás.
    • A felelős AI -nyugtának (RAI) is jelen acceptkell lennie .
  • A hangulatelemzési és nyelvfelismerési tárolók az API 3-at használják, és általánosan elérhetők. A kulcskifejezés-kinyerési tároló az API 2-es verzióját használja, és előzetes verzióban érhető el.

Az állapottároló Text Analytics szolgáltatását többféleképpen is telepítheti és futtathatja.

  • Az Azure Portal használatával hozzon létre egy nyelvi erőforrást, és használja a Dockert a tároló lekéréséhez.
  • A tároló futtatásához használjon Egy Azure-beli virtuális gépet a Dockerrel.
  • Az erőforrások üzembe helyezésének és a tárolók konfigurálásának automatizálásához használja az alábbi PowerShell- és Azure CLI-szkripteket.

Ha a Text Analytics állapottárolót használ, az API-kérésekben és válaszokban szereplő adatok nem láthatók a Microsoft számára, és nem használhatók az adatokra alkalmazott modell betanítására.

Futtassa helyileg a tárolót

Ha a tárolót a saját környezetében szeretné futtatni a tároló lemezképének letöltése után, hajtsa végre a következő docker run parancsot. Cserélje le az alábbi helyőrzőket a saját értékeire:

Helyőrző Érték Formátum vagy példa
{API_KEY} A nyelvi erőforrás kulcsa. Az erőforrás kulcs- és végpontoldalán , az Azure Portalon található. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} Az API eléréséhez használt végpont. Az erőforrás kulcs- és végpontoldalán , az Azure Portalon található. https://<your-custom-subdomain>.cognitiveservices.azure.com
docker run --rm -it -p 5000:5000 --cpus 6 --memory 12g \
mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name> \
Eula=accept \
rai_terms=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} 

A parancs a következőket hajtja végre:

  • A Text Analytics állapottárolójának futtatása a tároló lemezképéből
  • 6 processzormagot és 12 gigabájt (GB) memóriát foglal le
  • Az 5000-s TCP-portot teszi elérhetővé, és pszeudo-TTY-t foglal le a tárolóhoz
  • Elfogadja a végfelhasználói licencszerződést (EULA) és a felelős AI-feltételeket
  • A tárolót a kilépés után automatikusan eltávolítja. A tárolólemezkép továbbra is elérhető a gazdaszámítógépen.

Bemutató felhasználói felület a kimenet megjelenítéséhez

A tároló REST-alapú lekérdezés-előrejelzési végpont API-kat nyújt. Egy vizualizációs eszközt is biztosítottunk a tárolóban, amely a tároló végpontjának hozzáfűzésével /demo érhető el. Példa:

http://<serverURL>:5000/demo

Az alábbi cURL-példakéréssel elküldhet egy lekérdezést az üzembe helyezett tárolónak, és a változót a serverURL megfelelő értékre cserélheti.

curl -X POST 'http://<serverURL>:5000/text/analytics/v3.1/entities/health' --header 'Content-Type: application/json' --header 'accept: application/json' --data-binary @example.json

A tároló telepítése az Azure Web App for Containers használatával

Az Azure Web App for Containers egy Azure-erőforrás, amely a tárolók felhőben való futtatására van dedikált. Olyan beépített képességeket kínál, mint az automatikus skálázás, a Docker-tárolók és a Docker-összeállítás támogatása, a HTTPS-támogatás és még sok más.

Feljegyzés

Az Azure Web App használatával automatikusan kap egy tartományt a következő formában: <appservice_name>.azurewebsites.net

Futtassa ezt a PowerShell-szkriptet az Azure CLI-vel egy webalkalmazás tárolókhoz való létrehozásához az előfizetés és a tárolórendszerkép HTTPS-en keresztüli használatával. Várjon, amíg a szkript befejeződik (körülbelül 25–30 perc), mielőtt elküldené az első kérést.

$subscription_name = ""                    # THe name of the subscription you want you resource to be created on.
$resource_group_name = ""                  # The name of the resource group you want the AppServicePlan
                                           #    and AppSerivce to be attached to.
$resources_location = ""                   # This is the location you wish the AppServicePlan to be deployed to.
                                           #    You can use the "az account list-locations -o table" command to
                                           #    get the list of available locations and location code names.
$appservice_plan_name = ""                 # This is the AppServicePlan name you wish to have.
$appservice_name = ""                      # This is the AppService resource name you wish to have.
$TEXT_ANALYTICS_RESOURCE_API_KEY = ""      # This should be taken from the Language resource.
$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT = "" # This should be taken from the Language resource.
$DOCKER_IMAGE_NAME = "mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest"

az login
az account set -s $subscription_name
az appservice plan create -n $appservice_plan_name -g $resource_group_name --is-linux -l $resources_location --sku P3V2
az webapp create -g $resource_group_name -p $appservice_plan_name -n $appservice_name -i $DOCKER_IMAGE_NAME 
az webapp config appsettings set -g $resource_group_name -n $appservice_name --settings Eula=accept rai_terms=accept Billing=$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT ApiKey=$TEXT_ANALYTICS_RESOURCE_API_KEY

# Once deployment complete, the resource should be available at: https://<appservice_name>.azurewebsites.net

A tároló telepítése az Azure Container Instance használatával

Azure Container Instance (ACI) használatával is egyszerűbbé teheti az üzembe helyezést. Az ACI egy erőforrás, amely lehetővé teszi Docker-tárolók igény szerinti futtatását felügyelt, kiszolgáló nélküli Azure-környezetben.

Tekintse meg az Azure Container Instances használatát az ACI-erőforrások Azure Portalon történő üzembe helyezésének lépéseihez. Az alábbi PowerShell-szkriptet az Azure CLI használatával is használhatja, amely létrehoz egy ACI-t az előfizetésében a tárolórendszerkép használatával. Várjon, amíg a szkript befejeződik (körülbelül 25–30 perc), mielőtt elküldené az első kérést. Az ACI-erőforrásonkénti cpu-k maximális számának korlátozása miatt ne válassza ezt a beállítást, ha kérésenként 5-nél több nagyméretű dokumentumot (egyenként körülbelül 5000 karaktert) szeretne elküldeni. A rendelkezésre állással kapcsolatos információkért tekintse meg az ACI regionális támogatási cikkét.

Feljegyzés

Az Azure Container Instances nem támogatja a beépített tartományok HTTPS-támogatását. Ha HTTPS-ra van szüksége, manuálisan kell konfigurálnia, beleértve a tanúsítvány létrehozását és a tartomány regisztrálását. Ehhez az NGINX-sel kapcsolatos utasításokat alább találja.

$subscription_name = ""                    # The name of the subscription you want you resource to be created on.
$resource_group_name = ""                  # The name of the resource group you want the AppServicePlan
                                           # and AppService to be attached to.
$resources_location = ""                   # This is the location you wish the web app to be deployed to.
                                           # You can use the "az account list-locations -o table" command to
                                           # Get the list of available locations and location code names.
$azure_container_instance_name = ""        # This is the AzureContainerInstance name you wish to have.
$TEXT_ANALYTICS_RESOURCE_API_KEY = ""      # This should be taken from the Language resource.
$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT = "" # This should be taken from the Language resource.
$DNS_LABEL = ""                            # This is the DNS label name you wish your ACI will have
$DOCKER_IMAGE_NAME = "mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest"

az login
az account set -s $subscription_name
az container create --resource-group $resource_group_name --name $azure_container_instance_name --image $DOCKER_IMAGE_NAME --cpu 4 --memory 12 --port 5000 --dns-name-label $DNS_LABEL --environment-variables Eula=accept rai_terms=accept Billing=$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT ApiKey=$TEXT_ANALYTICS_RESOURCE_API_KEY

# Once deployment complete, the resource should be available at: http://<unique_dns_label>.<resource_group_region>.azurecontainer.io:5000

Biztonságos ACI-kapcsolat

Az ACI tároló API-val való használatakor alapértelmezés szerint nincs biztosítva biztonság. Ennek az az oka, hogy a tárolók általában egy pod részeként futnak, amelyet kívülről egy hálózati híd véd. Azonban módosíthatja a tárolót egy előtérbeli összetevővel, így a tárolóvégpont privát marad. Az alábbi példák az NGINX-et használják bejövő átjáróként a HTTPS/SSL és az ügyféltanúsítvány-hitelesítés támogatásához.

Feljegyzés

Az NGINX egy nyílt forráskódú, nagy teljesítményű HTTP-kiszolgáló és proxy. Az NGINX-tárolók egy tároló TLS-kapcsolatának megszüntetésére használhatók. Összetettebb NGINX-alapú bejövő TLS-megszüntetési megoldások is lehetségesek.

NGINX beállítása bejövő átjáróként

Az NGINX konfigurációs fájlokat használ a funkciók futásidőben való engedélyezéséhez. Ahhoz, hogy egy másik szolgáltatás TLS-leállítása engedélyezhető legyen, meg kell adnia egy SSL-tanúsítványt a TLS-kapcsolat megszakításához és proxy_pass a szolgáltatás címének megadásához. Az alábbiakban egy minta látható.

Feljegyzés

ssl_certificate Az NGINX-tároló helyi fájlrendszerében egy elérési út megadására számít. A megadott proxy_pass címnek elérhetőnek kell lennie az NGINX-tároló hálózatából.

Az NGINX-tároló betölti a HTTP-konfigurációs útvonal alá /etc/nginx/conf.d/ csatlakoztatott összes fájlt_.conf_.

server {
  listen              80;
  return 301 https://$host$request_uri;
}
server {
  listen              443 ssl;
  # replace with .crt and .key paths
  ssl_certificate     /cert/Local.crt;
  ssl_certificate_key /cert/Local.key;

  location / {
    proxy_pass http://cognitive-service:5000;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP  $remote_addr;
  }
}

Példa Docker-írási fájlra

Az alábbi példa bemutatja, hogyan hozható létre docker compose fájl az NGINX- és állapottárolók üzembe helyezéséhez:

version: "3.7"
services:
  cognitive-service:
    image: {IMAGE_ID}
    ports:
      - 5000:5000
    environment:
      - eula=accept
      - billing={ENDPOINT_URI}
      - apikey={API_KEY}
    volumes:
        # replace with path to logs folder
      - <path-to-logs-folder>:/output
  nginx:
    image: nginx
    ports:
      - 443:443
    volumes:
        # replace with paths for certs and conf folders
      - <path-to-certs-folder>:/cert
      - <path-to-conf-folder>:/etc/nginx/conf.d/

A Docker-levélírási fájl elindításához hajtsa végre a következő parancsot egy konzolról a fájl gyökérszintjén:

docker-compose up

További információkért tekintse meg az NGINX NGINX SSL-megszakítással kapcsolatos dokumentációját.

Több tároló futtatása ugyanazon a gazdagépen

Ha több tárolót szeretne futtatni közzétett portokkal, mindenképpen futtassa az egyes tárolókat egy másik közzétett porttal. Futtassa például az első tárolót az 5000-s porton, a másodikat pedig az 5001-s porton.

Ezt a tárolót és egy másik Azure AI-szolgáltatási tárolót együtt futtathatja a GAZDAGÉPen. Több tároló is futtatható ugyanabból az Azure AI-szolgáltatási tárolóból.

A tároló előrejelzési végpontjának lekérdezése

A tároló REST-alapú lekérdezés-előrejelzési végpont API-kat nyújt.

A tároló API-khoz használja a gazdagépet (http://localhost:5000).

Ellenőrizze, hogy fut-e egy tároló

A tároló futásának ellenőrzésére többféleképpen is van lehetőség. Keresse meg a szóban forgó tároló külső IP-címét és közzétett portját, és nyissa meg a kedvenc webböngészőt. A tároló futásának ellenőrzéséhez használja az alábbi kérési URL-címeket. Az itt felsorolt példakérési URL-címek eltérőek http://localhost:5000lehetnek, de az adott tároló eltérő lehet. Ügyeljen arra, hogy a tároló külső IP-címére és közzétett portjára támaszkodjon.

URL-cím kérése Cél
http://localhost:5000/ A tároló egy kezdőlappal rendelkezik.
http://localhost:5000/ready A GET használatával kért URL-cím ellenőrzi, hogy a tároló készen áll-e egy lekérdezés elfogadására a modellen. Ez a kérés használható a Kubernetes-beli élő- és készültségi mintavételekhez.
http://localhost:5000/status A GET szolgáltatással is kért, ez az URL-cím ellenőrzi, hogy a tároló elindításához használt API-kulcs érvényes-e végpontlekérdezés nélkül. Ez a kérés használható a Kubernetes-beli élő- és készültségi mintavételekhez.
http://localhost:5000/swagger A tároló átfogó dokumentációval is rendelkezik a végpontokhoz, valamint egy kipróbálás funkcióval is. Ezzel a funkcióval beírhatja a beállításokat egy webes HTML-űrlapba, és kódírás nélkül is elvégezheti a lekérdezést. A lekérdezés visszatérése után megjelenik egy példa CURL-parancs, amely bemutatja a szükséges HTTP-fejléceket és törzsformátumot.

Container's home page

A tároló API-kérésének strukturálása

A Postman vagy az alábbi példa cURL-kérés használatával elküldheti a lekérdezést az üzembe helyezett tárolónak, és lecserélheti a változót a serverURL megfelelő értékre. Vegye figyelembe, hogy a tároló URL-címében szereplő API verziója eltér a üzemeltetett API-tól.

Feljegyzés

A Fast Healthcare Interoperability Resources (FHIR) funkció a legújabb tárolóban érhető el, és az új nyelvű REST API-n keresztül érhető el.

curl -i -X POST 'http://<serverURL>:5000/language/analyze-text/jobs?api-version=2022-04-01-preview' --header 'Content-Type: application/json' --header --data-binary @example.json

Az alábbi JSON egy példa a Language request POST törzséhez csatolt JSON-fájlra:

example.json

{
    "analysisInput": {
        "documents": [
            {
                "text": "The doctor prescried 200mg Ibuprofen.",
                "language": "en",
                "id": "1"
            }
        ]
    },
    "tasks": [
        {
            "taskName": "analyze 1",
            "kind": "Healthcare",
            "parameters": {
                "fhirVersion": "4.0.1"
            }
        }
    ]
}

Tároló válasz törzse

Az alábbi JSON egy példa a tárolóalapú szinkron hívás nyelvi válasz törzsére:

{
  "jobId": "{JOB-ID}",
  "lastUpdateDateTime": "2022-04-18T15:50:16Z",
  "createdDateTime": "2022-04-18T15:50:14Z",
  "expirationDateTime": "2022-04-19T15:50:14Z",
  "status": "succeeded",
  "errors": [],
  "tasks": {
    "completed": 1,
    "failed": 0,
    "inProgress": 0,
    "total": 1,
    "items": [
      {
        "kind": "HealthcareLROResults",
        "taskName": "analyze 1",
        "lastUpdateDateTime": "2022-04-18T15:50:16.7046515Z",
        "status": "succeeded",
        "results": {
          "documents": [
            {
              "id": "1",
              "entities": [
                {
                  "offset": 4,
                  "length": 6,
                  "text": "doctor",
                  "category": "HealthcareProfession",
                  "confidenceScore": 0.76
                },
                {
                  "offset": 21,
                  "length": 5,
                  "text": "200mg",
                  "category": "Dosage",
                  "confidenceScore": 0.99
                },
                {
                  "offset": 27,
                  "length": 9,
                  "text": "Ibuprofen",
                  "category": "MedicationName",
                  "confidenceScore": 1.0,
                  "name": "ibuprofen",
                  "links": [
                    { "dataSource": "UMLS", "id": "C0020740" },
                    { "dataSource": "AOD", "id": "0000019879" },
                    { "dataSource": "ATC", "id": "M01AE01" },
                    { "dataSource": "CCPSS", "id": "0046165" },
                    { "dataSource": "CHV", "id": "0000006519" },
                    { "dataSource": "CSP", "id": "2270-2077" },
                    { "dataSource": "DRUGBANK", "id": "DB01050" },
                    { "dataSource": "GS", "id": "1611" },
                    { "dataSource": "LCH_NW", "id": "sh97005926" },
                    { "dataSource": "LNC", "id": "LP16165-0" },
                    { "dataSource": "MEDCIN", "id": "40458" },
                    { "dataSource": "MMSL", "id": "d00015" },
                    { "dataSource": "MSH", "id": "D007052" },
                    { "dataSource": "MTHSPL", "id": "WK2XYI10QM" },
                    { "dataSource": "NCI", "id": "C561" },
                    { "dataSource": "NCI_CTRP", "id": "C561" },
                    { "dataSource": "NCI_DCP", "id": "00803" },
                    { "dataSource": "NCI_DTP", "id": "NSC0256857" },
                    { "dataSource": "NCI_FDA", "id": "WK2XYI10QM" },
                    { "dataSource": "NCI_NCI-GLOSS", "id": "CDR0000613511" },
                    { "dataSource": "NDDF", "id": "002377" },
                    { "dataSource": "PDQ", "id": "CDR0000040475" },
                    { "dataSource": "RCD", "id": "x02MO" },
                    { "dataSource": "RXNORM", "id": "5640" },
                    { "dataSource": "SNM", "id": "E-7772" },
                    { "dataSource": "SNMI", "id": "C-603C0" },
                    { "dataSource": "SNOMEDCT_US", "id": "387207008" },
                    { "dataSource": "USP", "id": "m39860" },
                    { "dataSource": "USPMG", "id": "MTHU000060" },
                    { "dataSource": "VANDF", "id": "4017840" }
                  ]
                }
              ],
              "relations": [
                {
                  "relationType": "DosageOfMedication",
                  "entities": [
                    {
                      "ref": "#/results/documents/0/entities/1",
                      "role": "Dosage"
                    },
                    {
                      "ref": "#/results/documents/0/entities/2",
                      "role": "Medication"
                    }
                  ]
                }
              ],
              "warnings": [],
              "fhirBundle": {
                "resourceType": "Bundle",
                "id": "bae9d4e0-191e-48e6-9c24-c1ff6097c439",
                "meta": {
                  "profile": [
                    "http://hl7.org/fhir/4.0.1/StructureDefinition/Bundle"
                  ]
                },
                "identifier": {
                  "system": "urn:ietf:rfc:3986",
                  "value": "urn:uuid:bae9d4e0-191e-48e6-9c24-c1ff6097c439"
                },
                "type": "document",
                "entry": [
                  {
                    "fullUrl": "Composition/9044c2cc-dcec-4b9d-b005-bfa8be978aa8",
                    "resource": {
                      "resourceType": "Composition",
                      "id": "9044c2cc-dcec-4b9d-b005-bfa8be978aa8",
                      "status": "final",
                      "type": {
                        "coding": [
                          {
                            "system": "http://loinc.org",
                            "code": "11526-1",
                            "display": "Pathology study"
                          }
                        ],
                        "text": "Pathology study"
                      },
                      "subject": {
                        "reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
                        "type": "Patient"
                      },
                      "encounter": {
                        "reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
                        "type": "Encounter",
                        "display": "unknown"
                      },
                      "date": "2022-04-18",
                      "author": [
                        {
                          "reference": "Practitioner/fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
                          "type": "Practitioner",
                          "display": "Unknown"
                        }
                      ],
                      "title": "Pathology study",
                      "section": [
                        {
                          "title": "General",
                          "code": {
                            "coding": [
                              {
                                "system": "",
                                "display": "Unrecognized Section"
                              }
                            ],
                            "text": "General"
                          },
                          "text": {
                            "div": "<div>\r\n\t\t\t\t\t\t\t<h1>General</h1>\r\n\t\t\t\t\t\t\t<p>The doctor prescried 200mg Ibuprofen.</p>\r\n\t\t\t\t\t</div>"
                          },
                          "entry": [
                            {
                              "reference": "List/db388912-b5fb-4073-a74c-2751fd3374dd",
                              "type": "List",
                              "display": "General"
                            }
                          ]
                        }
                      ]
                    }
                  },
                  {
                    "fullUrl": "Practitioner/fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
                    "resource": {
                      "resourceType": "Practitioner",
                      "id": "fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
                      "extension": [
                        {
                          "extension": [
                            { "url": "offset", "valueInteger": -1 },
                            { "url": "length", "valueInteger": 7 }
                          ],
                          "url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
                        }
                      ],
                      "name": [{ "text": "Unknown", "family": "Unknown" }]
                    }
                  },
                  {
                    "fullUrl": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
                    "resource": {
                      "resourceType": "Patient",
                      "id": "5c554347-4290-4b05-83ac-6637ff3bfb40",
                      "gender": "unknown"
                    }
                  },
                  {
                    "fullUrl": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
                    "resource": {
                      "resourceType": "Encounter",
                      "id": "6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
                      "meta": {
                        "profile": [
                          "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter"
                        ]
                      },
                      "status": "finished",
                      "class": {
                        "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
                        "display": "unknown"
                      },
                      "subject": {
                        "reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
                        "type": "Patient"
                      }
                    }
                  },
                  {
                    "fullUrl": "MedicationStatement/24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
                    "resource": {
                      "resourceType": "MedicationStatement",
                      "id": "24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
                      "extension": [
                        {
                          "extension": [
                            { "url": "offset", "valueInteger": 27 },
                            { "url": "length", "valueInteger": 9 }
                          ],
                          "url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
                        }
                      ],
                      "status": "active",
                      "medicationCodeableConcept": {
                        "coding": [
                          {
                            "system": "http://www.nlm.nih.gov/research/umls",
                            "code": "C0020740",
                            "display": "Ibuprofen"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/aod",
                            "code": "0000019879"
                          },
                          {
                            "system": "http://www.whocc.no/atc",
                            "code": "M01AE01"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/ccpss",
                            "code": "0046165"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/chv",
                            "code": "0000006519"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/csp",
                            "code": "2270-2077"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/drugbank",
                            "code": "DB01050"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/gs",
                            "code": "1611"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/lch_nw",
                            "code": "sh97005926"
                          },
                          { "system": "http://loinc.org", "code": "LP16165-0" },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/medcin",
                            "code": "40458"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/mmsl",
                            "code": "d00015"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/msh",
                            "code": "D007052"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/mthspl",
                            "code": "WK2XYI10QM"
                          },
                          {
                            "system": "http://ncimeta.nci.nih.gov",
                            "code": "C561"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nci_ctrp",
                            "code": "C561"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nci_dcp",
                            "code": "00803"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nci_dtp",
                            "code": "NSC0256857"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nci_fda",
                            "code": "WK2XYI10QM"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nci_nci-gloss",
                            "code": "CDR0000613511"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/nddf",
                            "code": "002377"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/pdq",
                            "code": "CDR0000040475"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/rcd",
                            "code": "x02MO"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/rxnorm",
                            "code": "5640"
                          },
                          {
                            "system": "http://snomed.info/sct",
                            "code": "E-7772"
                          },
                          {
                            "system": "http://snomed.info/sct/900000000000207008",
                            "code": "C-603C0"
                          },
                          {
                            "system": "http://snomed.info/sct/731000124108",
                            "code": "387207008"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/usp",
                            "code": "m39860"
                          },
                          {
                            "system": "http://www.nlm.nih.gov/research/umls/uspmg",
                            "code": "MTHU000060"
                          },
                          {
                            "system": "http://hl7.org/fhir/ndfrt",
                            "code": "4017840"
                          }
                        ],
                        "text": "Ibuprofen"
                      },
                      "subject": {
                        "reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
                        "type": "Patient"
                      },
                      "context": {
                        "reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
                        "type": "Encounter",
                        "display": "unknown"
                      },
                      "dosage": [
                        {
                          "text": "200mg",
                          "doseAndRate": [{ "doseQuantity": { "value": 200 } }]
                        }
                      ]
                    }
                  },
                  {
                    "fullUrl": "List/db388912-b5fb-4073-a74c-2751fd3374dd",
                    "resource": {
                      "resourceType": "List",
                      "id": "db388912-b5fb-4073-a74c-2751fd3374dd",
                      "status": "current",
                      "mode": "snapshot",
                      "title": "General",
                      "subject": {
                        "reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
                        "type": "Patient"
                      },
                      "encounter": {
                        "reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
                        "type": "Encounter",
                        "display": "unknown"
                      },
                      "entry": [
                        {
                          "item": {
                            "reference": "MedicationStatement/24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
                            "type": "MedicationStatement",
                            "display": "Ibuprofen"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ],
          "errors": [],
          "modelVersion": "2022-03-01"
        }
      }
    ]
  }
}

A tároló futtatása ügyfélkódtár-támogatással

A tároló verziójától 3.0.017010001-onprem-amd64 kezdve (vagy ha a tárolót latest használja) futtathatja a Text Analytics állapottárolót az ügyfélkódtár használatával. Ehhez adja hozzá a következő paramétert a docker run parancshoz:

enablelro=true

Ezt követően az ügyfélobjektum hitelesítése után használja a tároló által futtatott végpontot:

http://localhost:5000

Ha például C#-ot használ, akkor a következő kódot kell használnia:

var client = new TextAnalyticsClient("http://localhost:5000", "your-text-analytics-key");

A tároló leállítása

A tároló leállításához a tárolót futtató parancssori környezetben válassza a Ctrl+C billentyűkombinációt.

Hibaelhárítás

Ha a tárolót kimeneti csatlakoztatással és naplózással futtatja, a tároló olyan naplófájlokat hoz létre, amelyek segítenek elhárítani a tároló indításakor vagy futtatásakor felmerülő problémákat.

Tipp.

További hibaelhárítási információkért és útmutatásért tekintse meg az Azure AI-tárolókkal kapcsolatos gyakori kérdéseket (GYIK).

Számlázás

Az állapottárolókhoz készült Text Analytics számlázási adatokat küld az Azure-nak egy Nyelvi erőforrás használatával az Azure-fiókjában.

A tárolóba irányuló lekérdezések számlázása a paraméterhez használt Azure-erőforrás tarifacsomagján ApiKey lesz.

Az Azure AI-szolgáltatások tárolói nem rendelkeznek licenceléssel anélkül, hogy a mérési vagy számlázási végponthoz csatlakozna. Engedélyeznie kell a tárolók számára, hogy mindig közöljék a számlázási adatokat a számlázási végponttal. Az Azure AI-szolgáltatások tárolói nem küldenek ügyféladatokat, például az elemezni kívánt képet vagy szöveget a Microsoftnak.

Csatlakozás az Azure szolgáltatáshoz

A tárolónak futtatnia kell a számlázási argumentum értékeit. Ezek az értékek lehetővé teszik, hogy a tároló csatlakozzon a számlázási végponthoz. A tároló körülbelül 10–15 percenként jelenti a használatot. Ha a tároló az engedélyezett időkereten belül nem csatlakozik az Azure-hoz, a tároló továbbra is fut, de nem szolgál ki lekérdezéseket, amíg vissza nem állítja a számlázási végpontot. A kapcsolat 10 alkalommal, 10–15 perces időintervallumban történik. Ha a 10 próbálkozáson belül nem tud csatlakozni a számlázási végponthoz, a tároló leállítja a kérések kiszolgálását. Tekintse meg az Azure AI-szolgáltatások tárolójának gyakori kérdéseit a Microsoftnak a számlázáshoz küldött információk példájáért.

Számlázási argumentumok

A docker run parancs akkor indítja el a tárolót, ha az alábbi lehetőségek közül mind a három érvényes értéket tartalmazza:

Lehetőség Leírás
ApiKey Az Azure AI-szolgáltatások erőforrásának API-kulcsa, amely a számlázási adatok nyomon követésére szolgál.
Ennek a beállításnak az értékét api-kulcsra kell állítani a kiépített erőforráshoz, amely a következőben Billingvan megadva: .
Billing Az Azure AI-szolgáltatások erőforrásának végpontja, amely a számlázási adatok nyomon követésére szolgál.
Ennek a beállításnak az értékét egy kiépített Azure-erőforrás végponti URI-jára kell állítani.
Eula Azt jelzi, hogy elfogadta a tároló licencét.
Ennek a beállításnak az értékét el kell fogadni.

Összegzés

Ebben a cikkben megismerkedett az állapottárolókhoz készült Text Analytics letöltésével, telepítésével és futtatásával kapcsolatos fogalmakkal és munkafolyamatokkal. Összegezve:

  • A Text Analytics for Health linuxos tárolót biztosít a Docker számára
  • A tárolólemezképek a Microsoft Container Registryből (MCR) töltődnek le.
  • A tárolólemezképek a Dockerben futnak.
  • A REST API-val vagy az SDK-val meghívhatja az állapottárolókhoz tartozó Text Analytics műveleteit a tároló gazdagép URI-jának megadásával.
  • A tárolók példányosításakor meg kell adnia a számlázási adatokat.

Fontos

Az Azure AI-tárolók nem rendelkeznek licenceléssel anélkül, hogy az Azure-hoz csatlakozna mérési célokra. Az ügyfeleknek engedélyeznie kell a tárolóknak, hogy mindig közöljék a számlázási adatokat a mérési szolgáltatással. Az Azure AI-tárolók nem küldenek ügyféladatokat (például elemezni kívánt szöveget) a Microsoftnak.

Következő lépések

  • Lásd: Tárolók konfigurálása konfigurációs beállításokhoz.