笔者之前的文章介绍了 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 值。

而蓝色区域的七条行项目包含了填充好的 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.