← 返回首页
🧠

Azure LLM服务

📂 llm ⏱ 3 min 467 words

--- 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解决方案。