기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

예 3: 'OpenAI 채팅 완료 API(GPT-3.5, GPT-4) - 행' 구성

이 예에서는 'OpenAI 채팅 완료 API(GPT-3.5, GPT-4) - 행' 구성과 함께 OpenAI 분석 커넥터를 사용하는 방법을 설명합니다. 기능을 데이터 모델 및 차트 표현식에 통합하는 방법을 보여 주는 기본 연습을 안내합니다.

이 커넥터 구성의 기능은 'OpenAI 완료 API(GPT-3) - 행' 구성의 기능과 매우 유사합니다. 그러나 이 두 가지 구성에서는 서로 다른 모델을 사용하므로 서로 다른 응답이 발생합니다. 또한 두 구성 간의 매개 변수 이름이 다르기 때문에 해당 구성과 일치하는 자습서 예를 참조하십시오. 완료 구성은 예 1: 'OpenAI 완료 API(GPT-3) - 행' 구성을 참조하십시오.

Azure OpenAI 커넥터를 사용하여 이 예를 완료할 수도 있습니다. 해당 커넥터를 사용할 때 OpenAI 플랫폼이 아닌 Microsoft Azure 플랫폼을 통해 모델과 상호 작용합니다.

시작하기 전에

이 예를 완료하려면 먼저 다음 단계를 완료해야 합니다.

  • OpenAI 플랫폼 계정 만들기

  • OpenAI API 키 가져오기

  • 다음에서 분석 연결 기능 활성화 Qlik Cloud

  • 적용 가능한 커넥터 구성으로 연결 만들기

로드 스크립트에서 OpenAI 커넥터 사용

OpenAI 플랫폼과 통신하기 위해 로드 스크립트를 추가할 새 Qlik Sense 앱을 만듭니다. 이 스크립트로 로드하는 테이블은 앱의 데이터 모델에서 액세스할 수 있습니다.

정보 메모예 2의 스크립트 로드 섹션과 동일한 앱을 사용하여 이 섹션을 완료하는 경우 아래 스크립트를 로드하기 전에 예 2의 스크립트를 주석 처리하거나 삭제해야 합니다. 그렇게 하지 않으면 데이터 모델에 문제가 생기고 데이터를 로드할 때 오류가 발생할 수도 있습니다.

아래 단계를 따르십시오. 자세한 내용은 OpenAI 연결에서 데이터 선택 및 로드를 참조하십시오.

OpenAI로 보낼 데이터 테이블 만들기

첫 번째 단계는 OpenAI로 보내는 요청이 포함된 테이블을 만드는 것입니다. 요청의 데이터 행을 "완료"라고 합니다. 각 항목의 텍스트는 테이블의 단일 필드(열)에 행으로 포함되어야 합니다. 이 열의 각 행은 OpenAI API에서 완료할 텍스트를 나타냅니다.

연결 필드에 대한 두 번째 추가 필드가 있을 수 있지만 이는 구성에 지정된 필드 이름과 일치해야 합니다. 이는 OpenAI로 전송되지 않는 특수 필드이지만 Qlik 데이터 모델을 생성하기 위해 응답에 첨부됩니다.

앱에서 데이터 로드 편집기를 열고 다음 코드를 새 스크립트 섹션에 붙여 넣습니다.

SourceTable:
NoConcatenate
LOAD 
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];					

 

이 테이블에는 OpenAI에 요청하는 단일 질문이 포함된 Text라는 필드가 있습니다. 기존 질문 셀 아래에 새로운 개별 셀로 추가 질문을 추가할 수 있습니다. RowId 필드는 연결 필드이며 다음 단계에서 응답을 앱의 데이터 모델에 연결하는 데 사용됩니다.

OpenAI LOAD 문 만들기

다음 단계는 OpenAI와 통신할 또 다른 LOAD 문을 만드는 것입니다. 이 문으로 로드하는 테이블은 요청 데이터를 보내는 데 사용하는 테이블 및 필드의 이름을 가리킵니다. 즉, 요청 항목에 대한 OpenAI의 응답을 제공하기 위해 두 번째 테이블이 스크립트에 의해 로드되고 있습니다.

스크립트의 이 부분을 생성하려면 사용 중인 연결에 대한 데이터 선택 마법사를 사용할 수 있습니다. 이렇게 하면 제공한 속성의 이름을 포함하는 템플릿 스크립트가 생성됩니다. 또는 마법사를 사용하지 않고 이 테이블을 스크립트 편집기에 수동으로 추가할 수 있습니다.

데이터 로드 편집기의 데이터 소스 패널에서 사용 중인 연결을 찾고 데이터 선택을 클릭합니다. 그러면 데이터 선택 마법사가 열립니다.

데이터 로드 편집기에서 분석 연결을 위한 데이터 선택 버튼

'데이터 선택' 아이콘이 강조 표시된 데이터 로드 편집기의 '데이터 추가' 탭

데이터 선택 마법사를 사용할 때 다음 두 가지 속성을 제공해야 합니다.

  • Resident 테이블의 이름. 이는 OpenAI로 전송되는 질문이 있는 테이블입니다. 이 경우 SourceTable입니다.

  • 데이터 필드의 이름. 이는 OpenAI로 전송되는 질문을 포함하는 필드입니다. 이 경우 Text입니다.

테이블에서 openai라는 테이블의 확인란을 클릭합니다.

데이터 로드 편집기의 데이터 선택 마법사

'데이터 선택' 아이콘이 강조 표시된 데이터 로드 편집기의 '데이터 추가' 탭

스크립트 삽입을 클릭하면 로드 스크립트에 새 테이블이 추가됩니다.

이제 OpenAI LOAD 문이 추가되었으므로 로드 스크립트는 다음과 같아야 합니다.

SourceTable: NoConcatenate LOAD RowNo() as RowId, Text Inline [Text translate from English to French: What is the time you go to work?]; [openai]: LOAD [id], [object], [created], [model], [prompt_tokens], [completion_tokens], [total_tokens], [choices.message.role], [choices.message.content], [choices.index], [choices.finish_reason], [RowId] EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows"}}', SourceTable);

 

정보 메모이 정확한 코드가 앱에서 올바르게 작동하려면 OpenAI 연결도 위의 로드 스크립트에 지정된 connectionname과 동일한 이름 값으로 구성되어야 합니다. 이 자습서의 목적에 사용되는 값은 연결 만들기를 참조하십시오.

이제 로드 스크립트를 실행할 준비가 되었습니다.

앱에 데이터 로드

스크립트가 완료되면 데이터 로드를 클릭합니다. 이는 OpenAI와의 통신을 수행하고 테이블을 앱의 데이터 모델에 삽입합니다.

정보 메모스크립트를 로드할 때 오류가 발생하면 연결 구성의 선택적인 보조 연결 필드와 로드 스크립트 간에 불일치가 있을 수 있습니다. 연결 구성에서 연결 필드를 정의한 경우 요청 스크립트에도 포함되어 있는지 확인합니다.

데이터 모델 뷰어를 열고 두 테이블이 예상대로 함께 연결되어 있는지 확인합니다. 미리 보기 창에는 질문에 대한 OpenAI의 응답이 두 번째 테이블에 포함되어 있습니다.

OpenAI 연결에서 만들어진 데이터 모델

두 개의 테이블이 포함된 결과 데이터 모델을 보여 주는 데이터 모델 뷰어.

이제 앱에 로드된 데이터를 사용하여 분석 콘텐츠를 만들 수 있습니다. 이 데이터를 사용하여 만든 차트에서는 OpenAI 연결을 참조할 필요가 없습니다. OpenAI 연결을 로드 스크립트에서 사용하는 대신 차트 표현식에서 직접 사용하는 방법을 알아보려면 차트 표현식에서 OpenAI 커넥터 사용을 참조하십시오.

차트 표현식에서 OpenAI 커넥터 사용

로드 스크립트를 사용하여 앱의 데이터 모델에 OpenAI 질문 및 답변을 추가하는 것 외에도 앱의 차트에서 이러한 작업을 직접 수행할 수도 있습니다. 이는 OpenAI와 통신하기 위해 로드 스크립트의 테이블을 사용하는 것의 대안이 될 수 있습니다.

단일 필드에 대한 데이터는 사용자와 OpenAI 간에 주고 받습니다. 대부분의 경우 로드 스크립트 연결에 사용되는 코드는 몇 가지 눈에 띄는 차이점을 제외하고 차트에서 사용하기 위해 용도를 변경할 수 있습니다.

자세한 내용은 시각화 표현식에서 OpenAI 연결 사용을 참조하십시오.

데이터 요청 볼륨에 대한 고려 사항

하나 또는 소수의 데이터 행에 대한 차트 표현식에서만 OpenAI 연결을 사용하는 것이 좋습니다. 차트 표현식을 사용하여 대량의 데이터를 OpenAI에 보내지 않는 것이 좋습니다.

각 요청과 함께 보내는 행 수를 아는 것이 중요합니다. 차트 표현식에서 연결을 구성할 때 오류가 발생하면 의도치 않게 큰 요청이 발생할 수 있습니다(예: 차트에서 데이터 모델을 부적절하게 사용하여 같은질문이 있는 동일한 행). 타사 플랫폼과 상호 작용하기 전에 차트 표현식 계산에 사용된 필드와 데이터 모델에서의 해당 위치가 타사와의 금융 계약 및 청구 계약에 어떤 영향을 미치는지 확인합니다. 외부 플랫폼을 많이 사용하면 비용이 더 많이 발생할 수 있습니다.

요청 크기를 조정하고 제한하려면 다음 지침을 따르십시오.

  • 텍스트 및 이미지 차트 표현식에서만 연결을 사용합니다. 테이블 개체에서 OpenAI 연결을 사용하는 것은 특히 하나 이상의 차원이 이미 추가된 테이블에 표현식을 추가하는 경우에는 사용하지 않는 것이 좋습니다.

  • 차트 표현식이 앱의 데이터 모델에 연결된 경우 표현식에 if 문을 사용하면 앱에서 단일 항목을 선택할 때만 차트를 계산할 수 있습니다. 이렇게 하면 차트가 OpenAI에 보내는 요청의 행 수가 크게 줄어듭니다.

  • OpenAI 연결을 사용하여 대규모 요청을 보내는 경우 데이터가 데이터 모델에 사전 로드되도록 차트 표현식 대신 로드 스크립트에서 연결을 사용합니다.

연습: 기본 차트 표현식 만들기

  1. Qlik Sense 앱을 만들고 고급 편집 모드에서 새 시트를 엽니다.

    정보 메모차트 표현식에 사용하는 분석 연결은 앱을 만든 공간에 이미 만들어져 있어야 합니다. 앱 내의 데이터 로드 편집기 또는 분석 활동 센터의 만들기 페이지에서 이 활동을 수행할 수 있습니다. 자세한 내용은 OpenAI 연결 만들기을 참조하십시오.
  2. 텍스트 및 이미지 차트를 시트로 끕니다.

  3. 속성 패널의 데이터 > 측정값에서 측정값을 추가하고 표현식을 클릭하여 식 편집기를 엽니다.

  4. 다음 표현식을 식 편집기에 붙여넣습니다.

    endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
    정보 메모이 예에서는 단일 데이터 행만 전송하고 데이터 모델에 대한 연결이 없기 때문에 if 문을 사용하지 않아도 됩니다. 다른 시나리오에서는 if 문을 사용하여 앱에서 단일 필드 값이 선택된 경우에만 차트가 계산되도록 합니다. 예를 보려면 빠른 예를 참조하십시오.
    정보 메모이 정확한 코드가 앱에서 올바르게 작동하려면 표현식에 지정된 connectionname와 동일한 이름 값으로 OpenAI 연결도 구성해야 합니다. 이 자습서의 목적에 사용되는 값은 연결 만들기를 참조하십시오.
  5. 적용을 클릭합니다.

Qlik SenseOpenAI 응답이 포함된 텍스트 및 이미지 차트

OpenAI의 응답이 포함된 Qlik Sense 시트 개체입니다.

연습: 변수를 사용하여 텍스트 입력 상자 만들기

또는 질문 문자열을 앱에서 만든 변수의 이름으로 바꿔 앱 소비자가 표현식과 상호 작용하지 않고 자신의 질문을 입력할 수 있는 입력 상자를 만들 수 있습니다.

이 간단한 인터페이스를 사용하여 실시간으로 생성된 컨텍스트 정보로 앱 데이터를 보강할 수 있습니다.

  1. 앱을 만들고 일부 데이터 및 시각화를 새 시트에 추가합니다.

  2. 변수을 클릭하여 변수를 만듭니다. 이 연습에서는 이름 vUserQuestion을 지정합니다. 나머지 매개 변수는 비워 둡니다.

  3. 자산 패널에서 변수 입력 차트를 시트로 끕니다. 확장Qlik Dashboard 번들 아래에 있습니다.

  4. 변수 입력 차트의 속성 패널에서 모양 > 변수를 확장합니다.

  5. 이름에서 vUserQuestion을 선택합니다.

  6. 다음으로 표시에서 입력 상자를 선택합니다.

  7. 자산 패널에서 텍스트 및 이미지 차트를 시트로 끕니다.

  8. 속성 패널의 데이터 > 측정값에서 측정값을 추가하고 표현식을 클릭하여 식 편집기를 엽니다.

  9. 다음 표현식을 식 편집기에 붙여넣습니다.

    if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}',vUserQuestion))
    정보 메모이 정확한 코드가 앱에서 올바르게 작동하려면 표현식에 지정된 connectionname와 동일한 이름 값으로 OpenAI 연결도 구성해야 합니다. 이 자습서의 목적에 사용되는 값은 연결 만들기를 참조하십시오.
  10. 적용을 클릭합니다.

  11. 이러한 입력 및 응답 상자의 크기를 필요에 맞게 조정합니다.

이제 편집 모드를 종료하고 입력 상자에 질문을 입력할 수 있습니다. Enter 키를 누르거나 시트의 아무 곳이나 클릭하면 응답 상자가 OpenAI의 응답을 채웁니다.

OpenAI에 질문하기 위한 일반 데이터 및 입력 상자가 있는 간단한 시트

OpenAI의 응답이 포함된 Qlik Sense 시트 개체입니다.

이 연습에서 OpenAI 연결은 앱의 데이터 모델과 전혀 통신하지 않지만 앱에 로드된 데이터와 완전히 통합되고 앱에서 선택한 항목에 응답하는 훨씬 더 정교한 앱을 만들 수 있습니다.

변수 작업에 대한 자세한 내용은 변수 만들기변수 입력 컨트롤를 참조하십시오.

로드 스크립트와 차트 표현식 코드의 차이점

이 차트 표현식에서는 이전 로드 스크립트 학습에서 입력한 코드의 용도를 변경했습니다. 다음 목록은 로드 스크립트 버전과 차트 표현식 간의 가장 중요한 차이점을 강조 표시합니다.

  • ScriptEvalScriptAggrStr로 변경했습니다. 이는 데이터의 단일 행을 전송하고 있고 단일 행이 반환될 것으로 기대한다는 것을 설명합니다. 이 경우의 변수 또는 상수와 같은 사용자 지정 데이터로 작업할 때 이를 필요로 합니다. "Str"은 텍스트 값을 보내고 받고 있음을 나타냅니다.

  • 값이 choices.message.content인 새 속성 column을 추가했습니다. endpoint 개체 내부에 중첩됩니다. 커넥터에서 반환할 필드를 지정하려면 구성 문자열에 이렇게 추가해야 합니다. 차트 표현식에서는 하나의 필드만 사용되며 어느 필드를 지정해야 합니다.

자세한 내용은 서버 측 확장 구문을 참조하십시오.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!