因此,我尝试使用OpenAI API集成到基于PL/SQL(Oracle 11 gR 2)的应用程序中。第一步,我创建并配置了一个ACL和一个Wallet来访问API,然后我编写了一个脚本来测试连接是否正常。但它总是返回ORA-29273:HTTP请求失败。
脚本的代码:
DECLARE
l_url VARCHAR2(2000) := 'https://api.openai.com/v1/engines/text-davinci-003/completions';
l_request UTL_HTTP.REQ;
l_response UTL_HTTP.RESP;
l_buffer VARCHAR2(32767);
l_translation VARCHAR2(4000);
BEGIN
UTL_HTTP.SET_TRANSFER_TIMEOUT(300);
utl_http.set_wallet(path => 'file:PATH_OF_WALLET' ,password => 'WALLET_PW');
l_request := UTL_HTTP.BEGIN_REQUEST(url => l_url, method => 'POST');
UTL_HTTP.SET_HEADER(l_request, 'Content-Type', 'application/json');
UTL_HTTP.SET_HEADER(l_request, 'Authorization', 'Bearer MY_API_KEY');
l_buffer := '{"prompt": "Translate the phrase: Hello world!", "max_tokens": 50}';
UTL_HTTP.WRITE_TEXT(l_request, l_buffer);
l_response := UTL_HTTP.GET_RESPONSE(l_request);
BEGIN
LOOP
UTL_HTTP.READ_LINE(l_response, l_buffer, TRUE);
DBMS_OUTPUT.PUT_LINE(l_buffer);
l_translation := l_buffer;
END LOOP;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
NULL;
END;
UTL_HTTP.END_RESPONSE(l_response);
DBMS_OUTPUT.PUT_LINE('Translation: ' || l_translation);
EXCEPTION
WHEN UTL_HTTP.TOO_MANY_REQUESTS THEN
DBMS_OUTPUT.PUT_LINE('HTTP request limit exceeded.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
字符串
错误发生在UTL_HTTP.开始_REQUEST行,我已经尝试了不同的参数(https_host => 'api.openai.com'或http_version => 'HTTP/1.1'或两者),结果相同。
我需要使用UTL_HTTP包,因为我的DB没有安装APEX,所以APEX_WEB_SERVICE包不可用。
有同样问题的人试图在旧的Oracle DB中通过HTTPS(或特定的openAI API)使用API?任何提示或建议?
谢谢你,谢谢
1条答案
按热度按时间k4aesqcs1#
Oracle 11.1只支持SSLv 3连接协议;它不支持TLS协议。如果您尝试连接到禁用SSLv 3协议的网站(许多网站由于SSLv 3的安全问题而禁用了SSLv 3协议),则会收到错误
ORA-29273
。要使用连接,请执行以下操作: