24. 퀴즈작성 및 채점 시스템(실무예제)

LLM 시대, LangChain(랭체인)으로 배우는 AI 소프트웨어 개발

by AI개발자
gaebalai-blog_ai-v3-1.jpg

이번에는 퀴즈 작성 및 채점 시스템을 만드는 방법을 통해 LLM을 추가하여 애플리케이션을 만드는 방법을 소개합니다. 챗봇 시스템에서는 사용자 메시지를 그대로 LLM에 전달하고 LLM의 출력을 그대로 표시했습니다. 그러나 챗봇 이외의 용도로 LLM출력을 사용하는 경우 LLM 출력에서 프로그래밍 방식으로 필요한 정보를 추출해야 합니다. 그래서 이번에는 LLM 출력을 프로그램을 이용하는 방법을 알려드립니다. 퀴즈 생성에 LLM을 이용하지만 LLM출력을 프로그램에서 사용할 수 있도록 하는 방법을 배워서 LLM응용방법을 소개합니다.



(1) 퀴즈 작성 및 채점 시스템 개요

이번에 만드는 퀴즈시스템 화면은 아래 그림과 같이 나옵니다. 사용자는 다음 항목을 입력하여 선택 퀴즈를 만듭니다.


카테고리: 퀴즈 카테고리

선택수(n): 선택수

난이도: 1~10의 값, 1이 가장 쉽고 10이 가장 어려움

문제수: 1~10의 값, 만드는 문제수


아래 그림의 화면은 카테고리에 '프로그래밍' 선택 수로서 n=3, 난이도 7, 문제수 1을 설정한 모습을 나타내고 있습니다. 사용자가 퀴즈 생성 버튼을 누르면 LLM(대규모언어모델)이 생성한 퀴즈가 화면에 표시됩니다. 화면에는 문제뿐만 아니라 3가지 옵션이 확인란과 같이 표시됩니다. 사용자는 선택지로부터 해답을 선택 후, '채점'버튼을 클릭하면 채점이 출력됩니다.

llm-langchain95.png


(2) 사전준비

이번에는 Streamlit과 OpenAI클라이언트를 호출하는 방식으로 진행합니다.

JSON형식을 맞춰 GPT응답은 순수 JSON이 아니라 텍스트 또는 Markdown형식으로 출력될 수 있습니다.

llm-langchain95-1.png


(3) LLM 입출력

퀴즈 작성 및 채점 시스템에서는 퀴즈를 작성하는 기능을 실현하기 위해 소프트웨어 일부파트로 LLM 입력은 다음 항목입니다.


카테고리

난이도

선택수

문제수


출력은 문제 몇가지의 퀴즈배열입니다. 또한 하나의 퀴즈는 다음 항목으로 구성됩니다.


문제내용

선택사항

해답번호


따라서 퀴즈를 만드는 것은 다음과 같은 Python함수를 구현할 수 있다는 것입니다.

llm-langchain95-2.png

make_quiz함수는 category, n, count, difficultyfmf dlqfurgkrh Quiz형 목록을 출력으로 사용합니다.


(4) 시스템 구현

Streamlit와 pyaskit을 사용하여 구현된 퀴즈 생성 및 채점 시스템 구현은 아래 코드에 나와 있습니다.

llm-langchain95-3.png

여기서 streamlit을 st라는 이름으로 가져옵니다. 또한, 형힌트의 TypedDict 및 List를 가져옵니다. 이들은 LLM의 출력유형을 지정하는데 사용합니다. pyaskit에서 function데코레이터를 가져옵니다.

다음으로 LLM기반 퀴즈생성함수 make_quiz의 구현부분을 살펴봅시다.

llm-langchain95-4.png

[퀴즈 생성]버튼을 누르면 카테고리(category), 옵션수(n_choices), 문제수(question_count), 난이도(difficulty)를 인수로 사용하여 make_quiz를 호출합니다. 그런 다음 st.session_state.quizzes에 데이터를 저장합니다. 이 인수의 값은 사용자 인터페이스에서 사용자가 선택한 것입니다. make_quiz가 호출되면 LLM은 퀴즈문제와 모범해답을 생성합니다.


아래 전체코드의 나머지 코드는 카테고리와 선택수에 대한 파라미터의 입력, 해답의 입력, 채점에 관한 코드입니다. [채점]버튼을 클릭하면 사용자의 해답을 모범해답과 대조하여 채점합니다.


퀴즈작성 및 채점시스템 구현(src/quiz/main2.py)

llm-langchain95-5.png
llm-langchain95-6.png
llm-langchain96.png

GPT에게 정확한 JSON구조를 명시적으로 전달하고 시스템 프롬프트를 통해 JSON출력을 강제하여 불필요한 텍스트가 포함되지 않습니다.



©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.

GAEBAL AI 개발사: https://gaebalai.com

AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5


keyword
이전 24화23. 멀티모달 RAG 챗봇(실무예제)