지금처럼 gpts에서 질문하고 답변하는 것을 여러단계로 거쳐서 GPTrk 필요한 정보를 마저 얻게 하는 방법이 궁금하다. gpts를 만든다고 할 경우 어떻게 인스트럭션을 넣어야 지금처럼 필요한 정보를 요청하게 할 수 있나? 또 사용자가 답변을 할때 보기를 선택할수 있게 질문지를 만드는 방법에 대해서도 알려줘
 
 
ChatGPT의 말:
 

GPT를 만들어서 여러 단계를 거쳐 필요한 정보를 단계적으로 수집하고, 사용자가 쉽게 답변할 수 있도록 "보기"를 제공하는 방법에 대해 설명드리겠습니다. 이를 위해 사용자와의 상호작용을 구조화하고, 명확한 지침을 설정하는 것이 중요합니다.

1. 여러 단계를 거쳐 정보를 수집하는 방식

이런 단계적 상호작용을 만들기 위해서는 GPT에게 명확한 시퀀스를 정의하는 인스트럭션을 제공해야 합니다. 각 단계마다 GPT가 어떤 정보를 요청해야 하는지 정의할 수 있으며, 이전 단계의 정보가 없을 경우엔 다음 단계로 넘어가지 않도록 설정할 수 있습니다.

인스트럭션 작성 방법:

  1. 첫 번째 단계: 기본적인 정보를 수집하는 단계
    • 사용자에게 필요한 URL 또는 가장 기본적인 정보를 요청
    • 이 단계에서 충분한 정보가 수집되지 않으면, 이후 단계로 넘어가지 않도록 설정
  2. 두 번째 단계: 추가 정보를 요청하는 단계
    • 첫 번째 단계에서 받은 정보를 바탕으로 세부 정보를 요청
    • 예시: Webhook URL을 받은 후에는 HTTP 메서드, 파라미터 정보 등 구체적인 요청을 요구
  3. 세 번째 단계: 응답 형식 또는 옵션을 제시하는 단계
    • 사용자에게 응답 형식 또는 보기 제공을 통해 선택지를 좁히거나 가이드라인을 제시

예시:

plaintext
코드 복사
1단계: 사용자가 Webhook URL을 입력하지 않으면, 그 정보를 요청한다. - 질문: "Webhook URL을 입력해주세요." 2단계: Webhook URL을 받으면, Webhook의 기능에 대해 묻는다. - 질문: "Webhook이 어떤 기능을 수행하나요? 예를 들어, 데이터를 받거나 특정 작업을 트리거하나요?" 3단계: 추가적인 정보가 필요하면, HTTP 메서드와 파라미터 정보를 요청한다. - 질문: "이 Webhook이 사용하는 HTTP 메서드는 무엇인가요? GET, POST 등 중 하나를 선택해주세요." 정보를 단계적으로 요구함으로써, 모든 필수 정보가 수집될 때까지 대화가 진행됩니다.

2. 사용자가 보기 선택이 가능하게 만드는 방법

사용자가 직접 답변하기 어려운 경우, **보기(선택지)**를 제공하여 사용자가 쉽게 선택할 수 있도록 할 수 있습니다. 이를 위해서는 다음과 같은 방법으로 인스트럭션을 작성할 수 있습니다.

인스트럭션 예시:

  1. 옵션 제공: 사용자가 선택할 수 있는 다양한 보기 제공
    • 예: HTTP 메서드를 선택하게 하거나, 데이터 형식을 선택하도록 함.
  2. 보기 질문 방식:
    • 질문 예시: "Webhook에서 사용하는 HTTP 메서드는 무엇인가요?"
      • 보기:
        1. GET
        2. POST
        3. PUT
        4. DELETE
  3. 보기 인식 및 처리: 선택된 값에 따라 다음 단계로 자연스럽게 넘어가도록 인스트럭션 작성.

보기 제공 인스트럭션 예시:

yaml
코드 복사
openapi: 3.1.0 info: title: Step-by-Step API Documentation Assistant version: 1.0.0 description: This GPT helps you create an OpenAPI specification by gathering necessary information step-by-step. instructions: - First, request the Webhook URL from the user. If not provided, keep requesting it. - Once the Webhook URL is obtained, ask about its function: what does it do? Provide examples. - Next, request the HTTP method (GET, POST, PUT, DELETE). Provide options as multiple-choice answers. - After gathering the HTTP method, ask for the structure of the request (parameters, body, etc.). Provide examples or choices if needed. - Continue collecting information until all necessary details for generating the API documentation are gathered. choices: - HTTP Method: 1. GET 2. POST 3. PUT 4. DELETE - Response format: 1. JSON 2. XML 3. Plain Text

3. 구체적인 질문과 보기 제공 흐름 예시

yaml
코드 복사
openapi: 3.1.0 info: title: Custom Webhook API Creator version: 1.0.0 instructions: - Ask for the Webhook URL first, as it is essential. - Once the Webhook URL is obtained, request the function of the Webhook. Example question: "Webhook이 데이터를 수신하나요, 아니면 작업을 트리거하나요?" - Next, request the HTTP method, providing choices (GET, POST, PUT, DELETE). Example question: "Webhook에서 사용되는 HTTP 메서드를 선택해주세요." - Based on the HTTP method, ask for the necessary parameters and request/response bodies. choices: - HTTP Method: 1. GET 2. POST 3. PUT 4. DELETE - Expected Response Status Codes: 1. 200 OK 2. 400 Bad Request 3. 404 Not Found 4. 500 Internal Server Error - Data Format: 1. JSON 2. XML 3. Plain Text

4. 단계별 진행 요약

  • 1단계: 필수 정보가 수집될 때까지 질문 반복 (예: Webhook URL 등)
  • 2단계: 수집된 기본 정보를 바탕으로 세부 정보 수집 (기능, 파라미터, 응답 형식)
  • 3단계: 보기를 제공해 선택지를 좁혀가며 사용자에게 선택의 편리함 제공 (예: HTTP 메서드, 응답 형식 등)
  • 4단계: 마지막으로 모든 정보를 바탕으로 OpenAPI 스펙 생성

이 방법을 사용하면, 필요한 정보를 빠뜨리지 않고 단계적으로 수집할 수 있으며, 사용자가 답변하기 어려운 경우에도 보기(선택지)를 제공해 편리하게 답변을 받을 수 있습니다.

 
 
 

Gradio를 Jupyter 노트북 내에서 실행할 때, 인터페이스가 iframe으로 표시되므로 해당 iframe의 높이를 조절해야합니다.

Gradio의 Interface 객체는 launch() 메서드에 live 및 inline 두 가지 중요한 파라미터를 가지고 있습니다. inline 파라미터를 True로 설정하면 Jupyter 노트북 내에서 Gradio UI를 직접 볼 수 있습니다.

그렇다면, 출력의 높이를 늘리려면 어떻게 해야 할까요?

현재 Gradio의 기본 API에서는 inline 모드의 높이를 직접 조절하는 파라미터를 제공하지 않습니다. 하지만 Jupyter의 CSS를 사용하여 iframe의 높이를 조절하는 것이 한 가지 방법이 될 수 있습니다.

다음은 Jupyter 노트북에서 Gradio 인터페이스의 iframe 높이를 조절하는 방법의 예입니다:

from IPython.core.display import display, HTML
iframe 높이를 조절하는 CSS를 설정합니다.
display(HTML("""

<style>
    iframe {
        height: 500px !important; 
    }
</style>
"""))

import gradio as gr

def greet(name):
return f"Hello {name}!"

iface = gr.Interface(fn=greet, inputs="text", outputs="text")
iface.launch(inline=True)

위의 코드에서는 CSS를 사용하여 iframe의 높이를 500px로 설정하였습니다. 이 값을 조절하면 원하는 높이로 설정할 수 있습니다.

그러나 이 방법은 Jupyter 노트북에 있는 모든 iframe에 적용되므로, 다른 iframe 요소에 영향을 미칠 수 있습니다. 필요에 따라 더 구체적인 CSS 선택자를 사용하여 Gradio에만 적용되도록 조정할 수 있습니다.

nest_asyncio 라이브러리는 기본적으로 비동기 이벤트 루프가 중첩될 때 발생하는 문제를 해결하기 위해 설계되었습니다. 특히, Jupyter와 같은 환경에서는 이벤트 루프가 이미 실행 중이기 때문에 추가적인 비동기 작업을 수행하려면 문제가 발생할 수 있습니다.

nest_asyncio에 대해 설명할 5가지 주제는 다음과 같습니다:

  1. 동기 및 비동기의 기본 개념:

    • 동기 코드는 명령이 순차적으로 실행되며, 한 작업이 완료될 때까지 다음 작업은 대기합니다.
    • 비동기 코드는 특정 작업이 완료되기를 기다리지 않고 다른 작업을 실행할 수 있습니다. Python에서 asyncawait 키워드를 사용하여 비동기 코드를 작성합니다.
  2. 이벤트 루프:

    • 이벤트 루프는 비동기 작업을 관리하고 실행하는 핵심 구성 요소입니다.
    • 일반적으로 한 번에 하나의 이벤트 루프만 실행될 수 있습니다. 따라서 중첩된 이벤트 루프를 실행하려고 하면 오류가 발생합니다.
  3. Jupyter와 비동기:

    • Jupyter는 자체 내부 이벤트 루프를 실행하므로, Jupyter 셀 내에서 추가적인 비동기 코드를 실행하려고 하면 중첩된 이벤트 루프 문제가 발생합니다.
    • 이는 Jupyter에서 asyncio를 사용하여 비동기 코드를 실행하려고 할 때 특히 문제가 됩니다.
  4. nest_asyncio의 역할:

    • nest_asyncio는 기본 이벤트 루프를 패치하여 중첩된 이벤트 루프를 허용합니다.
    • 이 라이브러리를 사용하면, Jupyter와 같은 환경에서도 비동기 코드를 문제없이 실행할 수 있습니다.
  5. nest_asyncio의 사용법:

    • 라이브러리를 설치한 후, Jupyter 노트북에서 간단하게 아래와 같이 사용하여 패치할 수 있습니다.

      pythonCopy code

      import nest_asyncio nest_asyncio.apply()

    • 이 명령을 실행한 후에는 Jupyter 내에서 비동기 코드를 자유롭게 실행할 수 있습니다.

요약하면, nest_asyncio는 Jupyter와 같은 환경에서 중첩된 이벤트 루프 문제를 해결하여 비동기 코드의 실행을 가능하게 하는 유용한 도구입니다.

Python은 다양한 암호화와 복호화 방법을 지원합니다. 여기서는 가장 간단한 'base64' 모듈을 사용한 암호화와 복호화 방법을 설명하겠습니다.'base64'는 일반적으로 바이너리 데이터를 ASCII 문자열 형식으로 인코딩하는데 사용됩니다.아래는 Python에서 'base64' 모듈을 사용해 문자열을 암호화하고 복호화하는 간단한 코드입니다.

 

import base64

# 원본 문자열
original_string = "Python을 이용한 문자열 암호화 및 복호화"

# 문자열을 bytes 형태로 변환
bytes_string = original_string.encode("UTF-8")

# 문자열 암호화
encrypted_string = base64.b64encode(bytes_string)

print("암호화된 문자열 : ", encrypted_string)

# 문자열 복호화
decrypted_string = base64.b64decode(encrypted_string).decode("UTF-8")

print("복호화된 문자열 : ", decrypted_string)

 

이 코드를 실행하면 원본 문자열이 base64 인코딩을 통해 암호화되며, 그 결과가 출력됩니다. 그 다음에는 암호화된 문자열이 다시 base64 디코딩을 통해 복호화되어 원본 문자열로 돌아오며, 그 결과가 출력됩니다.이처럼 Python의 'base64' 모듈을 사용하면 문자열을 쉽게 암호화하고 복호화할 수 있습니다. 하지만 'base64'는 실제 보안에는 적합하지 않으며, 주로 데이터를 전송할 때 바이너리 데이터를 문자열 형태로 변환하는데 사용됩니다. 실제 보안이 필요한 경우에는 AES, RSA 등의 강력한 암호화 알고리즘을 사용하는 것이 좋습니다.

1. BERT

modelsizelink

KoBERT(SKT) base https://github.com/SKTBrain/KoBERT
KorBERT(ETRI) base https://aiopen.etri.re.kr/service_dataset.php
HanBERT base https://github.com/monologg/HanBert-Transformers
KcBERT base, large https://github.com/Beomi/KcBERT
KR-BERT(SNU)   https://github.com/snunlp/KR-BERT
Ko-Char-BERT base https://github.com/MrBananaHuman/KoreanCharacterBert
LMKor-BERT base https://github.com/kiyoungkim1/LMkor
DistilKoBERT(SKT 경량화)   https://github.com/monologg/DistilKoBERT
KLUE-BERT base https://huggingface.co/klue/bert-base
KPFBERT base https://github.com/KPFBERT/kpfbert
brainsbert(kakaobrain) base https://huggingface.co/hyunwoongko/brainsbert-base
KalBert base https://github.com/MrBananaHuman/KalBert
LMKor-Albert base https://github.com/kiyoungkim1/LMkor
KLUE-RoBERTa small, base, large https://huggingface.co/klue
KoBigBird base https://github.com/monologg/KoBigBird

 

2. ELECTRA

modelsizelink

TUNiB-Electra(TUNiB) small, base https://github.com/tunib-ai/tunib-electra
KoELECTRA small++, base https://github.com/monologg/KoELECTRA
KcELECTRA small, base https://github.com/Beomi/KcELECTRA
KoCharELECTRA small, base https://github.com/monologg/KoCharELECTRA
LMKor-ELECTRA base https://github.com/kiyoungkim1/LMkor

 

3. GPT

modelsizelink

LMKor-KoGPT2 base https://github.com/kiyoungkim1/LMkor
KoGPT2(SKT) base https://github.com/SKT-AI/KoGPT2
KoGPT-Trinity 1.2B(SKT) 1.2B https://huggingface.co/skt/ko-gpt-trinity-1.2B-v0.5
KoGPT(kakaobrain) 6B https://github.com/kakaobrain/kogpt

 

4. Encoder-Decoder(T5, BART)

T5

modelsizelink

KE-T5 small, base, large https://github.com/AIRC-KETI/ke-t5
LMKor-T5 small https://github.com/kiyoungkim1/LMkor
KcT5(개발 중 추측) base https://huggingface.co/beomi/KcT5-dev
pko-t5 base, large https://github.com/paust-team/pko-t5
KoT5(Wisenut) base https://github.com/wisenut-research/KoT5
ET5(ETRI)   https://aiopen.etri.re.kr/service_dataset.php

 

BART

modelsizelink

KoBART base https://github.com/SKT-AI/KoBART
Korean-BART mini, small, base https://cosmoquester.github.io/huggingface-bart-train/


출처: https://velog.io/@seoyeon96/PLM을-이용한-한국어-혐오-표현-탐지-1.-현황-파악