SAP Sapphire 2026:Azure 上的企业 AI 正从"能用"走向"好用"

2026-05-13 16 预计阅读时间:1 分钟
来源:azure.microsoft.com AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:11 分钟

微软和 SAP 在 Sapphire 2026 上发布了一轮新公告,核心信号很明确——企业 AI 不再只是演示和试点,而是要在 Azure 上跑出规模。从运营流程、决策辅助到创新加速,双方正在把 AI 能力嵌入 SAP 生态的每一层,而不是停留在"外挂一个聊天窗口"的阶段。

不只是"部署 SAP 到 Azure",而是让 AI 成为运行时的一部分

过去几年,SAP on Azure 的主叙事是"把 ERP 搬上云"——SAP HANA 上 Azure、S/4HANA 迁移、ACSS(Azure Center for SAP Solutions)提供一键部署。这些基础设施层面的工作已经成熟。

Sapphire 2026 的新方向是:AI 不再是事后叠加的分析层,而是嵌入 SAP 业务运行时的原生能力。这意味着:

  • SAP BTP(Business Technology Platform)上的 AI 服务直接调用 Azure OpenAI 和 Azure AI Services,无需自建模型基础设施。
  • Joule(SAP 的 AI 助手)在 Azure 上获得更深的集成路径,能触达 SAP 系统数据的同时调用 Azure 的推理和搜索能力。
  • 企业不再需要在"用 SAP 的 AI"还是"用 Azure 的 AI"之间选边——两者在架构层面被打通。

三个落地方向:运营、决策、创新

公告把企业 AI 的价值锚定在三个方向上,每个方向都有具体的场景支撑:

运营自动化——从采购审批到发票匹配,AI 不只是"建议",而是能在 SAP 流程中执行动作。例如,匹配异常发票时 Joule 可以直接在 S/4HANA 中创建处置单,而不是只发一封提醒邮件。

决策加速——通过 Azure AI Search + SAP BTP 数据模型的组合,把散落在多个系统中的业务数据变成可查询、可推理的知识库。管理层问"上季度华东区毛利率下降的原因",AI 能跨系统归因,而不是只返回一张报表。

创新孵化——SAP 和 Azure 提供的 AI 工具链让业务团队可以快速构建行业微应用。比如零售企业用 SAP 主数据 + Azure OpenAI 生成商品描述和定价建议,从想法到原型只需几天。

实践:在 Azure 上为 SAP 数据接入 AI 推理能力

下面是一个可操作的示例——把 SAP 导出的业务数据通过 Azure AI Search 建立索引,再用 Azure OpenAI 实现自然语言查询。这是当前很多企业"让 ERP 数据变得可对话"的最短路径。

注意:以下示例假设你已有 Azure 订阅、Azure OpenAI 资源,以及从 SAP 导出的 JSON 格式业务数据。具体 SAP 数据导出方式取决于你的系统版本和权限配置。

# 设置变量
RESOURCE_GROUP="sap-ai-rg"
LOCATION="eastus"
SEARCH_SERVICE="sap-search-demo"

# 创建资源组
az group create --name $RESOURCE_GROUP --location $LOCATION

# 创建 Azure AI Search 服务(基本层,适合验证)
az search service create \
  --name $SEARCH_SERVICE \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku basic

# 获取搜索服务 admin key,后续索引需要用到
az search admin-key show \
  --service-name $SEARCH_SERVICE \
  --resource-group $RESOURCE_GROUP

第二步:用 Python 创建索引并导入 SAP 数据

"""
前提:pip install azure-search-documents openai
将 SAP 导出的销售数据保存为 sap_sales_data.json
格式示例:
[
  {"id": "SO-001", "region": "华东", "product": "Widget-A",
   "quantity": 1200, "revenue": 360000, "margin_pct": 22.5,
   "quarter": "Q3-2025", "notes": "大客户折扣导致毛利率偏低"},
  ...
]
"""

import json
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import SearchIndex, SimpleField, SearchField, SearchableField
from azure.core.credentials import AzureKeyCredential

# ===== 配置(替换为你的实际值)=====
SEARCH_ENDPOINT = "https://sap-search-demo.search.windows.net"
SEARCH_ADMIN_KEY = "<上一步获取的 admin key>"
INDEX_NAME = "sap-sales-index"

# ===== 创建索引 =====
index_client = SearchIndexClient(
    endpoint=SEARCH_ENDPOINT,
    credential=AzureKeyCredential(SEARCH_ADMIN_KEY)
)

fields = [
    SimpleField(name="id", type="Edm.String", key=True),
    SearchableField(name="region", type="Edm.String", filterable=True),
    SearchableField(name="product", type="Edm.String", filterable=True),
    SimpleField(name="quantity", type="Edm.Int32", filterable=True),
    SimpleField(name="revenue", type="Edm.Double", filterable=True),
    SimpleField(name="margin_pct", type="Edm.Double", filterable=True, sortable=True),
    SearchableField(name="quarter", type="Edm.String", filterable=True),
    SearchableField(name="notes", type="Edm.String"),
]

index = SearchIndex(name=INDEX_NAME, fields=fields)
index_client.create_or_update_index(index)
print(f"索引 {INDEX_NAME} 已创建")

# ===== 导入数据 =====
search_client = SearchClient(
    endpoint=SEARCH_ENDPOINT,
    index_name=INDEX_NAME,
    credential=AzureKeyCredential(SEARCH_ADMIN_KEY)
)

with open("sap_sales_data.json", "r", encoding="utf-8") as f:
    documents = json.load(f)

result = search_client.upload_documents(documents=documents)
print(f"已导入 {len(documents)} 条记录,成功: {result.succeeded_count}")

# ===== 查询示例 =====
results = search_client.search(
    search_text="毛利率偏低",
    filter="region eq '华东'",
    select=["id", "product", "margin_pct", "notes"],
    top=5
)

for r in results:
    print(f"{r['id']} | {r['product']} | 毛利率: {r['margin_pct']}% | 备注: {r['notes']}")

第三步:接入 Azure OpenAI,让数据"可对话"

from openai import AzureOpenAI

# ===== 配置(替换为你的实际值)=====
AOAI_ENDPOINT = "https://<your-resource>.openai.azure.com"
AOAI_KEY = "<your-azure-openai-key>"
AOAI_DEPLOYMENT = "gpt-4.1"  # 你的部署名称

client = AzureOpenAI(
    azure_endpoint=AOAI_ENDPOINT,
    api_key=AOAI_KEY,
    api_version="2025-04-01-preview"
)

def ask_sap_data(question: str) -> str:
    """先从 AI Search 检索相关数据,再让 GPT 基于事实回答"""

    # 1. 从索引中检索相关记录
    search_client = SearchClient(
        endpoint=SEARCH_ENDPOINT,
        index_name=INDEX_NAME,
        credential=AzureKeyCredential(SEARCH_ADMIN_KEY)
    )
    search_results = search_client.search(
        search_text=question,
        top=10,
        select=["id", "region", "product", "quantity", "revenue", "margin_pct", "quarter", "notes"]
    )

    # 2. 把检索结果组装为上下文
    context_items = []
    for r in search_results:
        context_items.append(
            f"订单{r['id']}{r['region']}区,产品{r['product']}, "
            f"收入{r['revenue']}元,毛利率{r['margin_pct']}%, "
            f"季度{r['quarter']}, 备注:{r['notes']}"
        )
    context = "\n".join(context_items) if context_items else "未找到相关数据"

    # 3. 让 GPT 基于上下文回答
    response = client.chat.completions.create(
        model=AOAI_DEPLOYMENT,
        messages=[
            {"role": "system", "content": "你是 SAP 业务数据分析助手。只根据提供的数据回答,如果数据不足以回答,明确说明。"},
            {"role": "user", "content": f"基于以下 SAP 数据回答问题:\n{context}\n\n问题:{question}"}
        ],
        temperature=0.3
    )
    return response.choices[0].message.content

# 测试
answer = ask_sap_data("华东区上季度毛利率下降的主要原因是什么?")
print(answer)

运行前需要修改的配置项: - SEARCH_ADMIN_KEY:从 Azure CLI 输出中获取 - AOAI_ENDPOINTAOAI_KEYAOAI_DEPLOYMENT:你的 Azure OpenAI 资源信息 - sap_sales_data.json:替换为你从 SAP 实际导出的业务数据

这个模式的核心思路是 Search → Context → Generate,也是当前企业把结构化数据变成"可对话资产"的主流架构。SAP BTP 上的 AI 服务未来会提供更原生的集成路径,但今天用 Azure AI Search + OpenAI 组合是最快能跑起来的方案。

落地前想清楚的三件事

数据边界比模型选择更重要。 SAP 系统里的数据有严格的权限模型——谁能看哪个组织的数据、哪个成本中心的明细。把数据导出给 AI 查询时,权限边界不能丢。建议在 AI Search 的 filter 中硬编码组织约束,而不是指望 prompt 来"尊重权限"。

先选一个痛点场景闭环,再谈规模。 Sapphire 公告描绘的是全栈 AI 化的愿景,但落地时最有效的路径是选一个高频痛点——比如发票异常处理、供应商风险预警、销售报价生成——做到从数据接入到 AI 辅助决策再到 SAP 系统回写的完整闭环。一个闭环跑通,比十个半成品更有说服力。

Azure 区域和 SAP 系统的就近原则。 AI Search 和 OpenAI 资源部署在离 SAP HANA 同区域,能减少数据传输延迟和合规风险。ACSS 部署的 SAP 系统通常在特定区域,AI 资源应跟随而非跨区。


Sapphire 2026 的公告标志着 SAP on Azure 从"基础设施层合作"进入了"AI 运行时层合作"。对企业来说,这意味着不需要在 SAP 生态和 Azure AI 之间做架构妥协——两者正在变成同一根管道上的不同接口。下一步要做的,不是等更多公告,而是用现有能力在一个真实业务场景里跑出第一个闭环。


相关推荐