笔者之前的文章,已经详细介绍了 DeepSeek 的 API 调用方式:
在腾讯 HAI 上使用 DeepSeek + RAG 实现 SAP 私人知识库
免费使用 DeepSeek R1 满血版不卡顿,支持个人知识库
DeepSeek API 的调用方法
之前已经介绍过 ABAP 里一些开箱即用的调用 ChatGPT API 的工具和 SDK:
使用 ChatGPT Canvas 辅助 ABAP 开发
在 SAPGUI 里同 ChatGPT 进行聊天
ChatGPT Store 上和 ABAP 相关的那些定制化 GPT 到底好不好用?
同理,在 ABAP 里通过代码的方式,调用 DeepSeek 的 API 也非常容易。
在 DeepSeek API 控制台上,能看到针对 curl 和其他编程语言调用的示例代码。
把 curl 的代码粘贴下来,直接扔给 ChatGPT,让它翻译成对应的 ABAP 代码。
图片
指令:
请你扮演一个资深的 ABAP 开发人员,请你把下面这段 curl 消费 API 的操作,翻译成能够运行的 ABAP 代码。
听说 ChatGPT 5 也快出了。目前 o3-mini-high, 应该是手头能用的最强的代码编写工具了吧。
图片
果然 ChatGPT 生成的代码质量非常高,直接激活通过,一次成功。我只需要把代码里的 <token> 占位符,替换成自己的 API key 就能运行了。
将代码中要问 DeepSeek 的问题,硬编码成 "What is ABAP?".
另存为一个 ABAP 报表,直接运行, 收到 DeepSeek API 的调用结果。
图片
完整的 ABAP 代码如下,100% 由 ChatGPT 生成:
REPORT z.DATA: lo_http_client TYPE REF TO if_http_client, lv_url TYPE string VALUE 'https://api.siliconflow.cn/v1/chat/completions', lv_token TYPE string VALUE '<此处替换成你自己的 API key>', lv_json_payload TYPE string, lv_response TYPE string.lv_json_payload = `{` && `"model": "deepseek-ai/DeepSeek-V3",` && `"messages": [` && `{` && `"role": "user",` && `"content": "What is ABAP?"` && `}` && `],` && `"stream": false,` && `"max_tokens": 512,` && `"stop": [` && `"null"` && `],` && `"temperature": 0.7,` && `"top_p": 0.7,` && `"top_k": 50,` && `"frequency_penalty": 0.5,` && `"n": 1,` && `"response_format": {` && `"type": "text"` && `},` && `"tools": [` && `{` && `"type": "function",` && `"function": {` && `"description": "<string>",` && `"name": "<string>",` && `"parameters": {},` && `"strict": false` && `}` && `}` && `]` &&`}`.TRY. cl_http_client=>create_by_url( EXPORTING url = lv_url ssl_id = 'ANONYM' IMPORTING client = lo_http_client ). lo_http_client->request->set_method( if_http_request=>co_request_method_post ). lo_http_client->request->set_header_field( name = 'Authorization' value = |Bearer { lv_token }| ). lo_http_client->request->set_header_field( name = 'Content-Type' value = 'application/json' ). lo_http_client->request->set_cdata( lv_json_payload ). lo_http_client->send( ). lo_http_client->receive( ). lv_response = lo_http_client->response->get_cdata( ). WRITE: / 'Response:', lv_response. CATCH cx_root INTO DATA(lx_root). WRITE: / 'Error:', lx_root->get_text( ).ENDTRY.本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。