콘텐츠로 이동

한글 질문, 답변 구현하기

필요한 모듈 설치하기

!pip install transformers --quiet
!pip install torch --quiet

Gradio 설치하기

!pip install gradio

트랜스포머 모델 사이트

https://huggingface.co/dontgive99/deberta-v3-base-korean-squad_kor_v1 (한글 질문/답변)

from transformers import pipeline

question_answerer = pipeline(model="dontgive99/deberta-v3-base-korean-squad_kor_v1")
question_answerer(
    question="홍길동은 어디에서 근무해?",
    context="나는 한국에서 근무하는 홍길동입니다.",
)

Gradio에서 한글 질문/답변 구현하기 (과정1: 템플릿 준비하기)

import gradio as gr

with gr.Blocks() as demo:

    n1 = gr.Textbox(label="전공지식")
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변")
    bmi_btn = gr.Button("질문하기")

    #bmi_btn.click(fn=bmi, inputs=[n1, n2], outputs=r)

demo.launch()

Gradio에서 한글 질문/답변 구현하기 (과정2: 텍스트박스의 크기 조절)

import gradio as gr

with gr.Blocks() as demo:

    n1 = gr.Textbox(label="전공지식", lines=5)
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변", lines=3)
    bmi_btn = gr.Button("질문하기")

    #bmi_btn.click(fn=bmi, inputs=[n1, n2], outputs=r)

demo.launch()

Gradio에서 한글 질문/답변 구현하기 (과정3: 제목 추가하기)

import gradio as gr

with gr.Blocks() as demo:

gr.Markdown(
    """
    # 홍길동이 만든 GPT 서비스
    생성할 시작 문구를 입력해 주세요.
    """)

    n1 = gr.Textbox(label="전공지식", lines=5)
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변", lines=3)
    bmi_btn = gr.Button("질문하기")

    #bmi_btn.click(fn=bmi, inputs=[n1, n2], outputs=r)

demo.launch()

Gradio에서 한글 질문/답변 구현하기 (과정4: 함수 연동하기)

import gradio as gr
from transformers import pipeline

question_answerer = pipeline(model="dontgive99/deberta-v3-base-korean-squad_kor_v1")

def predict(cnt, qt):

  res = question_answerer(
    question="홍길동은 어디에서 근무해?",
    context="나는 한국에서 근무하는 홍길동입니다.",
  )

  return res

  #return pipe(text)[0]["generated_text"]

with gr.Blocks() as demo:

    gr.Markdown(
      """
      # 전공지식 답변 AI
      """)

    n1 = gr.Textbox(label="전공지식", lines=5)
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변", lines=3)
    qna_btn = gr.Button("질문하기")

    qna_btn.click(fn=predict, inputs=[n1, n2], outputs=r)

demo.launch()

Gradio에서 한글 질문/답변 구현하기 (과정5: 함수에서 응답값 처리하기)

import gradio as gr
from transformers import pipeline

question_answerer = pipeline(model="dontgive99/deberta-v3-base-korean-squad_kor_v1")

def predict(cnt, qt):

  res = question_answerer(
    question="홍길동은 어디에서 근무해?",
    context="나는 한국에서 근무하는 홍길동입니다.",
  )

  return res["answer"]


with gr.Blocks() as demo:

    gr.Markdown(
      """
      # 전공지식 답변 AI
      """)

    n1 = gr.Textbox(label="전공지식", lines=5)
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변", lines=3)
    qna_btn = gr.Button("질문하기")

    qna_btn.click(fn=predict, inputs=[n1, n2], outputs=r)

demo.launch()

Gradio에서 한글 질문/답변 구현하기 (과정6: 기능 완성하기)

import gradio as gr
from transformers import pipeline

question_answerer = pipeline(model="dontgive99/deberta-v3-base-korean-squad_kor_v1")

def predict(cnt, qt):

  res = question_answerer(
    question=qt,
    context=cnt,
  )

  return res["answer"]


with gr.Blocks() as demo:

    gr.Markdown(
      """
      # 전공지식 답변 AI
      """)

    n1 = gr.Textbox(label="전공지식", lines=5)
    n2 = gr.Textbox(label="질문")
    r = gr.Textbox(label="답변", lines=3)
    qna_btn = gr.Button("질문하기")

    qna_btn.click(fn=predict, inputs=[n1, n2], outputs=r)

demo.launch()