SAS环境中PROC HTTP封装宏调用ChatGPT 3.5出现404错误求助
SAS宏中调用ChatGPT 3.5触发HTTP 404错误排查
问题概述
在SAS环境中,调用ChatGPT 3.5的代码在宏外可正常运行,但封装进宏后触发HTTP 404(Not Found)错误,执行被%ABORT语句终止,怀疑问题出在PROC HTTP的授权头语句。
宏内报错日志
SYMBOLGEN: Macro variable SYS_PROCHTTP_STATUS_CODE resolves to 404 MLOGIC(CHATGPT): %IF condition (&SYS_PROCHTTP_STATUS_CODE. NE 200) is TRUE MLOGIC(CHATGPT): %PUT An error occurred. HTTP &SYS_PROCHTTP_STATUS_CODE.: &SYS_PROCHTTP_STATUS_PHRASE SYMBOLGEN: Macro variable SYS_PROCHTTP_STATUS_CODE resolves to 404 SYMBOLGEN: Macro variable SYS_PROCHTTP_STATUS_PHRASE resolves to Not Found An error occurred. HTTP 404: Not Found MLOGIC(CHATGPT): %ABORT ERROR: Execution terminated by an %ABORT statement.
宏外可运行代码片段
%let api_key= ; %let question = %str(%"sas code to transpose data%"); %let question = %str(%"debug 'proc print data=mydf; vars myvar; run;' %"); /* Body of the POST request */ filename in temp; data _null_; file in; put; put "{"; put '"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": '"&question }]"; put "}"; run;
排查方向
- 检查宏内PROC HTTP的授权头配置:确认
api_key宏变量在宏内是否正确解析,是否存在宏变量作用域导致的引用失效问题,比如是否需要用%global声明api_key - 验证请求体一致性:对比宏内和宏外生成的请求体内容,检查
question变量的转义字符、引号是否正确,避免宏替换导致JSON格式错误 - 确认PROC HTTP的URL:检查宏内的请求URL是否和宏外一致,是否因宏替换操作导致URL被意外修改
内容的提问来源于stack exchange,提问作者smackersz88
相关产品推荐
相关产品推荐

