Azure AI Overview
Microsoft Azure provides a comprehensive suite of AI services:
- Azure OpenAI Service - GPT models with enterprise features
- Azure Cognitive Services - Vision, Speech, Language, Decision
- Azure Machine Learning - Custom model training and deployment
- Azure AI Search - Intelligent search with semantic ranking
Getting Started with Azure
Prerequisites
Creating Resources
# Login to Azure
az login
# Create resource group
az group create --name myai-rg --location eastus
# Create Azure OpenAI resource
az cognitiveservices account create \
--name myopenai-resource \
--resource-group myai-rg \
--kind OpenAI \
--sku S0 \
--location eastus
Azure OpenAI Service
Why Azure OpenAI?
- Enterprise security and compliance
- Virtual network support
- Content filtering
- Regional deployment options
- SLA guarantees
Deployment
# Deploy a model
az cognitiveservices account deployment create \
--name myopenai-resource \
--resource-group myai-rg \
--deployment-name gpt-4-deployment \
--model-name gpt-4 \
--model-version "0613" \
--model-format OpenAI \
--sku-capacity 10 \
--sku-name Standard
Using the API
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.environ["AZURE_OPENAI_KEY"],
api_version="2024-02-15-preview",
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"]
)
response = client.chat.completions.create(
model="gpt-4-deployment", # Your deployment name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(response.choices[0].message.content)
Streaming
stream = client.chat.completions.create(
model="gpt-4-deployment",
messages=[{"role": "user", "content": "Write a story"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Azure Cognitive Services
Computer Vision
Analyze images for objects, text, and more:
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from msrest.authentication import CognitiveServicesCredentials
client = ComputerVisionClient(
endpoint=os.environ["VISION_ENDPOINT"],
credentials=CognitiveServicesCredentials(os.environ["VISION_KEY"])
)
# Analyze an image
analysis = client.analyze_image(
url="https://example.com/image.jpg",
visual_features=["Categories", "Description", "Tags", "Objects"]
)
print(f"Description: {analysis.description.captions[0].text}")
for tag in analysis.tags:
print(f"Tag: {tag.name} ({tag.confidence:.2%})")
Speech Services
Text-to-speech and speech-to-text:
import azure.cognitiveservices.speech as speechsdk
# Speech to Text
speech_config = speechsdk.SpeechConfig(
subscription=os.environ["SPEECH_KEY"],
region=os.environ["SPEECH_REGION"]
)
audio_config = speechsdk.AudioConfig(filename="audio.wav")
recognizer = speechsdk.SpeechRecognizer(
speech_config=speech_config,
audio_config=audio_config
)
result = recognizer.recognize_once()
print(f"Recognized: {result.text}")
# Text to Speech
synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config)
result = synthesizer.speak_text_async("Hello, world!").get()
Language Services
Text analytics, translation, and more:
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
client = TextAnalyticsClient(
endpoint=os.environ["LANGUAGE_ENDPOINT"],
credential=AzureKeyCredential(os.environ["LANGUAGE_KEY"])
)
# Sentiment analysis
documents = ["I love this product!", "This is terrible."]
response = client.analyze_sentiment(documents)
for doc in response:
print(f"Sentiment: {doc.sentiment}")
print(f"Scores: positive={doc.confidence_scores.positive:.2%}, "
f"negative={doc.confidence_scores.negative:.2%}")
Translator
import requests
endpoint = "https://api.cognitive.microsofttranslator.com"
path = "/translate?api-version=3.0&to=es&to=fr"
headers = {
"Ocp-Apim-Subscription-Key": os.environ["TRANSLATOR_KEY"],
"Ocp-Apim-Subscription-Region": os.environ["TRANSLATOR_REGION"],
"Content-Type": "application/json"
}
body = [{"text": "Hello, world!"}]
response = requests.post(endpoint + path, headers=headers, json=body)
for translation in response.json()[0]["translations"]:
print(f"{translation['to']}: {translation['text']}")
Azure AI Search
Intelligent search with semantic ranking:
from azure.search.documents import SearchClient
from azure.core.credentials import AzureKeyCredential
client = SearchClient(
endpoint=os.environ["SEARCH_ENDPOINT"],
index_name="my-index",
credential=AzureKeyCredential(os.environ["SEARCH_KEY"])
)
# Semantic search
results = client.search(
search_text="What is machine learning?",
query_type="semantic",
semantic_configuration_name="my-semantic-config",
select=["title", "content"],
top=5
)
for result in results:
print(f"Title: {result['title']}")
print(f"Score: {result['@search.score']}")
RAG with Azure
Retrieval-Augmented Generation combining Azure AI Search and Azure OpenAI:
# 1. Search for relevant documents
search_results = search_client.search(
search_text=user_query,
query_type="semantic",
top=5
)
# 2. Build context from results
context = "\n".join([doc["content"] for doc in search_results])
# 3. Generate response with context
response = openai_client.chat.completions.create(
model="gpt-4-deployment",
messages=[
{
"role": "system",
"content": f"Answer based on this context:\n{context}"
},
{"role": "user", "content": user_query}
]
)
Best Practices
Security
- Use managed identities where possible
- Store keys in Azure Key Vault
- Enable private endpoints for sensitive workloads
- Implement content filtering
Cost Management
- Use appropriate model sizes
- Implement caching for repeated queries
- Monitor usage with Azure Cost Management
- Consider provisioned throughput for predictable workloads
Performance
- Deploy to regions close to users
- Use streaming for better UX
- Implement retry logic with exponential backoff
- Cache embeddings for frequently accessed content
Error Handling
from azure.core.exceptions import HttpResponseError
try:
response = client.chat.completions.create(...)
except HttpResponseError as e:
if e.status_code == 429:
print("Rate limited - implement backoff")
elif e.status_code == 401:
print("Authentication failed - check credentials")
else:
print(f"Error: {e.message}")
Conclusion
Azure AI Services provide enterprise-grade AI capabilities with the security and compliance features organizations need. Whether using Azure OpenAI for language models or Cognitive Services for specialized tasks, the platform offers comprehensive tools for building AI applications.
Next: Google Vertex AI Integration - Working with Google's AI platform