К основному содержанию
скилл

azure-ai-textanalytics-py — скилл для Claude Code: NLP на Azure

Скилл для работы с Azure AI Language из Python: тональность, сущности, ключевые фразы, определение языка, поиск персональных данных и медицинский NLP.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-ai-textanalytics-py -a claude-code
Открыть на GitHub

Что делает azure-ai-textanalytics-py

Скилл даёт агенту готовые шаблоны кода для библиотеки azure-ai-textanalytics. Внутри — примеры на TextAnalyticsClient: анализ тональности с разбором мнений по аспектам, распознавание именованных сущностей, извлечение ключевых фраз, определение языка, поиск и маскировка PII, а также разбор медицинских текстов через begin_analyze_healthcare_entities. Есть и пакетный режим begin_analyze_actions, когда нужно прогнать несколько анализов по одним документам за раз.

Перед запуском понадобится установить пакет: pip install azure-ai-textanalytics. Для аутентификации скилл советует DefaultAzureCredential — он работает и локально через Azure CLI, и в Azure через управляемую идентичность. В продакшене переменная AZURE_TOKEN_CREDENTIALS=prod ограничивает цепочку учётных данных. Старый путь с ключом через AzureKeyCredential оставлен только для существующих развёртываний, которые ещё не перешли на Entra ID. Переменная AZURE_LANGUAGE_ENDPOINT нужна при любом способе аутентификации.

Клиент скилл советует оборачивать в контекстный менеджер: with TextAnalyticsClient(...) as client: для синхронного кода и async with для асинхронного. Так транспорты, сокеты и кэш токенов освобождаются предсказуемо. Если пропустить этот шаг, в долгоживущем процессе соединения останутся висеть — это повод проверить свой код перед выкаткой.

Какие задачи решает

  • разобрать тональность отзывов и вытащить мнения по аспектам
  • найти и замаскировать персональные данные в тексте
  • определить язык входящих сообщений
  • извлечь ключевые фразы из документов
  • разобрать медицинские записи и связать сущности со справочником

Примеры запросов агенту

  • Проанализируй тональность этих отзывов через azure-ai-textanalytics и покажи мнения по аспектам
  • Найди и замаскируй персональные данные в этом тексте с помощью TextAnalyticsClient
  • Определи язык каждого документа и выведи код языка с уверенностью

Как установить azure-ai-textanalytics-py

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-ai-textanalytics-py -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-ai-textanalytics-py/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-ai-textanalytics-py/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-ai-textanalytics-py

Как установить azure-ai-textanalytics-py в Claude?

Выполните npx skills add microsoft/skills --skill azure-ai-textanalytics-py -a claude-code. Скилл появится в ~/.claude/skills/azure-ai-textanalytics-py/SKILL.md.

Что делает azure-ai-textanalytics-py?

Даёт агенту шаблоны для Azure AI Language: анализ тональности, распознавание сущностей, ключевые фразы, определение языка, поиск PII и медицинский NLP.

Что нужно для работы скилла?

Пакет azure-ai-textanalytics и переменная AZURE_LANGUAGE_ENDPOINT. Для продакшена скилл советует DefaultAzureCredential и AZURE_TOKEN_CREDENTIALS=prod.

Исходный текст

SKILL.md · MIT
---
name: azure-ai-textanalytics-py
description: |
  Azure AI Text Analytics SDK for sentiment analysis, entity recognition, key phrases, language detection, PII, and healthcare NLP. Use for natural language processing on text.
  Triggers: "text analytics", "sentiment analysis", "entity recognition", "key phrase", "PII detection", "TextAnalyticsClient".
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: azure-ai-textanalytics
---

# Azure AI Text Analytics SDK for Python

Client library for Azure AI Language service NLP capabilities including sentiment, entities, key phrases, and more.

## Installation

```bash
pip install azure-ai-textanalytics
```

## Environment Variables

```bash
AZURE_LANGUAGE_ENDPOINT=https://<resource>.cognitiveservices.azure.com  # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
AZURE_LANGUAGE_KEY=<your-api-key>  # Only required for the legacy API-key auth path below
```

## Authentication & Lifecycle

> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
>    - Local dev: `DefaultAzureCredential` works as-is.
>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
>    - Sync: `with <Client>(...) as client:`
>    - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.

```python
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.textanalytics import TextAnalyticsClient

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

with TextAnalyticsClient(
    endpoint=os.environ["AZURE_LANGUAGE_ENDPOINT"],
    credential=credential,
) as client:
    languages = client.detect_language(["Hello, world!"])
```

### Legacy: API Key (existing keyed deployments)

New code should use `DefaultAzureCredential` above. Use `AzureKeyCredential` only if you have an existing keyed deployment that hasn't been migrated to Entra ID yet — for example, regulated environments still completing their Entra rollout.

```python
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

with TextAnalyticsClient(
    endpoint=os.environ["AZURE_LANGUAGE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_LANGUAGE_KEY"]),
) as client:
    languages = client.detect_language(["Hello, world!"])
```

## Sentiment Analysis

```python
documents = [
    "I had a wonderful trip to Seattle last week!",
    "The food was terrible and the service was slow."
]

result = client.analyze_sentiment(documents, show_opinion_mining=True)

for doc in result:
    if not doc.is_error:
        print(f"Sentiment: {doc.sentiment}")
        print(f"Scores: pos={doc.confidence_scores.positive:.2f}, "
              f"neg={doc.confidence_scores.negative:.2f}, "
              f"neu={doc.confidence_scores.neutral:.2f}")
        
        # Opinion mining (aspect-based sentiment)
        for sentence in doc.sentences:
            for opinion in sentence.mined_opinions:
                target = opinion.target
                print(f"  Target: '{target.text}' - {target.sentiment}")
                for assessment in opinion.assessments:
                    print(f"    Assessment: '{assessment.text}' - {assessment.sentiment}")
```

## Entity Recognition

```python
documents = ["Microsoft was founded by Bill Gates and Paul Allen in Albuquerque."]

result = client.recognize_entities(documents)

for doc in result:
    if not doc.is_error:
        for entity in doc.entities:
            print(f"Entity: {entity.text}")
            print(f"  Category: {entity.category}")
            print(f"  Subcategory: {entity.subcategory}")
            print(f"  Confidence: {entity.confidence_score:.2f}")
```

## PII Detection

```python
documents = ["My SSN is 123-45-6789 and my email is [email protected]"]

result = client.recognize_pii_entities(documents)

for doc in result:
    if not doc.is_error:
        print(f"Redacted: {doc.redacted_text}")
        for entity in doc.entities:
            print(f"PII: {entity.text} ({entity.category})")
```

## Key Phrase Extraction

```python
documents = ["Azure AI provides powerful machine learning capabilities for developers."]

result = client.extract_key_phrases(documents)

for doc in result:
    if not doc.is_error:
        print(f"Key phrases: {doc.key_phrases}")
```

## Language Detection

```python
documents = ["Ce document est en francais.", "This is written in English."]

result = client.detect_language(documents)

for doc in result:
    if not doc.is_error:
        print(f"Language: {doc.primary_language.name} ({doc.primary_language.iso6391_name})")
        print(f"Confidence: {doc.primary_language.confidence_score:.2f}")
```

## Healthcare Text Analytics

```python
documents = ["Patient has diabetes and was prescribed metformin 500mg twice daily."]

poller = client.begin_analyze_healthcare_entities(documents)
result = poller.result()

for doc in result:
    if not doc.is_error:
        for entity in doc.entities:
            print(f"Entity: {entity.text}")
            print(f"  Category: {entity.category}")
            print(f"  Normalized: {entity.normalized_text}")
            
            # Entity links (UMLS, etc.)
            for link in entity.data_sources:
                print(f"  Link: {link.name} - {link.entity_id}")
```

## Multiple Analysis (Batch)

```python
from azure.ai.textanalytics import (
    RecognizeEntitiesAction,
    ExtractKeyPhrasesAction,
    AnalyzeSentimentAction
)

documents = ["Microsoft announced new Azure AI features at Build conference."]

poller = client.begin_analyze_actions(
    documents,
    actions=[
        RecognizeEntitiesAction(),
        ExtractKeyPhrasesAction(),
        AnalyzeSentimentAction()
    ]
)

results = poller.result()
for doc_results in results:
    for result in doc_results:
        if result.kind == "EntityRecognition":
            print(f"Entities: {[e.text for e in result.entities]}")
        elif result.kind == "KeyPhraseExtraction":
            print(f"Key phrases: {result.key_phrases}")
        elif result.kind == "SentimentAnalysis":
            print(f"Sentiment: {result.sentiment}")
```

## Async Client

```python
from azure.ai.textanalytics.aio import TextAnalyticsClient
from azure.identity.aio import DefaultAzureCredential

async def analyze():
    async with DefaultAzureCredential() as credential:
        async with TextAnalyticsClient(
            endpoint=endpoint,
            credential=credential
        ) as client:
            result = await client.analyze_sentiment(documents)
            # Process results...
```

## Client Types

| Client | Purpose |
|--------|---------|
| `TextAnalyticsClient` | All text analytics operations |
| `TextAnalyticsClient` (aio) | Async version |

## Available Operations

| Method | Description |
|--------|-------------|
| `analyze_sentiment` | Sentiment analysis with opinion mining |
| `recognize_entities` | Named entity recognition |
| `recognize_pii_entities` | PII detection and redaction |
| `recognize_linked_entities` | Entity linking to Wikipedia |
| `extract_key_phrases` | Key phrase extraction |
| `detect_language` | Language detection |
| `begin_analyze_healthcare_entities` | Healthcare NLP (long-running) |
| `begin_analyze_actions` | Multiple analyses in batch |

## Best Practices

1. **Pick sync OR async and stay consistent.** Do not mix `azure.ai.textanalytics` sync clients with `azure.ai.textanalytics.aio` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with TextAnalyticsClient(...) as client:` (sync) or `async with TextAnalyticsClient(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Use batch operations** for multiple documents (up to 10 per request)
4. **Enable opinion mining** for detailed aspect-based sentiment
5. **Use async client** for high-throughput scenarios
6. **Handle document errors** — results list may contain errors for some docs
7. **Specify language** when known to improve accuracy

## Reference Files

| File | Contents |
|------|----------|
| [references/capabilities.md](references/capabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |
| [references/non-hero-scenarios.md](references/non-hero-scenarios.md) | Dedicated non-hero examples for secondary/advanced scenarios. |

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Всё по теме «ИИ и ML» →
azure-speech-to-text calesthio Транскрибирует аудио в текст через REST API Azure AI Speech с таймкодами слов и разделением по спикерам. Помогает собирать субтитры в пайплайнах OpenMontage без долгой локальной обработки. CX Codex +1 775установок azure-text-to-speech calesthio Генерирует закадровую озвучку через Azure AI Speech REST API. Помогает озвучивать видео в OpenMontage качественными нейросетевыми голосами. CX Codex +1 601установок azure-architecture MicrosoftDocs Скилл с подборкой референсных архитектур, паттернов и руководств по миграции в Azure. Пригодится, когда проектируешь RAG, AKS или переезд с mainframe. CX Codex +1 413установок python-azure-iot-edge-modules официальный github Скилл помогает проектировать и развертывать модули Azure IoT Edge на Python. Пригодится для фильтрации телеметрии, адаптеров протоколов и локального инференса. 47установок azure-verified-modules hashicorp Скилл с обязательными требованиями Azure Verified Modules: проверяет и помогает писать Terraform-модули, которые проходят сертификацию AVM. CX Codex +1 3 300установок dt-obs-azure Dynatrace Скилл учит агента анализировать ресурсы Azure через Dynatrace Smartscape и DQL. Пригодится при аудите сетевой топологии, проверке настроек безопасности и анализе инфраструктуры. CX Codex +1 2 000установок

Из того же набора64

Весь набор →
azure-search-documents-py Подсказывает агенту, как писать код для Azure AI Search на Python: векторный и гибридный поиск, семантический ранжинг, индексы. 2установок azure-eventhub-py Скилл для работы с Azure Event Hubs из Python: отправка событий, чтение партиций, чекпоинты в blob-хранилище. Пригодится, когда агент пишет продюсеров и консьюмеров. 2установок azure-cosmos-py Подсказывает агенту, как работать с Azure Cosmos DB через Python SDK: CRUD документов, запросы, контейнеры, ключи разделов. 2установок azure-appconfiguration-py Скилл учит агента работать с Azure App Configuration из Python: читать и записывать настройки, включать фича-флаги, снимать снапшоты. 2установок azure-upgrade Проводит оценку и автоматизирует переход Azure-нагрузок между планами, тарифами и SKU, а также обновляет устаревшие Azure SDK в коде. 1установок azure-compute Разбирает запросы про виртуальные машины Azure и VMSS: подбор размера, цены, создание, резервирование ёмкости. Пригодится, когда агент должен не гадать, а идти по нужному сценарию. 1установок azure-storage-file-share-ts Скилл подсказывает агенту, как работать с Azure File Share через SDK @azure/storage-file-share: шары, каталоги, загрузка и скачивание файлов. 1установок azure-search-documents-ts Скилл для работы с Azure AI Search SDK на JavaScript: индексы, векторный и гибридный поиск, семантический ранкинг. Пригодится, когда агент пишет код поиска по Azure. 1установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой