先注册一下deepseek,然后在https://platform.deepseek.com/申请一个key。注意保密。泄露了会被封。记得把https的证书导进系统。
调用过程比较简单,和项目中常用的调用外部接口api完全一样。最后因为账户没钱返回402,技术上算是调用成功。deepseek目前不让充钱。
通过ABAP,发挥想象力,可以在GUI或者Fiori上以各种花里胡哨的方式调用deepseek。
我们这个行业离不了搜索引擎,AI是个更高级的搜索引擎,能读懂人话,能快速命中准确答案,省脑子省精力,肯定是个好工具。但为了AI而AI意思不大,哪些业务、技术等问题可以抛给AI,AI解决的成功率有多少,AI会不会帮倒忙......可能要在实践中慢慢探索。
代码如下:
DATA: len TYPE i, url TYPE string, http_client TYPE REF TO if_http_client, request TYPE string, result TYPE string, authorization TYPE string. TYPES:BEGIN OF ty_body, role TYPE string, content TYPE string, END OF ty_body. DATA:gw_body TYPE ty_body, gt_body TYPE TABLE OF ty_body. TYPES: BEGIN OF ty_cdata, model TYPE string, messages TYPE STANDARD TABLE OF ty_body WITH EMPTY KEY, stream TYPE string, END OF ty_cdata. DATA:gt_cdata TYPE TABLE OF ty_cdata, gs_cdata TYPE ty_cdata. DATA: g_code TYPE i, g_reason TYPE string. url = 'https://api.deepseek.com/chat/completions'.authorization = |Bearer 你自己申请的key|."创建http客户端对象CLEAR http_client.CALL METHOD cl_http_client=>create_by_url EXPORTING url = url IMPORTING client = http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4.
"传输请求内容格式以及编码http_client->request->set_content_type( content_type = 'application/json' )."不要改
"方法=POSThttp_client->request->set_method( if_http_request=>co_request_method_post ).
"Headerhttp_client->request->set_header_field( EXPORTING name = 'Authorization' value = authorization ).
gt_body = VALUE #( ( role = 'system' content = 'You are a helpful assistant.' ) "不要改 ( role = 'user' content = 'hello!' ) ). "user不要动,content是你想说的话
gs_cdata = VALUE #( messages = gt_body model = 'deepseek-chat' "deepseek-chat是聊天,deepseek-reasoner是推理 stream = 'false' ). "true也可以
request = /ui2/cl_json=>serialize( EXPORTING data = gs_cdata compress = abap_false numc_as_string = abap_false pretty_name = 'L' ) .
REPLACE ALL OCCURRENCES OF '"false"' IN request WITH 'false'.
"传入请求http_client->request->set_cdata( EXPORTING data = request ).
"发送CALL METHOD http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 OTHERS = 5."接收CALL METHOD http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3.http_client->response->get_status( IMPORTING code = g_code reason = g_reason )."提取返回字符串result = http_client->response->get_cdata( ).IF result IS NOT INITIAL.ENDIF.
执行结果如下:
{"error":{"message":"Insufficient
Balance","type":"unknown_error","param":null,"code":"invalid_request_error"}}。
等让充钱了再研究。