Azure LLM服务
--- title: "Azure LLM服务" description: "全面介绍Azure平台上的大语言模型服务,包括OpenAI Service、Cognitive Services和ML Studio集成" tags: ["Azure", "LLM服务", "OpenAI", "Cognitive Services", "ML Studio"] category: "llm" icon: "🧠"
Azure LLM服务
Microsoft Azure是全球领先的云平台之一,提供了丰富的大语言模型(LLM)服务。Azure OpenAI Service让企业能够安全地使用GPT系列模型,Cognitive Services提供预构建的AI能力,Azure ML Studio支持自定义模型的训练和部署。本文将详细介绍这三大服务的LLM集成方案。
Azure OpenAI Service
Azure OpenAI Service是微软与OpenAI合作的企业级LLM服务,提供GPT-4、GPT-3.5 Turbo等模型的托管式API,具有企业级安全性和合规性保障。
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.environ["AZURE_OPENAI_KEY"],
api_version="2024-02-01",
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"]
)
def chat_completion(messages, model="gpt-4-deployment"):
response = client.chat.completions.create(
model=model,
messages=messages,
max_tokens=2048,
temperature=0.7,
top_p=0.95
)
return response.choices[0].message.content
def generate_embedding(text, model="text-embedding-ada-002-deployment"):
response = client.embeddings.create(
model=model,
input=text
)
return response.data[0].embedding
def stream_chat(messages, model="gpt-4-deployment"):
response = client.chat.completions.create(
model=model,
messages=messages,
max_tokens=2048,
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
Azure OpenAI Service的API与OpenAI原生API高度兼容,迁移成本极低。通过部署名称(Deployment Name)访问模型,支持多区域部署和故障转移。数据不会被用于模型训练,满足企业数据安全要求。
Cognitive Services AI能力
Azure Cognitive Services提供了一系列预构建的AI API,涵盖文本分析、翻译、语音识别等能力,可以与LLM结合构建更强大的应用。
from azure.ai.textanalytics import TextAnalyticsClient
from azure.ai.translation import TranslatorClient
from azure.core.credentials import AzureKeyCredential
import os
text_client = TextAnalyticsClient(
endpoint=os.environ["TEXT_ENDPOINT"],
credential=AzureKeyCredential(os.environ["TEXT_KEY"])
)
def analyze_sentiment(texts):
results = text_client.analyze_sentiment(documents=texts)
sentiments = []
for doc in results:
sentiments.append({
"text": doc.sentences[0].text[:50],
"sentiment": doc.sentiment,
"confidence": {
"positive": doc.confidence_scores.positive,
"neutral": doc.confidence_scores.neutral,
"negative": doc.confidence_scores.negative
}
})
return sentiments
def extract_key_phrases(texts):
results = text_client.extract_key_phrases(documents=texts)
return [{"text": doc.key_phrases[:3]} for doc in results]
def detect_language(texts):
results = text_client.detect_language(documents=texts)
return [{"text": doc.primary_language.name, "confidence": doc.primary_language.confidence_score} for doc in results]
def translate_text(text, target_language="ja"):
from azure.ai.translation import TextTranslationClient
translator = TextTranslationClient(
endpoint=os.environ["TRANSLATOR_ENDPOINT"],
credential=AzureKeyCredential(os.environ["TRANSLATOR_KEY"]),
region=os.environ["TRANSLATOR_REGION"]
)
response = translator.translate(body=[{"Text": text}], to_language=target_language)
return response[0].translations[0].text
Cognitive Services的文本分析API提供了情感分析、关键短语提取和语言检测能力。这些能力可以与LLM结合,构建增强的文本处理管道。
Azure ML Studio:自定义模型
Azure Machine Learning Studio提供了完整的ML平台,支持自定义LLM的训练、微调和部署。对于需要定制化模型的企业,ML Studio是理想选择。
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment
)
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
ml_client = MLClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
workspace_name=os.environ["AZURE_WORKSPACE"]
)
def register_custom_model(model_path, model_name):
model = Model(
path=model_path,
name=model_name,
description="自定义LLM模型",
type="custom_model"
)
registered_model = ml_client.models.create_or_update(model)
return registered_model
def deploy_model_to_endpoint(model_name, endpoint_name):
endpoint = ManagedOnlineEndpoint(
name=endpoint_name,
auth_mode="key",
description="LLM推理端点"
)
ml_client.online_endpoints.begin_create_or_update(endpoint).result()
deployment = ManagedOnlineDeployment(
name="primary",
endpoint_name=endpoint_name,
model=f"azureml:{model_name}:1",
instance_type="Standard_NC6s_v3",
instance_count=1,
request_settings={
"request_timeout_ms": 60000,
"max_concurrent_requests_per_instance": 2
}
)
ml_client.online_deployments.begin_create_or_update(deployment).result()
endpoint.traffic = {"primary": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint).result()
return endpoint
def invoke_endpoint(endpoint_name, prompt):
import requests
url = f"https://{endpoint_name}.inference.ml.azure.com/score"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {ml_client.online_endpoints.get_keys(endpoint_name).primary_key}"
}
payload = {"inputs": prompt}
response = requests.post(url, headers=headers, json=payload)
return response.json()
ML Studio支持从HuggingFace、Azure Blob Storage或本地路径注册模型。部署时可以选择GPU实例(如Standard_NC6s_v3),满足LLM推理的算力需求。
RAG架构实现
Azure提供了完整的RAG(检索增强生成)解决方案,结合Azure AI Search和OpenAI Service构建企业知识问答系统。
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient
from azure.core.credentials import AzureKeyCredential
search_client = SearchClient(
endpoint=os.environ["SEARCH_ENDPOINT"],
index_name="knowledge-base",
credential=AzureKeyCredential(os.environ["SEARCH_KEY"])
)
def build_rag_pipeline(documents):
for doc in documents:
embedding = generate_embedding(doc["content"])
search_client.upload_documents([{
"id": doc["id"],
"content": doc["content"],
"title": doc["title"],
"embedding": embedding,
"metadata": doc.get("metadata", {})
}])
return len(documents)
def rag_query(question, top_k=5):
question_embedding = generate_embedding(question)
results = search_client.search(
search_text=question,
vectors=[{"value": question_embedding, "k_nearest_neighbors": top_k, "fields": "embedding"}],
top=top_k
)
context = "\n\n".join([doc["content"] for doc in results])
messages = [
{"role": "system", "content": "你是企业知识助手。基于以下参考资料回答问题,如果资料中没有相关信息请说明。"},
{"role": "user", "content": f"参考资料:\n{context}\n\n问题:{question}"}
]
response = chat_completion(messages)
return response
RAG管道通过Azure AI Search的向量搜索能力检索相关文档,然后将上下文传递给LLM生成准确回答。这种架构既利用了LLM的生成能力,又保证了回答基于真实数据。
安全与合规
Azure提供了企业级的安全保障,包括数据加密、网络隔离和访问控制,确保LLM应用的安全运行。
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
def get_credentials_with_managed_identity():
credential = ManagedIdentityCredential()
return credential
def access_keyvault_secrets(vault_url):
credential = ManagedIdentityCredential()
client = SecretClient(vault_url=vault_url, credential=credential)
openai_key = client.get_secret("openai-api-key")
search_key = client.get_secret("search-api-key")
return {"openai_key": openai_key.value, "search_key": search_key.value}
def enable_content_filter(messages):
response = client.chat.completions.create(
model="gpt-4-deployment",
messages=messages,
max_tokens=2048,
content_filter_config={
"enabled": True,
"blocked_categories": ["Hate", "Sexual", "Violence", "SelfHarm"]
}
)
return response
通过Azure Key Vault管理密钥,使用Managed Identity进行身份认证,启用Content Filter过滤有害内容,构建安全合规的LLM应用。
总结
Azure提供了全面的LLM服务生态,从OpenAI Service的托管式API到Cognitive Services的预构建能力,再到ML Studio的自定义模型平台,覆盖了企业级AI应用的各种需求。开发者可以利用Azure的企业级安全和合规能力,构建可信赖的LLM解决方案。