azure embedding demo
git 工程 仓库,本节的代码都来自于此
https://github.com/qyzhizi/python_logical/tree/main/2025-04-19-azure-embedding-test
参考:
azure 模型部署的入口,包含使用文档,包括 python js 的语言
第一种方案,使用 openai 1.x 版本的库
from openai import AzureOpenAI
from dotenv import dotenv_values, find_dotenv
env_vars = dotenv_values(find_dotenv())
API_KEY = env_vars.get("API_KEY", None)
endpoint = "https://qyzhiziopenai.cognitiveservices.azure.com/"
model_name = "text-embedding-3-small"
deployment = "text-embedding-3-small"
api_version = "2024-02-01"
client = AzureOpenAI(
api_version="2024-12-01-preview",
azure_endpoint=endpoint,
# azure_deployment=deployment, # 可以设置也可以不设置
api_key=API_KEY
)
response = client.embeddings.create(
input=["first phrase","second phrase","third phrase"],
model=deployment
)
for item in response.data:
length = len(item.embedding)
print(
f"data[{item.index}]: length={length}, "
f"[{item.embedding[0]}, {item.embedding[1]}, "
f"..., {item.embedding[length-2]}, {item.embedding[length-1]}]"
)
print(response.usage)
第二种方案,使用 azure-ai-inference 与 azure-core 库
azure-ai-inference==1.0.0b9
azure-core==1.33.0
openai==1.75.0
python-dotenv==1.1.0
from azure.ai.inference import EmbeddingsClient
from azure.core.credentials import AzureKeyCredential
from dotenv import dotenv_values, find_dotenv
env_vars = dotenv_values(find_dotenv())
API_KEY = env_vars.get("API_KEY", None)
endpoint = "https://qyzhiziopenai.cognitiveservices.azure.com/openai/deployments/text-embedding-3-small"
model_name = "text-embedding-3-small"
client = EmbeddingsClient(
endpoint=endpoint,
credential=AzureKeyCredential(API_KEY)
)
response = client.embed(
input=["first phrase","second phrase","third phrase"],
model=model_name
)
for item in response.data:
length = len(item.embedding)
print(
f"data[{item.index}]: length={length}, "
f"[{item.embedding[0]}, {item.embedding[1]}, "
f"..., {item.embedding[length-2]}, {item.embedding[length-1]}]"
)
print(response.usage)
azure embedding openai 库 老版本 与新版本的区别
https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/embeddings?tabs=python
openai 库 老版本(0.x)代码
import os
import openai
openai.api_type = "azure"
openai.api_key = os.getenv("AZURE_OPENAI_API_KEY")
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")
openai.api_version = "2023-05-15"
response = openai.Embedding.create(
input="Your text string goes here",
engine="YOUR_DEPLOYMENT_NAME"
)
embeddings = response['data'][0]['embedding']
print(embeddings)
openai 库 新版本(1.x)代码
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
api_version = "2023-05-15",
azure_endpoint =os.getenv("AZURE_OPENAI_ENDPOINT")
)
response = client.embeddings.create(
input = "Your text string goes here",
model= "text-embedding-3-small"
)
print(response.model_dump_json(indent=2))
https://xxx.cognitiveservices.azure.com/ 与 https://xxx.openai.azure.com/ 这两个 endpoint 区别?
*.cognitiveservices.azure.com 是 Azure 认知服务(Cognitive Services)资源的通用域名,用于访问文本分析、计算机视觉、语音、语言理解等多种 AI 服务。
Microsoft Learn
*.openai.azure.com 则是专门为 Azure OpenAI Service 提供的域名,仅用于调用 OpenAI GPT、Embeddings、DALL·E 等模型的 REST API
下面是 两者的区别:
特性 | *.cognitiveservices.azure.com | *.openai.azure.com |
---|---|---|
适用服务 | 文本分析、计算机视觉、语音、翻译、语言理解等多种认知服务 | 专有 OpenAI 模型(GPT、Embeddings、DALL·E 等) |
认证 HTTP 头 | Ocp-Apim-Subscription-Key 或 Authorization: Bearer | api-key 或 Authorization: Bearer |
URL 路径示例 | /text/analytics/v3.1/sentiment | /openai/deployments/{deploy}/completions |
官方客户端库 | Azure Cognitive Services SDK | Azure.AI.OpenAI SDK |
多模型 vs 单模型部署 | 单一资源可访问多种服务 | 每个资源仅针对 OpenAI 模型,需要分别部署 |
Azure AI Foundry 是什么?
名称演进:Azure AI Foundry 前身为 Azure AI Studio。2024 年底,随着功能升级与定位扩展,正式更名为 Azure AI Foundry。
azure.microsoft.com
目标人群:面向开发者、数据科学家与 IT 管理员,提供端到端的 AI 应用和智能代理构建能力。
微软技术社区
可用性:平台已在 ai.azure.com 正式上线,一体化 SDK 目前处于公测阶段,门户功能全面可用。
核心功能
模型目录与评估
汇聚 Microsoft、OpenAI、Hugging Face、Meta、Mistral 等多家合作伙伴的前沿与开源模型。
支持基于公开数据集或自定义测试集进行横向对比,直观查看各模型在不同任务上的表现。
智能代理工具链
提供包括 Responses API、AI Agent Service 在内的多种接口,将工具调用、函数调用与文件搜索等能力融于一体,简化复杂工作流的开发。
支持创建具备多步骤决策和外部系统交互能力的企业级代理。
模型定制与蒸馏
支持对 GPT-4.1、GPT-4.5 等大模型进行细粒度微调与蒸馏,优化特定行业或任务的效果与推理成本。