1.一、环境准备
1.1.1. 安装VSCode和Node.js
1.2.2. 安装VSCode插件
在VSCode中安装SAP Fiori tools插件,该插件可帮助我们创建和运行SAPUI5应用。
2.二、创建SAPUI5本地应用
2.1.1. 打开VSCode命令面板
点击菜单【查看】-【命令面板】(快捷键ctrl + shift + p),输入Fiori,选择 “Fiori: Open Applicatio Generatior”。
2.2.2. 配置应用信息
- 在 “Application Type” 中,选择 “SAPUI5 freestyle”,再选择 “SAPUI5 Application”,点击 “NEXT”。
- 选择 “Data source: None” 后点击 “NEXT”(若有系统或OData,可选择对应的选项)。
- 输入 “View name: V_Main”,继续 “NEXT”。
- 输入 “Module name” 等信息,点击 “Finish”。
2.3.3. 运行应用
在创建好的应用上,右键选择 “在集成终端中打开”,输入命令 npm start(需先安装node.js),VSCode会自动打开对应的网页。
3.三、了解SAPUI5框架开发基本流程和调用ODATA服务的方法
3.1.1. SAPUI5框架概述
SAPUI5是一种用于构建企业级Web应用程序的开发框架,由SAP开发,基于HTML5、CSS3和JavaScript技术。它提供了丰富的UI控件和工具,支持数据绑定、MVC架构、国际化等功能,还能与SAP后端系统集成。
3.2.2. 调用ODATA服务
3.2.1.配置OData Model
在SAP UI5项目中,通常在manifest.json文件中配置OData Model,示例如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "sap.app": { "dataSources": { "mainService": { "uri": "/path/to/your/service/", "type": "OData", "settings": { "odataVersion": "2.0" } } } }, "models": { "": { "dataSource": "mainService", "settings": { "defaultBindingMode": "TwoWay", "defaultCountMode": "Inline", "useBatch": true } } } } |
3.2.2.调用Function Import
在UI5控制器中调用Function Import,示例代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
onCalculateDiscount: function() { var oModel = this.getView().getModel(); var sPath = `/CalculateDiscount`; oModel.callFunction(sPath, { method: `GET`, // or `POST` depending on how the function import is defined in the OData service urlParameters: { ProductID: `123`, Quantity: `10` }, success: function(oData, oResponse) { sap.m.MessageToast.show(`Discount calculated: ` + oData.Discount); }, error: function(oError) { sap.m.MessageToast.show(`Error calculating discount`); } }); } |
4.四、获取DeepSeek API密钥
4.1.1. 登录DeepSeek开放平台
访问DeepSeek开放平台并登录(目前平台可能因高流量而暂时维护)。首次注册的用户会收到一些免费的tokens额度。
4.2.2. 创建并复制API Key
在DeepSeek开放平台左侧边栏中,找到 “API Keys” 选项,点击进入后创建一个新的API Key。创建完成后,将API Key复制并保存在安全且易于访问的地方,注意该密钥只会显示一次,若丢失需重新生成。
5.五、在SAPUI5中调用DeepSeek接口
5.1.1. 安装OpenAI SDK(DeepSeek API兼容OpenAI SDK)
在项目终端中运行命令 pip3 install openai(若使用Python)。
5.2.2. 配置模型参数
为保护API Key的安全性,可将其存储在环境变量中,以下是两种常见配置方法:
5.2.1.方法一:终端中临时添加环境变量
在终端中输入命令 export api_key="填入你的API Key"(该方法仅在当前终端会话中有效)。若希望永久添加,可将上述命令添加到~/.bashrc文件中。在Python脚本中,通过以下代码获取环境变量中的API Key:
|
1 2 3 4 |
import os api_key = os.getenv('api_key') base_url = "https://api.deepseek.com/v1" chat_model = "deepseek-chat" |
5.2.2.方法二:创建.env文件
创建一个.env文件,并在其中写入以下内容(记得替换为你的API Key):
|
1 |
1api_key="your_api_key" |
在同一路径下创建Python脚本文件,并在代码中添加以下内容:
|
1 2 3 4 5 6 |
import os from dotenv import load_dotenv load_dotenv() api_key = os.getenv('api_key') base_url = "https://api.deepseek.com/v1" chat_model = "deepseek-chat" |
5.3.3. 调用DeepSeek API
使用以下代码调用DeepSeek API:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
from openai import OpenAI client = OpenAI(api_key=api_key, base_url=base_url) response = client.chat.completions.create( model=chat_model, messages=[ {"role": "system", "content": "你是一个乐于助人的AI助手,能够帮助用户解决各种专业问题。"}, {"role": "user", "content": "你好,介绍下你自己"} ], stream=False # 设置为True可启用流式输出 ) print("Model response:") print(response.choices[0].message.content) |
6.六、开发聊天对话程序
6.1.1. 设计UI界面
在webapp/view/V_Main.view.xml文件中设计聊天界面,例如添加输入框和消息显示区域。示例代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="your.controller.name"> <Page title="Chat with DeepSeek"> <content> <List id="chatList" items="{/messages}"> <items> <StandardListItem title="{sender}" description="{message}"/> </items> </List> <Input id="inputMessage" placeholder="Type your message here" liveChange="onInputChange" /> <Button text="Send" press="onSendMessage" /> </content> </Page> </mvc:View> |
6.2.2. 实现控制器逻辑
在对应的控制器文件中实现输入框输入和发送消息的逻辑,并调用DeepSeek API获取回复。示例代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
sap.ui.define([ "sap/ui/core/mvc/Controller", "openai" ], function (Controller, OpenAI) { "use strict"; return Controller.extend("your.controller.name", { onInit: function () { this.oModel = new sap.ui.model.json.JSONModel({ messages: [] }); this.getView().setModel(this.oModel); this.client = new OpenAI({ api_key: "your_api_key", base_url: "https://api.deepseek.com/v1" }); }, onInputChange: function (oEvent) { this.sMessage = oEvent.getParameter("value"); }, onSendMessage: function () { var aMessages = this.oModel.getProperty("/messages"); aMessages.push({ sender: "You", message: this.sMessage }); this.oModel.setProperty("/messages", aMessages); this.client.chat.completions.create({ model: "deepseek-chat", messages: [ { "role": "system", "content": "你是一个乐于助人的AI助手,能够帮助用户解决各种专业问题。" }, { "role": "user", "content": this.sMessage } ], stream: false }).then(function (response) { var sResponseMessage = response.choices[0].message.content; aMessages.push({ sender: "DeepSeek", message: sResponseMessage }); this.oModel.setProperty("/messages", aMessages); }.bind(this)).catch(function (error) { console.error("Error calling DeepSeek API: ", error); }); } }); }); |
7.七、调试和测试
7.1.1. 确保OData服务和DeepSeek API可用
使用诸如SAP Gateway Client或Postman等工具测试OData function import的原始调用,验证其行为。同时,在DeepSeek开放平台上测试API调用是否正常。
7.2.2. 调试代码
在VSCode中使用调试工具对代码进行调试,检查是否存在语法错误或逻辑错误。可在浏览器开发者工具中查看控制台输出和网络请求,帮助定位问题。
8.八、部署和运行
将开发好的SAPUI5应用部署到适当的服务器上,例如SAP Fiori Launchpad或SAP Cloud Platform。部署完成后,在浏览器中访问应用,即可进行聊天对话。
