Azure AI
概念
Azure AI 是微软在 Azure 云平台上提供的一组人工智能服务,覆盖模型推理、搜索、文档解析、语音、视觉等能力。对企业应用而言,最常用的入口是 Azure OpenAI Service——在 Azure 托管环境中调用 GPT、Embedding 等模型,并配合 Azure AI Search 构建 RAG 应用。
💡 Azure OpenAI 的 API 与 OpenAI 官方接口高度兼容,现有基于
openaiSDK 或 LangChain 的代码通常只需更换 endpoint 与认证信息即可迁移。
核心服务
| 服务 | 作用 | 典型场景 |
|---|---|---|
| Azure OpenAI Service | 托管 GPT、Embedding、DALL·E 等模型 | 对话、文本生成、向量化 |
| Azure AI Search | 全文 + 向量混合检索 | RAG 知识库检索 |
| Azure AI Foundry | 统一开发门户(原 Azure AI Studio) | 模型部署、Prompt 调试、Agent 编排 |
| Azure Document Intelligence | 文档结构化解析(OCR、表格) | 合同、发票、PDF 入库 |
| Azure Speech / Vision | 语音与图像能力 | 语音转写、图像分析 |
快速开始
1. 创建资源
在 Azure Portal 中:
- 创建 Azure OpenAI 资源
- 在资源内 Deploy models,部署所需模型(如
gpt-4o、text-embedding-3-small) - 记录 Endpoint、API Key 与 Deployment Name(部署名,非模型名)
2. 安装依赖
bash
pip install openai
# 若使用 LangChain
pip install langchain-openai3. 调用 Chat Completions
Azure OpenAI 使用 api-version 参数,endpoint 格式为 https://{resource}.openai.azure.com/。
python
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint="https://your-resource.openai.azure.com/",
api_key="your-api-key",
api_version="2024-02-15-preview",
)
response = client.chat.completions.create(
model="gpt-4o", # 此处填部署名(Deployment Name)
messages=[
{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "用一句话解释什么是 RAG"},
],
)
print(response.choices[0].message.content)4. 调用 Embeddings
python
embedding = client.embeddings.create(
model="text-embedding-3-small", # 部署名
input="Azure OpenAI 支持向量检索",
)
vector = embedding.data[0].embedding
print(len(vector)) # 维度取决于模型与 LangChain 集成
LangChain 通过 AzureChatOpenAI 与 AzureOpenAIEmbeddings 封装 Azure OpenAI,用法与 Langchain 中的 LCEL 链一致。
python
from langchain_openai import AzureChatOpenAI, AzureOpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = AzureChatOpenAI(
azure_endpoint="https://your-resource.openai.azure.com/",
api_key="your-api-key",
api_version="2024-02-15-preview",
azure_deployment="gpt-4o",
temperature=0.7,
)
embeddings = AzureOpenAIEmbeddings(
azure_endpoint="https://your-resource.openai.azure.com/",
api_key="your-api-key",
api_version="2024-02-15-preview",
azure_deployment="text-embedding-3-small",
)
prompt = ChatPromptTemplate.from_messages([
("system", "请用{language}回答"),
("user", "{question}"),
])
chain = prompt | llm | StrOutputParser()
print(chain.invoke({"language": "中文", "question": "Azure AI 有哪些优势?"}))RAG 场景:Azure AI Search
在 Azure 上构建 RAG 时,常见架构为:
文档 → Document Intelligence 解析 → Embedding → Azure AI Search 索引
用户提问 → Embedding → Search 检索 → 上下文 + 问题 → Azure OpenAI 生成Azure AI Search 支持向量检索、关键词检索与混合检索,适合作为 RAG 的生产级检索层。索引创建与数据导入可通过 Portal、REST API 或 azure-search-documents SDK 完成。
bash
pip install azure-search-documents认证方式
| 方式 | 说明 | 适用场景 |
|---|---|---|
| API Key | 在请求头中携带 api-key | 本地开发、快速验证 |
| Microsoft Entra ID | 基于 Azure AD 的 OAuth 令牌 | 生产环境、细粒度权限控制 |
生产环境建议使用 Entra ID(Managed Identity),避免在代码或配置中硬编码 Key。
与 OpenAI 官方 API 的差异
- Endpoint 不同:必须使用 Azure 资源专属 endpoint,不能使用
api.openai.com - 部署名:请求中的
model参数填 Deployment Name,而非公开模型名 - API Version:需显式指定
api-version(如2024-02-15-preview) - 区域与配额:模型可用性、TPM(Tokens Per Minute)因区域和资源 SKU 而异
