笔者之前的文章介绍了 SAP-RPT-1 的概况,以及如何在 Playground 里体验其预测服务。

本文介绍如何通过编程的方式来调用 SAP-RPT-1 服务。

笔者下面这两篇文章介绍了使用 ABAP 调用 DeepSeek API:

本文我们使用 Python 代码向 SAP-RPT-1 的 API endpoint 发起请求并解析响应:

https://p/api/predict

为了便于大家理解,我使用 Python 的 REPL(Read-Eval-Print Loop)交互式操作模式,一步步展示操作步骤。

  • Read(读取):解释器读取你输入的代码。

  • Eval(求值):解释器执行刚才读取的代码。

  • Print(打印):解释器将执行结果输出到屏幕上。

  • Loop(循环):完成上述步骤后,程序返回初始状态,等待你输入下一条指令,并开启新的循环。

这种即时反馈的机制,使得 REPL 非常适用于快速测试代码片段、学习语言特性或进行探索性编程。

命令行里输入 python 再回车,进入 REPL 模式:

将下面的代码复制到控制台去。

这段代码定义了一个名为 payload 的 Python 字典,字典中包含三个关键部分:

  • prediction_config:用于指示 SAP-RPT-1 预测的目标列与占位符约定。

  • index_column:声明数据集的主键名称。

  • rows:承载实际的业务数据行,每一行是一个包含字段的记录。

为了看起来更清晰,执行下面的命令行:

import pandas as pdsample_data = pd.DataFrame(payload["rows"])sample_data

pandas 是一个用于数据操作和分析的开源 Python 库,广泛应用于数据科学、数据分析以及机器学习等领域。它提供了数据结构和工具,简化了数据读取、清洗、分析和可视化等过程。

上图就是使用该库的 DataFrame 方法处理后的数据集可视化效果,以表格的形式清晰展示了数据集的特征。

其中红色高亮区域的两条行项目记录,其 SALESGROUP 字段被占位符[PREDICT]标注,代表等待 SAP-RPT-1 预测的分组标签。

待模型完成推断后,这些占位符会被替换为实际的 Sales Group 值。

手把手实战,使用代码消费 SAP-RPT-1 的预测服务

而蓝色区域的七条行项目包含了填充好的 SALESGROUP 值,这些行项目作为 SAP-RPT-1 进行 in-context learning 的上下文基础。

这种思路同大家平时使用 ChatGPT 等 LLM 时基于的 Few-Shot Examples 方法论类似。

比如我们给 ChatGPT 发一个指令:

写一篇关于 XXX 主题的微信,要求满足微信公众号爆款文章的特征。

ChatGPT 对于爆款文章的特征是没有确切概念的,所以这个提示词生产出的文章质量不会令人满意。

但如果我们手动找一篇阅读量,点赞,转发和评论数都比较高的文章,将其内容保存下来作为附件一起传给 ChatGPT 让它参考,那么 ChatGPT 就会有针对性地进行模仿写作。

我们传递给 ChatGPT 的文章内容附件就是 Few-Shot Examples 的一种载体。

Few-Shot Learning 本质上是一种通过提供少量示例来引导模型理解任务需求的方法。与需要大量标注数据的传统监督学习不同,Few-Shot 方法仅凭几个精心设计的输入-输出对,就能让模型快速适应新任务。

在 AIGC 语境下,这种方法通过示例展示期望的输出格式和内容风格,显著降低了模型生成内容的随机性。

在 SAP-RPT-1 擅长的表格型业务数据预测领域,我们采用类似的思路,向其下达预测任务时,将用作 in-context 学习的完整业务数据一并传入。

从 SAP-RPT-1 Playground 里将 API key 拷贝下来:

https://p/dashboard

在启动 Python 的当前目录下新建一个 .env 文件,将 API key 以键值对的形式维护进去:

RPT_TOKEN=<API key>

然后回到 Python 控制台,执行下面的命令行代码:

from dotenv import load_dotenvimport osload_dotenv()auth_token = os.getenv("RPT_TOKEN")

这会使用库方法 load_dotenv,帮助我们将 .env 文件里的键值对解析出来,将 API key 注入到 Python 变量 auth_token 中。

最后就是常规操作,使用 requests 库调用 SAP-RPT-1 API,从 .env 文件里解析并注入到 Python 变量的 API key,作为 HTTP Authorization 头部字段值的片段传入:

import requestsurl = "https://p/api/predict"headers = {    "Content-Type""application/json",    "Authorization": f"Bearer {auth_token}"}response = requests.post(url, json=payload, headers=headers)

收到 HTTP 200 的响应状态码:

然后将 response 打印到控制台上:

import jsondata = response.json()preds = data["prediction"]["predictions"]print(json.dumps(preds, indent=2, ensure_ascii=False))

从 response 里我们看到头两个行项目的 Sales Group 字段,SAP-RPT-1 预测出的值为 Enterprise Solutions 和 Office Furniture,同时给出了相应的 confidence 值即置信度。

至此这个使用 Python 代码消费 SAP-RPT-1 预测服务的例子就介绍完了。

有了这些基础,我们就可以结合 SAP Business Accelerator Hub 上的 SAP S/4HANA API,在 SAP BTP 上创建 Side-by-Side Extension 应用,将 SAP S/4HANA 业务数据抽取出来,发给 SAP-RPT-1 进行预测,将结果通过 API 再写回 SAP S/4HANA.