Použití Analýza textu pro kontejnery stavu

Kontejnery umožňují hostovat Analýza textu pro rozhraní API pro stav ve vaší vlastní infrastruktuře. Pokud máte požadavky na zabezpečení nebo zásady správného řízení dat, které není možné splnit voláním Analýza textu pro stav vzdáleně, může být vhodné použít kontejnery.

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Požadavky

Před použitím Analýza textu pro kontejnery stavu je nutné splnit následující požadavky. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

  • Docker nainstalovaný na hostitelském počítači. Docker musí být nakonfigurovaný tak, aby se kontejnery mohly připojit a odesílat fakturační data do Azure.
    • Ve Windows musí být Docker také nakonfigurovaný tak, aby podporoval kontejnery Linuxu.
    • Měli byste mít základní znalosti o konceptech Dockeru.
  • Prostředek jazyka s cenovou úrovní Free (F0) nebo Standard (S).

Shromáždění požadovaných parametrů

Jsou vyžadovány tři primární parametry pro všechny kontejnery Azure AI. Licenční podmínky pro software společnosti Microsoft musí být k dispozici s hodnotou přijetí. Vyžaduje se také identifikátor URI koncového bodu a klíč rozhraní API.

Identifikátor URI koncového bodu

Tato {ENDPOINT_URI} hodnota je k dispozici na stránce Přehled webu Azure Portal odpovídajícího prostředku služeb Azure AI. Přejděte na stránku Přehled, najeďte myší na koncový bod a zobrazí se ikona Kopírovat do schránky. Zkopírujte koncový bod a použijte ho tam, kde je to potřeba.

Snímek obrazovky znázorňující shromažďování identifikátoru URI koncového bodu pro pozdější použití

Klávesy

Hodnota {API_KEY} se používá ke spuštění kontejneru a je k dispozici na stránce Klíče webu Azure Portal odpovídajícího prostředku služeb Azure AI. Přejděte na stránku Klíče a vyberte ikonu Kopírovat do schránky.

Snímek obrazovky znázorňující získání jednoho ze dvou klíčů pro pozdější použití

Důležité

Tyto klíče předplatného se používají pro přístup k rozhraní API služeb Azure AI. Nesdílejte klíče. Bezpečně je uložte. Použijte například Azure Key Vault. Doporučujeme tyto klíče pravidelně znovu vygenerovat. K volání rozhraní API je nutný jenom jeden klíč. Při opětovném vygenerování prvního klíče můžete pro pokračování přístupu ke službě použít druhý klíč.

Požadavky na hostitelský počítač a doporučení

Hostitel je počítač založený na platformě x64, na kterém běží kontejner Dockeru. Může to být počítač v místním prostředí nebo hostitelská služba Dockeru v Azure, například:

Následující tabulka popisuje minimální a doporučené specifikace Analýza textu pro kontejnery stavu. Každé jádro procesoru musí mít alespoň 2,6 gigahertz (GHz) nebo rychlejší. Jsou uvedeny také povolené transakce za sekundu (TPS).

Minimální specifikace hostitele Doporučené specifikace hostitele Minimální počet TPS Maximální počet TPS
1 dokument nebo žádost 4 jádra, 12 GB paměti 6 jader, 12 GB paměti 15 30
10 dokumentů/žádostí 6 jader, 16 GB paměti 8 jader, 20 GB paměti 15 30

Jádro procesoru --cpus a paměť odpovídají nastavením, --memory které se používají jako součást docker run příkazu.

Získání image kontejneru pomocí docker pull

Image kontejneru stavu Analýza textu najdete v mcr.microsoft.com syndikátu registru kontejneru kontejneru. Nachází se v úložišti azure-cognitive-services/textanalytics/ a má název healthcare. Plně kvalifikovaný název image kontejneru je mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare

Pokud chcete použít nejnovější verzi kontejneru, můžete použít latest značku. Úplný seznam značek najdete také v MCR.

docker pull Pomocí příkazu stáhněte tuto image kontejneru z veřejného registru kontejneru Microsoftu. Doporučené značky najdete ve službě Microsoft Container Registry.

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

Tip

K výpisu stažených imagí kontejnerů můžete použít příkaz docker images . Následující příkaz například vypíše ID, úložiště a značku každé stažené image kontejneru, která je formátovaná jako tabulka:

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

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

Spuštění kontejneru pomocí docker run

Jakmile je kontejner v hostitelském počítači, spusťte kontejnery pomocí příkazu docker run . Kontejner se bude dál spouštět, dokud ho nezastavíte.

Důležité

  • Příkazy Dockeru v následujících částech používají zpětné lomítko , \jako znak pokračování řádku. Tento postup nahraďte nebo odeberte na základě požadavků vašeho hostitelského operačního systému.
  • BillingAby se kontejner spustil, musí být zadány Eulaa ApiKey možnosti. V opačném případě se kontejner nespustí. Další informace najdete v tématu Fakturace.
  • Kontejnery pro analýzu mínění a rozpoznávání jazyka používají rozhraní API v3 a jsou obecně dostupné. Kontejner extrakce klíčových frází používá rozhraní API v2 a je ve verzi Preview.

Existuje několik způsobů, jak nainstalovat a spustit Analýza textu pro kontejner stavu.

  • Pomocí webu Azure Portal vytvořte prostředek jazyka a pomocí Dockeru získejte kontejner.
  • Ke spuštění kontejneru použijte virtuální počítač Azure s Dockerem.
  • K automatizaci nasazení prostředků a konfigurace kontejneru použijte následující skripty PowerShellu a Azure CLI.

Když použijete Analýza textu pro kontejner stavu, data obsažená v požadavcích a odpovědích rozhraní API nejsou viditelná pro Microsoft a nepoužívají se k trénování modelu použitého na vaše data.

Místní spuštění kontejneru

Pokud chcete kontejner spustit ve vlastním prostředí po stažení image kontejneru, spusťte následující docker run příkaz. Nahraďte následující zástupné symboly vlastními hodnotami:

Zástupný symbol Hodnota Formát nebo příklad
{API_KEY} Klíč pro váš prostředek jazyka. Najdete ho na stránce Klíč a koncový bod vašeho prostředku na webu Azure Portal. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} Koncový bod pro přístup k rozhraní API Najdete ho na stránce Klíč a koncový bod vašeho prostředku na webu Azure Portal. 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} 

Tento příkaz:

  • Spustí Analýza textu kontejneru stavu z image kontejneru.
  • Přidělí 6 jader procesoru a 12 gigabajtů (GB) paměti.
  • Zpřístupní port TCP 5000 a přidělí pro kontejner pseudo-TTY.
  • Přijímá podmínky licenční smlouvy s koncovým uživatelem (EULA) a zodpovědné podmínky AI (RAI).
  • Po ukončení kontejneru se automaticky odebere. Image kontejneru je stále dostupná na hostitelském počítači.

Ukázkové uživatelské rozhraní pro vizualizaci výstupu

Kontejner poskytuje rozhraní API prediktivního koncového bodu pro dotazy založené na REST. Také jsme v kontejneru poskytli nástroj pro vizualizaci, který je přístupný připojením /demo ke koncovému bodu kontejneru. Příklad:

http://<serverURL>:5000/demo

Pomocí následujícího příkladu požadavku cURL odešlete dotaz do kontejneru, který jste nasadili, a nahraďte serverURL proměnnou odpovídající hodnotou.

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

Instalace kontejneru pomocí služby Azure Web App for Containers

Azure Web App for Containers je prostředek Azure vyhrazený pro spouštění kontejnerů v cloudu. Přináší předefinované funkce, jako je automatické škálování, podpora kontejnerů Dockeru a docker compose, podpora HTTPS a mnoho dalšího.

Poznámka:

Pomocí webové aplikace Azure automaticky získáte doménu ve formě <appservice_name>.azurewebsites.net

Spuštěním tohoto skriptu PowerShellu pomocí Azure CLI vytvořte webovou aplikaci pro kontejnery pomocí vašeho předplatného a image kontejneru přes HTTPS. Než odešlete první požadavek, počkejte na dokončení skriptu (přibližně 25 až 30 minut).

$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

Instalace kontejneru pomocí služby Azure Container Instance

K usnadnění nasazení můžete použít také azure Container Instance (ACI). ACI je prostředek, který umožňuje spouštět kontejnery Dockeru na vyžádání ve spravovaném bezserverovém prostředí Azure.

Postup nasazení prostředku ACI pomocí webu Azure Portal najdete v tématu Použití služby Azure Container Instances . Můžete také použít následující skript PowerShellu pomocí Azure CLI, který ve vašem předplatném vytvoří ACI pomocí image kontejneru. Než odešlete první požadavek, počkejte na dokončení skriptu (přibližně 25 až 30 minut). Vzhledem k limitu maximálního počtu procesorů na prostředek ACI tuto možnost nevybírejte, pokud očekáváte, že na každý požadavek odešlete více než 5 velkých dokumentů (každý z nich je přibližně 5000 znaků). Informace o dostupnosti najdete v článku regionální podpory ACI.

Poznámka:

Azure Container Instances nezahrnuje podporu HTTPS pro předdefinované domény. Pokud potřebujete HTTPS, budete ho muset ručně nakonfigurovat, včetně vytvoření certifikátu a registrace domény. Pokyny k tomu najdete v NGINX níže.

$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

Zabezpečení připojení ACI

Ve výchozím nastavení není při použití ACI s rozhraním API kontejneru k dispozici žádné zabezpečení. Důvodem je to, že kontejnery se obvykle budou spouštět jako součást podu, který je chráněn před vnějším síťovým mostem. Kontejner ale můžete upravit s front-orientovaným komponentou a zachovat privátní koncový bod kontejneru. Následující příklady používají NGINX jako bránu příchozího přenosu dat pro podporu ověřování HTTPS/SSL a klientských certifikátů.

Poznámka:

NGINX je opensourcový vysoce výkonný server HTTP a proxy server. Kontejner NGINX lze použít k ukončení připojení TLS pro jeden kontejner. Je také možné použít složitější řešení ukončení protokolu TLS založeného na příchozím přenosu dat NGINX.

Nastavení NGINX jako brány příchozího přenosu dat

NGINX používá konfigurační soubory k povolení funkcí za běhu. Chcete-li povolit ukončení protokolu TLS pro jinou službu, musíte zadat certifikát SSL pro ukončení připojení TLS a proxy_pass zadat adresu pro službu. Níže je uvedena ukázka.

Poznámka:

ssl_certificate očekává, že bude zadána cesta v místním systému souborů kontejneru NGINX. Zadaná proxy_pass adresa musí být k dispozici v síti kontejneru NGINX.

Kontejner NGINX načte všechny soubory, _.conf_ které jsou připojené /etc/nginx/conf.d/ v cestě konfigurace HTTP.

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říklad souboru docker compose

Následující příklad ukazuje, jak lze vytvořit soubor docker compose pro nasazení kontejnerů NGINX a stavu:

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/

Spuštěním následujícího příkazu z konzoly na kořenové úrovni souboru spusťte tento soubor Docker compose:

docker-compose up

Další informace najdete v dokumentaci NGINX k ukončení protokolu SSL serveru NGINX.

Spuštění více kontejnerů na stejném hostiteli

Pokud máte v úmyslu spouštět více kontejnerů s vystavenými porty, nezapomeňte jednotlivé kontejnery spouštět s jiným vystaveným portem. Například spusťte první kontejner na portu 5000 a druhý kontejner na portu 5001.

Tento kontejner a jiný kontejner služeb Azure AI můžete mít spuštěný společně na hostiteli. Můžete mít také několik kontejnerů stejného kontejneru služeb Azure AI spuštěných.

Zadání dotazu do prediktivního koncového bodu kontejneru

Kontejner poskytuje rozhraní API prediktivního koncového bodu pro dotazy založené na REST.

Pro rozhraní API kontejneru použijte hostitele http://localhost:5000.

Ověření, že je kontejner spuštěný

Existuje několik způsobů, jak ověřit, že je kontejner spuštěný. Vyhledejte externí IP adresu a vystavený port kontejneru a otevřete svůj oblíbený webový prohlížeč. Pomocí různých adres URL požadavků, které následují, ověřte, že kontejner běží. Tady jsou uvedené http://localhost:5000ukázkové adresy URL požadavků, ale váš konkrétní kontejner se může lišit. Ujistěte se, že spoléháte na externí IP adresu kontejneru a vystavený port.

Adresa URL požadavku Účel
http://localhost:5000/ Kontejner poskytuje domovskou stránku.
http://localhost:5000/ready Požadovaná pomocí příkazu GET poskytuje tuto adresu URL ověření, že kontejner je připravený přijmout dotaz na model. Tento požadavek je možné použít pro sondy připravenosti a aktivity Kubernetes.
http://localhost:5000/status Tato adresa URL také vyžaduje get, ověří, jestli klíč rozhraní API použitý ke spuštění kontejneru je platný, aniž by způsoboval dotaz koncového bodu. Tento požadavek je možné použít pro sondy připravenosti a aktivity Kubernetes.
http://localhost:5000/swagger V kontejneru je ke koncovým bodům a k funkci Vyzkoušet kompletní dokumentace. Pomocí této funkce můžete zadat nastavení do webového formuláře HTML a vytvořit dotaz, aniž byste museli psát žádný kód. Po vrácení dotazu se zobrazí příklad příkazu CURL, který předvede požadované hlavičky HTTP a základní formát.

Domovská stránka kontejneru

Strukturování požadavku rozhraní API pro kontejner

K odeslání dotazu do kontejneru, který jste nasadili, můžete použít rozšíření REST Client editoru Visual Studio Code nebo příklad požadavku cURL níže. Proměnnou nahradíte serverURL příslušnou hodnotou. Všimněte si, že verze rozhraní API v adrese URL kontejneru se liší od hostovaného rozhraní API.

Poznámka:

Funkce FHIR (Fast Healthcare Interoperability Resources) je dostupná v nejnovějším kontejneru a je přístupná prostřednictvím nového rozhraní REST API jazyka.

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

Následující JSON je příkladem souboru JSON připojeného k textu POST požadavku jazyka:

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"
            }
        }
    ]
}

Text odpovědi kontejneru

Následující JSON je příkladem textu odpovědi jazyka z kontejnerizovaného synchronního volání:

{
  "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"
        }
      }
    ]
  }
}

Spuštění kontejneru s podporou klientské knihovny

Počínaje verzí 3.0.017010001-onprem-amd64 kontejneru (nebo pokud kontejner používátelatest), můžete spustit Analýza textu pro kontejner stavu pomocí klientské knihovny. Uděláte to tak, že do docker run příkazu přidáte následující parametr:

enablelro=true

Po ověření objektu klienta použijte koncový bod, na kterém je kontejner spuštěný:

http://localhost:5000

Pokud například používáte C#, použili byste následující kód:

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

Zastavení kontejneru

Pokud chcete kontejner vypnout, vyberte v prostředí příkazového řádku, ve kterém je kontejner spuštěný, ctrl+C.

Řešení problému

Pokud kontejner spustíte s povoleným připojením a protokolováním výstupu, kontejner vygeneruje soubory protokolu, které jsou užitečné při řešení problémů, ke kterým dochází při spuštění nebo spuštění kontejneru.

Tip

Další informace a pokyny k řešení potíží najdete v nejčastějších dotazech k kontejnerům Azure AI.

Fakturace

Analýza textu pro kontejnery stavu odesílají fakturační údaje do Azure pomocí Prostředek jazyka na vašem účtu Azure.

Dotazy na kontejner se účtují na cenové úrovni prostředku Azure, který se používá pro tento ApiKey parametr.

Kontejnery služeb Azure AI nejsou licencované ke spuštění bez připojení ke koncovému bodu měření nebo fakturace. Kontejnery musíte povolit, aby vždy komunikují fakturační údaje s koncovým bodem fakturace. Kontejnery služeb Azure AI neodesílají zákaznická data, jako je obrázek nebo text analyzovaný, do Microsoftu.

Připojení k Azure

Kontejner potřebuje ke spuštění hodnoty fakturačních argumentů. Tyto hodnoty umožňují kontejneru připojit se ke koncovému bodu fakturace. Kontejner hlásí využití přibližně každých 10 až 15 minut. Pokud se kontejner nepřipojí k Azure v rámci povoleného časového intervalu, kontejner se bude dál spouštět, ale nebude obsluhovat dotazy, dokud se neobnoví koncový bod fakturace. Připojení se pokouší 10krát ve stejném časovém intervalu 10 až 15 minut. Pokud se během 10 pokusů nemůže připojit ke koncovému bodu fakturace, kontejner přestane obsluhovat požadavky. Příklad informací odeslaných Microsoftu pro fakturaci najdete v nejčastějších dotazech ke kontejneru služeb Azure AI.

Argumenty fakturace

Příkaz docker run spustí kontejner, pokud jsou k dispozici všechny tři z následujících možností s platnými hodnotami:

Možnost Popis
ApiKey Klíč rozhraní API prostředku služeb Azure AI, který se používá ke sledování fakturačních údajů.
Hodnota této možnosti musí být nastavena na klíč rozhraní API pro zřízený prostředek, který je zadaný v Billing.
Billing Koncový bod prostředku služeb Azure AI, který se používá ke sledování fakturačních údajů.
Hodnota této možnosti musí být nastavená na identifikátor URI koncového bodu zřízeného prostředku Azure.
Eula Označuje, že jste přijali licenci pro kontejner.
Hodnota této možnosti musí být nastavena tak, aby přijímala.

Shrnutí

V tomto článku jste se naučili koncepty a pracovní postupy pro stahování, instalaci a spouštění Analýza textu pro kontejnery stavu. Souhrnně:

  • Analýza textu pro stav poskytuje kontejner Linuxu pro Docker.
  • Image kontejnerů se stáhnou ze služby Microsoft Container Registry (MCR).
  • Image kontejnerů se spouštějí v Dockeru.
  • Pomocí rozhraní REST API nebo sady SDK můžete volat operace v Analýza textu pro kontejnery stavu zadáním identifikátoru URI hostitele kontejneru.
  • Při vytváření instance kontejneru je nutné zadat fakturační údaje.

Důležité

Kontejnery Azure AI nemají licenci ke spuštění bez připojení k Azure pro měření. Zákazníci musí kontejnerům umožnit, aby vždy komunikují s fakturačními údaji se službou měření. Kontejnery Azure AI neodesílají zákaznická data (např. text analyzovaný) do Microsoftu.

Další kroky