DBMS_CLOUD_AI 패키지
Select AI가 포함된 DBMS_CLOUD_AI
패키지는 SQL 문을 생성, 실행, 설명하기 위한 자연어 프롬프트의 번역을 용이하게 하고 구성합니다. 또한 검색 증강 생성 및 LLM과의 채팅을 비롯한 자연어 기반 상호 작용도 지원합니다.
필요 조건
- Oracle Cloud Infrastructure 문서의 NAT 게이트웨이 생성 지침에 따라 Autonomous Database 리소스가 상주하는 VCN(가상 클라우드 네트워크)에서 NAT 게이트웨이를 생성합니다.
- NAT 게이트웨이를 생성한 후 각 서브넷(VCN 내)에 경로 규칙 및 송신 보안 규칙을 추가합니다. 여기서 Autonomous Database 리소스는 게이트웨이를 사용하여 Azure AD 인스턴스에서 퍼블릭 키를 얻을 수 있습니다.
- 서브넷의 서브넷 세부 정보 페이지로 이동합니다.
- 서브넷 정보 탭에서 서브넷의 경로 테이블 이름을 눌러 경로 테이블 세부정보 페이지를 표시합니다.
- 기존 경로 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
- 대상: 0.0.0.0/0
- 대상 유형: NAT 게이트웨이
- 대상: VCN에서 방금 생성한 NAT 게이트웨이의 이름입니다.
해당 규칙이 없는 경우 경로 규칙 추가를 누르고 해당 특성을 가진 경로 규칙을 추가합니다.
- 서브넷에 대한 서브넷 세부정보 페이지로 돌아갑니다.
- 서브넷의 보안 목록 테이블에서 서브넷의 보안 목록 이름을 눌러 해당 보안 목록 세부정보 페이지를 표시합니다.
- 사이드 메뉴의 리소스에서 송신 규칙을 누릅니다.
- 기존 송신 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
- 대상 유형: CIDR
- 대상: 0.0.0.0/0
- IP 프로토콜: TCP
- 소스 포트 범위: 443
- 대상 포트 범위: 모두
해당 규칙이 없으면 Add Egress Rules를 누르고 이러한 특성을 가진 송신 규칙을 추가합니다.
환경의 HTTP 프록시 설정에서 데이터베이스가 클라우드 서비스 공급자에 액세스할 수 있도록 허용해야 합니다.
주:
HTTP 프록시를 포함한 네트워크 구성은 Exadata 인프라가 활성화 필요 상태가 될 때까지만 편집할 수 있습니다. 활성화된 후에는 해당 설정을 편집할 수 없습니다.이미 프로비전된 Exadata 인프라에 대해 HTTP 프록시를 설정하려면 My Oracle Support에서 SR(서비스 요청)이 필요합니다. 자세한 내용은 My Oracle Support에서 서비스 요청 생성을 참조하십시오.
DBMS_CLOUD_AI 서브 프로그램 요약
이 절에서는 Autonomous Database와 함께 제공되는 DBMS_CLOUD_AI
서브프로그램을 다룹니다.
하위 프로그램 | 설명 |
---|---|
이 절차에서는 자연어 프롬프트를 SQL 문으로 변환하기 위한 새 AI 프로파일을 만듭니다. |
|
이 절차에서는 현재 데이터베이스에서 AI 프로파일을 사용 안함으로 설정합니다. |
|
이 절차에서는 기존 AI 프로파일을 삭제합니다. |
|
이 절차를 수행하면 AI 프로파일이 현재 데이터베이스에서 사용될 수 있습니다. |
|
이 함수는 번역할 AI를 사용하여 SQL 문을 생성합니다. | |
이 절차에서는 AI 프로파일 속성을 설정합니다. |
|
이 절차에서는 현재 데이터베이스에 대한 AI 프로파일을 설정합니다. |
CREATE_PROFILE 프로시저
이 프로시저는 자연어 프롬프트를 SQL 문으로 변환하기 위한 새 AI 프로파일을 생성합니다.
구문
DBMS_CLOUD_AI.CREATE_PROFILE
profile_name IN VARCHAR2,
attributes IN CLOB DEFAULT NULL,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);
매개변수
매개변수 | 설명 |
---|---|
|
AI 프로파일의 이름입니다. 프로파일 이름은 Oracle SQL 식별자의 이름 지정 규칙을 따라야 합니다. 프로파일 이름의 최대 길이는 125자입니다. 필수 매개변수입니다. |
|
JSON 형식의 프로파일 속성입니다. 자세한 내용은 AI 프로파일 속성을 참조하십시오. 기본값은 NULL입니다. |
status |
프로파일의 상태입니다. 기본값은 enable입니다. |
|
AI 프로파일에 대한 설명입니다. 기본값은 NULL입니다. |
예
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'OpenAI,
attributes => JSON_OBJECT('provider' value 'openai',
'credential_name' value 'openai_cred'),
description => 'AI profile to use OpenAI for SQL translation'
);
END;
/
DROP_PROFILE 프로시저
이 절차에서는 기존 AI 프로파일을 삭제합니다. 프로파일이 없으면 프로시저에서 오류가 발생합니다.
구문
DBMS_CLOUD_AI.DROP_PROFILE
(
profile_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);
매개변수
매개변수 | 설명 |
---|---|
|
AI 프로파일의 이름 |
|
이 매개변수의 기본값은 |
예
BEGIN
DBMS_CLOUD_AI.DROP_PROFILE
(profile_name => 'OPENAI');
END;
/
사용법 참고
force
를 사용하여 프로파일을 삭제하고 AI 프로파일이 없는 경우 오류를 무시합니다.
ENABLE_PROFILE 프로시저
이 절차에서는 사용자가 지정하는 AI 프로파일을 사용으로 설정합니다. 이 절차에서는 AI 프로파일의 상태를 ENABLED
로 변경합니다.
구문
DBMS_CLOUD_AI.ENABLE_PROFILE
(
profile_name IN VARCHAR2
);
매개변수
매개변수 | 설명 |
---|---|
|
사용으로 설정할 AI 프로파일의 이름 이 매개변수는 필수입니다. |
AI 프로파일을 사용으로 설정하는 예
BEGIN
DBMS_CLOUD_AI.ENABLE_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
DISABLE_PROFILE 프로시저
이 절차에서는 현재 데이터베이스에서 AI 프로파일을 사용 안함으로 설정합니다. 이 절차에 따라 AI 프로파일의 상태가 DISABLED
로 변경됩니다.
구문
DBMS_CLOUD_AI.DISABLE_PROFILE
(
profile_name IN VARCHAR2
);
매개변수
매개변수 | 설명 |
---|---|
|
AI 프로파일의 이름입니다. 이 매개변수는 필수입니다. |
예
BEGIN
DBMS_CLOUD_AI.DISABLE_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
SET_ATTRIBUTE 프로시저
이 절차에서는 AI 프로파일 속성을 설정할 수 있습니다.
구문
DBMS_CLOUD_AI.SET_ATTRIBUTE
(
profile_name IN VARCHAR2,
attribute_name IN VARCHAR2,
attribute_value IN CLOB
);
매개변수
소유자만 AI 프로파일의 속성을 설정하거나 수정할 수 있습니다. 지원되는 속성 목록은 Profile Attributes을 참조하십시오.
매개변수 | 설명 |
---|---|
|
속성을 설정할 AI 프로파일의 이름입니다. 이 매개변수는 필수입니다. |
|
AI 프로파일 속성의 이름 이 매개변수는 필수입니다. |
|
프로파일 속성의 값입니다. 기본값은 NULL입니다. |
예
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE
(
profile_name => 'OPENAI',
attribute_name => 'credential_name',
attribute_value => 'OPENAI_CRED_NEW'
);
END;
/
SET_PROFILE 프로시저
이 절차에서는 현재 세션에 대한 AI 프로파일을 설정합니다.
데이터베이스 세션에 대해 AI 프로파일을 설정한 후 접두어가 SELECT AI
인 모든 SQL 문은 자연어 프롬프트로 간주됩니다. AI
접두어로 지정된 작업에 따라 AI를 사용하여 응답이 생성됩니다. AI
접두어를 사용하려면 Use AI Keyword to Enter Prompts를 참조하십시오. 선택적으로 JSON 형식으로 지정하여 프로파일 속성을 무효화하거나 속성을 수정할 수 있습니다. 속성 설정은 SET_ATTRIBUTE Procedure를 참조하십시오.
AI 프로파일의 소유자가 세션 사용자인 경우에만 현재 세션에 대해 AI 프로파일을 설정할 수 있습니다.
특정 데이터베이스 사용자 또는 데이터베이스에 있는 모든 사용자 세션의 모든 세션에 대해 AI 프로파일을 설정하려면 특정 사용자 또는 전체 데이터베이스에서 AFTER LOGON
이벤트에 대해 데이터베이스 이벤트 트리거를 사용하는 것이 좋습니다. 자세한 내용은 Oracle Database 19c Database PL/SQL Language Reference의 CREATE TRIGGER Statement 또는 Oracle Database 23ai Database PL/SQL Language Reference를 참조하십시오.
구문
DBMS_CLOUD_AI.SET_PROFILE
(
profile_name IN VARCHAR2,
);
매개변수
매개변수 | 설명 |
---|---|
|
현재 세션의 AI 프로파일에 대한 이름입니다. 이 매개변수는 필수입니다. |
예
BEGIN
DBMS_CLOUD_AI.SET_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
GENERATE 함수
showsql
, narrate
또는 chat
와 같은 지원되는 작업을 수행할 수 있습니다. 기본 작업은 showsql
입니다.
이 함수를 사용하면 프로파일 속성의 일부 또는 전부를 대체할 수도 있습니다.
구문
DBMS_CLOUD_AI.GENERATE
(
prompt IN CLOB,
profile_name IN VARCHAR2 DEFAULT NULL,
action IN VARCHAR2 DEFAULT NULL,
attributes IN CLOB DEFAULT NULL
) RETURN CLOB;
매개변수
매개변수 | 설명 |
---|---|
|
AI를 사용하여 번역할 자연어 프롬프트입니다. 프롬프트에 접두어로 이 매개변수는 필수입니다. |
|
AI 프로파일의 이름입니다. AI 프로파일이 기본값은 NULL입니다. 다음 조건이 적용됩니다.
주: Database Actions의 경우DBMS_CLOUD_AI.GENERATE 에서 profile_name 인수를 지정하거나 PL/SQL 스크립트로 DBMS_CLOUD_AI.SET_PROFILE 및 DBMS_CLOUD_AI.GENERATE 의 두 단계를 실행할 수 있습니다.
|
action |
AI를 사용하여 자연 프롬프트를 번역하는 작업입니다. 지원되는 작업에는 주: 이 함수는runsql 작업을 지원하지 않습니다. runsql 작업을 제공하면 다음 오류가 반환됩니다.
|
attributes |
JSON 형식으로 속성을 제공하여 특정 AI 프로파일 속성을 무효화합니다. 자세한 내용은 프로파일 속성을 참조하십시오. |
예
다음 예에서는 DBMS_CLOUD_AI.GENERATE
함수와 함께 사용할 수 있는 showsql
, narrate
및 chat
작업을 보여 줍니다.
showsql
작업의 예는 다음과 같습니다.
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'showsql')
FROM dual;
narrate
작업의 예는 다음과 같습니다.
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'narrate')
FROM dual;
chat
작업의 예는 다음과 같습니다.
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'what is oracle autonomous database',
profile_name => 'OPENAI',
action => 'chat')
FROM dual;
프로파일 속성
속성
속성 이름 | 설명 |
---|---|
|
Azure OpenAI 서비스 배포 모델의 이름입니다. 이름에는 영숫자, 밑줄 문자(_) 및 하이픈(-)만 포함될 수 있습니다. 이름은 밑줄(_) 또는 하이픈(-)으로 끝날 수 없습니다. |
|
Azure OpenAI 서비스 리소스의 이름입니다. 리소스 이름은 영숫자와 하이픈만 포함할 수 있으며 하이픈으로 시작하거나 끝날 수 없습니다. |
|
AI를 사용하여 자연어 프롬프트를 번역하는 데 사용되는 메타데이터에 열 설명을 포함합니다. 주: attribute_value 매개변수는 CLOB 데이터 유형이므로 단일 속성을 설정할 때 부울 값을 DBMS_CLOUD_AI.SET_ATTRIBUTE 프로시저에 적용할 수 없습니다.
|
|
프로파일에 대해 대화 기록이 사용으로 설정되었는지 여부를 나타내는 |
|
AI 제공자 API에 액세스할 인증서의 이름입니다. Bearer 토큰을 사용하는 인증서는 제공자 이름을 사용자 이름으로, Bearer 토큰을 비밀번호로 사용하여 생성할 수 있습니다. 필수 속성입니다. CREATE_CREDENTIAL Procedure를 참조하십시오. |
|
세대당 예측할 토큰 수를 나타냅니다. 기본값은 1024입니다. 자세한 내용은 토큰 및 토큰 생성자를 참조하십시오. |
|
응답을 생성하는 데 사용되는 AI 모델의 이름입니다. 지원되는 모델:
주: Azure OpenAI Service 포털에서 배포를 생성할 때 모델이 결정되므로 이 매개변수는 Azure에 사용되지 않습니다. |
|
SQL에 대한 자연어 번역에 적격인 소유자 및 객체 이름을 지정하는 JSON 객체의 배열입니다. 지정된 사용자의 모든 객체를 포함하려면 "name"을 생략하고 JSON 객체에 "owner" 키만 지정하십시오. 자연어를 SQL로 변환하기 위해 객체 이름, 객체 소유자, 객체 열 및 의견이 HTTPS 요청을 사용하여 AI 제공자에게 전송됩니다. 객체 목록에 중요한 객체 이름, 열 이름 또는 주석을 사용하여 객체를 지정하지 마십시오. AI 공급자는 번역 요청에 허용된 메타데이터의 크기를 제한할 수 있습니다. 응용 프로그램 유저가 자연어 프롬프트에 적합한 객체 리스트를 제한해 보십시오. 형식:
|
|
OCI 생성형 AI 서비스를 호출할 때 액세스가 허용된 컴파트먼트의 OCID를 지정합니다. 컴파트먼트 ID에는 영숫자, 하이픈 및 점이 포함될 수 있습니다. 기본값은 Autonomous Database의 컴파트먼트 ID입니다. |
|
이 속성은 Oracle 전용 AI 호스팅 클러스터의 끝점 OCID를 나타냅니다. 끝점 ID에는 영숫자, 하이픈 및 점이 포함될 수 있습니다. 끝점 OCID를 찾으려면 Getting an Endpoint's Details in Generative AI를 참조하십시오. Oracle 전용 AI 클러스터를 사용하려면 호스팅 클러스터의 끝점 OCID를 제공해야 합니다. 기본적으로 끝점 ID는 비어 있으며 모델은 공유 기반구조에서 요청 시 제공됩니다. |
|
이 속성은 제공된 모델의 런타임 유형을 나타냅니다. 이 속성은 허용되는 모든 값은 OCI Generative AI runtimeType에서 확인할 수 있습니다. LlmInferenceRequest Reference를 참조하십시오. 지원되는 값은 다음과 같습니다.
|
|
AI 프로파일에 대한 AI 제공자입니다. 지원되는 제공자:
필수 속성입니다. |
|
이 속성은 사용할 생성형 AI 클러스터의 위치를 나타냅니다. 영역에는 영숫자와 하이픈이 포함될 수 있습니다.
주: Oracle Generative AI 클러스터는 시카고, 프랑크푸르트 및 런던 지역에서 사용할 수 있습니다. 생성형 AI의 사전 학습된 기본 모델을 참고하세요.us-chicago-1 입니다.
|
|
생성된 텍스트는 가장 이른 중지 시퀀스의 시작 부분에 종료됩니다. 순서가 텍스트에 통합됩니다. 속성 값은 JSON 형식의 적합한 문자열 값 배열이어야 합니다. |
|
텍스트 생성 모델의 샘플링은 무작위성을 통합하므로 "생성"을 누를 때마다 동일한 프롬프트가 다른 출력을 산출할 수 있습니다. 온도는 무작위 정도를 조정하는 데 사용되는 음수가 아닌 부동 숫자입니다. 낮은 온도는 덜 무작위 세대를 의미합니다. 자세한 내용은 온도를 참조하십시오. 이 매개변수는 지원되는 모든 서비스 제공자에 적용할 수 있습니다. |
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'COHERE',
attributes =>
'{"provider": "cohere",
"credential_name": "COHERE_CRED",
"object_list": [{"owner": "ADB_USER"}],
"max_tokens":512,
"stop_tokens": [";"],
"model": "command-nightly",
"temperature": 0.5,
"comments": true
}');
END;
/
다음 예에서는 OCI Generative AI를 사용하는 사용자정의 프로파일 속성을 보여줍니다.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'GENAI',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "countries"},
{"owner": "SH", "name": "supplementary_demographics"},
{"owner": "SH", "name": "profits"},
{"owner": "SH", "name": "promotions"},
{"owner": "SH", "name": "products"}],
"oci_compartment_id": "ocid1.compartment.oc1...",
"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
"region": "us-chicago-1",
"model": "cohere.command-light",
"oci_runtimetype": "COHERE"
}');
END;
/