当前位置: 首页 > article >正文

SAP ABAP调用DeepSeek API大模型接口

搜索了一下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.kler.cn/a/540157.html

相关文章:

  • PAT 1056 组合数的和(分数:15)
  • 企业级Mysql实战
  • React受控组件的核心原理与实战精要
  • 十二、Docker Compose 部署 SpringCloudAlibaba 微服务
  • docker学习笔记
  • 什么是网络安全
  • git实现回退
  • 让office集成deepseek,支持office和WPS办公软件!(体验感受)
  • 进阶数据结构——单调栈
  • 【JVM详解三】垃圾回收机制
  • 嵌入式硬件篇---OpenMV的硬件流和软件流
  • 使用Chisel建立端口转发与SOCKS5代理隧道
  • [含文档+PPT+源码等]精品大数据项目-Django基于大数据实现的心血管疾病分析系统
  • 使用OpenGL自己定义一个button,响应鼠标消息:掠过、点击、拖动
  • 深度学习-利用预训练的 ResNet 和 DenseNet 模型进行医学影像诊断
  • HiveQL命令(二)- 数据表操作
  • 自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同
  • [LVGL] 在VC_MFC中移植LVGL
  • linux基础命令1
  • 【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
  • Layui树节点添加level属性
  • 【Linux】31.Linux 多线程(5)
  • Python+Flask搭建属于自己的B站,管理自己电脑里面的视频文件。支持对文件分类、重命名、删除等操作。
  • 日志统计(acWing,蓝桥杯)
  • PLSQL: 存储过程,用户自定义函数[oracle]
  • python-leetcode-组合总和