SAP ABAP调用DeepSeek API大模型接口

embedded/2025/2/10 8:46:07/

搜索了一下DeepSeek,发现有人已经实现了SAP的对接,

不登录网页,SAP如何使用DeepSeek快速编程,ABAP起飞啦~

按照对应的注册流程和方法。总算做出了第一个能够直连DeepSeek的API abap程序。

效果不错。

report ZTOOL_ABAP_CALL_DS.


data:
      LV_JSON_REQUEST  type STRING .



data LV_CONT type STRING.

LV_CONT 'SAP ewm是什么?请用中文回答我'.

* 构建JSON请求体
LV_JSON_REQUEST '{"model":"deepseek-chat",'
&& '"messages":['
&& '  {"role":"system","content":"'      && LV_CONT &&   '"},'
&& '  {"role":"user","content":"Hello!"}'
&& '],'
&& '"stream":false}'.




data GV_OK type C length 6.
data LV_STR type STRING.
data LV_RET type STRING.
perform FRM_TEST using LV_JSON_REQUEST changing LV_RET.


form FRM_TEST  using UV_JSON_REQUEST changing CV_RET.

dataLV_STATUS         type I,
        LV_ERROR_OCCURRED type FLAG,
        LV_ERROR_MSG      type STRING,
        LV_RESPONSE_BODY  type STRING.

clear CV_RET.
do times.
perform SEND_JSON using
'https://api.deepseek.com/chat/completions'  "
          UV_JSON_REQUEST            " JSON报文
changing LV_STATUS
      LV_RESPONSE_BODY
      LV_ERROR_OCCURRED
      LV_ERROR_MSG.
enddo.


* Show result
format color col_heading.
write'Response status:'LV_STATUS.
write'调用成功次数:'GV_OK.
if LV_ERROR_OCCURRED 'X'.
format color col_negative.
write'Error occurred:'LV_ERROR_MSG.
endif.
format color col_normal.
write'Response:'LV_RESPONSE_BODY.

if LV_RESPONSE_BODY cs `"content":"`.
perform FRM_CUT using LV_RESPONSE_BODY
`"content":"`
`"},"logprobs":`
changing CV_RET.



endif.

endform.                    "start

form SEND_JSON using IV_URL type STRING
      IV_JSON_DATA type STRING
changing CV_STATUS type I
  CV_RESPONSE_BODY type STRING
  CV_ERROR_OCCURRED type FLAG
  CV_ERROR_MSG type STRING.


staticsLO_CLIENT type ref to IF_HTTP_CLIENT.

clearCV_ERROR_MSG,
  CV_STATUS,
  CV_ERROR_OCCURRED,
  CV_ERROR_MSG.

if IV_URL is initial.
message E349(SBDSinto CV_ERROR_MSG.
    CV_ERROR_OCCURRED 'X'.
return.
endif.
statics SV_BEGIN type C length 1.
if SV_BEGIN is initial.
call method CL_HTTP_CLIENT=>CREATE_BY_URL
exporting
        URL                IV_URL
importing
CLIENT             LO_CLIENT
exceptions
        ARGUMENT_NOT_FOUND 1
        PLUGIN_NOT_ACTIVE  2
        INTERNAL_ERROR     3
others             4.
if SY-SUBRC ne 0.
message id SY-MSGID type SY-MSGTY number SY-MSGNO
with SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
into CV_ERROR_MSG.
      CV_ERROR_OCCURRED 'X'.
return.
endif.
    SV_BEGIN 'X'.
    LO_CLIENT->REQUEST->SET_CONTENT_TYPE'application/json' ).
    LO_CLIENT->REQUEST->SET_METHOD'POST' ).
*   自定义参数
    LO_CLIENT->REQUEST->SET_HEADER_FIELDNAME 'InterfaceName' VALUE 'HTTP://WWW.HOT583.COM' ). "//保留。
    LO_CLIENT->REQUEST->SET_HEADER_FIELDNAME 'Authorization' VALUE 'Bearer sk-f28ade71f6748ae8adfa98ka8132' ). "换算成自己的DeepSeek网址申请密钥吧。

默认有10元赠送金额,相当于免费。过了之后支付宝或者微信采购即可。




endif.

  LO_CLIENT->REQUEST->SET_CDATAIV_JSON_DATA ).

call method LO_CLIENT->SEND
exceptions
      HTTP_COMMUNICATION_FAILURE 1
      HTTP_INVALID_STATE         2
      HTTP_PROCESSING_FAILED     3
others                     4.
if SY-SUBRC ne 0.
    LO_CLIENT->GET_LAST_ERRORimporting MESSAGE CV_ERROR_MSG ).
    CV_ERROR_OCCURRED 'X'.
return.
endif.

  LO_CLIENT->RECEIVEexceptions others ).
if SY-SUBRC ne 0.
    LO_CLIENT->GET_LAST_ERRORimporting MESSAGE CV_ERROR_MSG ).
    CV_ERROR_OCCURRED 'X'.
return.
endif.

  CV_RESPONSE_BODY LO_CLIENT->RESPONSE->GET_CDATA( ).
  LO_CLIENT->RESPONSE->GET_STATUSimporting CODE CV_STATUS ).

* CALL METHOD LO_CLIENT->CLOSE( )."如果多开需要关闭。
  GV_OK =  GV_OK + 1.


endform.
*&---------------------------------------------------------------------*
*& Form FRM_CUT
*&---------------------------------------------------------------------*
*& 截取AB中间的保留到C。
*&---------------------------------------------------------------------*
form FRM_CUT  using    UV_INPUT
                       P_A
                       P_B
changing CV_RET.
data LV_TMP type STRING.
split UV_INPUT at P_A into LV_TMP CV_RET.
clear LV_TMP.
split CV_RET   at P_B into CV_RET LV_TMP.

endform.


http://www.ppmy.cn/embedded/161040.html

相关文章

BUU27 [SUCTF 2019]CheckIn1

题目是上传文件 直接上传muma.jpg还不成功: 好吧,那做一个图片马上去,换马以后发现还是不行,呃啊啊啊啊 干啥啥不行,搜wp第一名,哎 新面孔:exif_imagetype 函数在 PHP 中用于检测一个文件是否为…

深入理解Node.js_架构与最佳实践

1. 引言 1.1 什么是Node.js Node.js简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用。Node.js的历史背景和发展:Node.js最初由Ryan Dahl在2009年发布,旨在解决I/O密集型应用的性能问题。随着时间的推移,Node.js社区不断壮大,提供…

镜头放大倍率和像素之间的关系

相互独立的特性 镜头放大倍率:主要取决于镜头的光学设计和结构,决定了镜头对物体成像时的缩放程度,与镜头的焦距等因素密切相关。比如,微距镜头具有较高的放大倍率,能将微小物体如昆虫、花朵细节等放大成像&#xff0…

用 Python 给 Excel 表格截图(20250207)

我搜索了网络上的方案,感觉把 Excel 表格转换为 HTML 再用 platwright 截图是比较顺畅的路径,因为有顺畅的工具链。如果使用的是 Windows 系统则不需要阅读此文,因为 win32com 库更方便。这篇文章中 Excel 转 HTML 的方案,主要弥补…

重庆市大数据局:基于可信数据空间的公共数据流通利用(附下载)

在2024年可信数据空间论坛上,重庆市大数据局相关领导发表了题为:基于可信数据空间的公共数据流通利用的演讲,系统介绍了重庆公共数据流通方面的实践经验和案例。 关注WeChat Subscription Account【智慧城市指北】,回复关键字“2…

智能理解 PPT 内容,快速生成讲解视频

当我们想根据一版 PPT 制作出相对应的解锁视频时,从撰写解锁词,录制音频到剪辑视频,每一个环节都需要投入大量的时间和精力,本方案将依托于阿里云函数计算 FC 和百炼模型服务,实现从 PPT 到视频的全自动转换&#xff0…

车联网技术在智能交通系统中的设计与实现(论文+源码)

1系统方案设计 根据系统设计需求,展开系统详细方案设计。如图2.1所示为系统设计结构框图。系统以STM32单片机为主控制器,利用ATGM336 GPS模块实现车辆实时定位,借助倾斜检测模块监测车辆倾斜角度,并通过OLED液晶显示器实时显示监测…

Level DB --- Iterator

Iterator是Level DB中的一个基类,它定义了迭代器的基础的操作,同时对内存资源进行了维护。 虚函数 Iterator类中的虚函数操作如下: virtual ~Iterator();// An iterator is either positioned at a key/value pair, or// not valid. This …