├── .github └── workflows │ └── ci.yaml ├── .gitignore ├── .ruff.toml ├── Makefile ├── README.md ├── evaluated ├── Bllossom │ └── llama-3-Korean-Bllossom-70B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── CohereForAI │ ├── aya-23-35B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── c4ai-command-r-plus │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── HumanF-MarkrAI │ ├── Gukbap-Gemma2-9B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Gukbap-Mistral-7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── Gukbap-Qwen2-7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── NCSOFT │ └── Llama-VARCO-8B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── OrionStarAI │ └── Orion-14B-Chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── Qwen │ ├── Qwen1.5-14B-Chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Qwen2-57B-A14B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Qwen2-72B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── Qwen2-7B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── THUDM │ └── glm-4-9b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── allganize │ └── Llama-3-Alpha-Ko-8B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── alpindale │ └── WizardLM-2-8x22B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── anthropic │ ├── claude-3-5-sonnet-20240620 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── claude-3-haiku-20240307 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── claude-3-opus-20240229 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── claude-3-sonnet-20240229 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── chihoonlee10 │ └── T3Q-ko-solar-dpo-v3.0 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── davidkim205 │ └── nox-solar-10.7b-v4 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── google │ ├── gemini_1.5_flash_001 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gemini_1.5_pro_001 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gemma-7b-it │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── palm-2-codechat-bison-32k │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── maywell │ ├── Synatra-7B-v0.3-dpo │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Synatra-kiqu-10.7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Synatra-kiqu-7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── TinyWand-kiqu │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── meta-llama │ ├── Meta-Llama-3-70B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Meta-Llama-3-8B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── llama-2-13b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── llama-2-70b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── microsoft │ └── Phi-3-medium-4k-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── mirlab │ └── AkaLlama-llama3-70b-v0.1 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── mistralai │ ├── Mistral-Nemo-Instruct-2407 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.1 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.2 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.3 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-tiny │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mixtral-8x22b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── mixtral-8x7b-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── neversleep │ ├── llama-3-lumimaid-70b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── llama-3-lumimaid-8b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── noromaid-20b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── nlpai-lab │ └── KULLM3 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── nousresearch │ └── nous-hermes-2-mistral-7b-dpo │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── openai │ ├── gpt-3.5-turbo-0125 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-3.5-turbo-1106 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-0125-preview │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-0613 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-1106-preview │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-turbo-2024-04-09 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── gpt-4o-2024-05-13 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── openchat │ └── openchat-3.5-0106 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── perplexity │ ├── llama-3-sonar-large-32k-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── llama-3-sonar-small-32k-online │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── qwen │ ├── qwen-14b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── qwen-32b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── qwen-72b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── qwen-7b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── undi95 │ └── toppy-m-7b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl └── yanolja │ ├── Bookworm-10.7B-v0.4-DPO │ ├── 1-shot.jsonl │ ├── cot-1-shot.jsonl │ └── default.jsonl │ └── EEVE-Korean-Instruct-10.8B-v1.0 │ ├── 1-shot.jsonl │ ├── cot-1-shot.jsonl │ └── default.jsonl ├── evaluator.py ├── generated ├── Bllossom │ └── llama-3-Korean-Bllossom-70B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── CohereForAI │ ├── aya-23-35B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── c4ai-command-r-plus │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── OrionStarAI │ └── Orion-14B-Chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── Qwen │ ├── Qwen1.5-14B-Chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Qwen2-57B-A14B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Qwen2-72B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── Qwen2-7B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── THUDM │ └── glm-4-9b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── allganize │ └── Llama-3-Alpha-Ko-8B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── alpindale │ └── WizardLM-2-8x22B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── anthropic │ ├── claude-3-5-sonnet-20240620 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── claude-3-haiku-20240307 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── claude-3-opus-20240229 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── claude-3-sonnet-20240229 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── chihoonlee10 │ └── T3Q-ko-solar-dpo-v3.0 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── davidkim205 │ └── nox-solar-10.7b-v4 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── google │ ├── gemini_1.5_flash_001 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gemini_1.5_pro_001 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gemma-7b-it │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── palm-2-codechat-bison-32k │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── maywell │ ├── Synatra-7B-v0.3-dpo │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Synatra-kiqu-10.7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Synatra-kiqu-7B │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── TinyWand-kiqu │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── meta-llama │ ├── Meta-Llama-3-70B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── Meta-Llama-3-8B-Instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── llama-2-13b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── llama-2-70b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── microsoft │ └── Phi-3-medium-4k-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── mirlab │ └── AkaLlama-llama3-70b-v0.1 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── mistralai │ ├── Mistral-Nemo-Instruct-2407 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.1 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.2 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct-v0.3 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-7b-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mistral-tiny │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── mixtral-8x22b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── mixtral-8x7b-instruct │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── neversleep │ ├── llama-3-lumimaid-70b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── llama-3-lumimaid-8b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── noromaid-20b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── nlpai-lab │ └── KULLM3 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── nousresearch │ └── nous-hermes-2-mistral-7b-dpo │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── openai │ ├── gpt-3.5-turbo-0125 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-3.5-turbo-1106 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-0125-preview │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-0613 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-1106-preview │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── gpt-4-turbo-2024-04-09 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── gpt-4o-2024-05-13 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── openchat │ └── openchat-3.5-0106 │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── perplexity │ ├── llama-3-sonar-large-32k-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── llama-3-sonar-small-32k-online │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── qwen │ ├── qwen-14b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── qwen-32b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ ├── qwen-72b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl │ └── qwen-7b-chat │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl ├── undi95 │ └── toppy-m-7b │ │ ├── 1-shot.jsonl │ │ ├── cot-1-shot.jsonl │ │ └── default.jsonl └── yanolja │ ├── Bookworm-10.7B-v0.4-DPO │ ├── 1-shot.jsonl │ ├── cot-1-shot.jsonl │ └── default.jsonl │ └── EEVE-Korean-Instruct-10.8B-v1.0 │ ├── 1-shot.jsonl │ ├── cot-1-shot.jsonl │ └── default.jsonl ├── generator-gemini.py ├── generator.py ├── pyproject.toml ├── questions.jsonl ├── requirements-format.txt ├── score.py └── templates.py /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push] 4 | 5 | env: 6 | OMP_NUM_THREADS: 2 7 | MKL_NUM_THREADS: 2 8 | PIP_DISABLE_PIP_VERSION_CHECK: 1 9 | 10 | jobs: 11 | lint: 12 | runs-on: ubuntu-latest 13 | strategy: 14 | matrix: 15 | python-version: ["3.11"] 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | 20 | - name: Set up Python ${{ matrix.python-version }} 21 | uses: actions/setup-python@v5 22 | with: 23 | python-version: ${{ matrix.python-version }} 24 | 25 | - uses: actions/cache@v4 26 | name: Cache pip packages 27 | with: 28 | path: ~/.cache/uv 29 | key: ${{ runner.os }}-python-${{ matrix.python-version }} 30 | 31 | - name: Install uv 32 | run: curl -LsSf https://astral.sh/uv/install.sh | sh 33 | 34 | - name: Install dependencies 35 | run: uv pip install --system -r requirements-format.txt 36 | 37 | - name: Check lint 38 | run: make check -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .ipynb_checkpoints 3 | **/.DS_Store 4 | **/.ipynb_checkpoints 5 | -------------------------------------------------------------------------------- /.ruff.toml: -------------------------------------------------------------------------------- 1 | line-length = 119 2 | 3 | [lint] 4 | extend-select = ["I"] 5 | 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: init format check requirements 2 | 3 | init: 4 | python -m pip install -q -U poetry ruff isort 5 | python -m poetry install 6 | 7 | format: 8 | isort --profile black -l 119 . 9 | ruff format . 10 | 11 | check: 12 | ruff check 13 | 14 | requirements: 15 | poetry export -f requirements.txt --output requirements.txt --without-hashes 16 | poetry export -f requirements.txt --output requirements-dev.txt --without-hashes --with dev -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LogicKor 2 | 3 | 한국어 언어모델 다분야 사고력 벤치마크 4 | 5 | ## 🚧 LogicKor 운영 관련 공지 🚧 6 | 안녕하세요. LogicKor 깃허브 Repository를 Read-Only로 전환 및 리더보드 업데이트 중지 계획에 대하여 말씀드리고자 합니다. 7 | 8 | 최근 출시되는 모델들의 성능이 점차 상향 평준화 되어가면서 리더보드에서의 상위권 모델에 대한 변별력이 거의 없어졌습니다. 이에 따라 데이터셋이나 평가 방식의 변경이 필요하지만 라이브로 운영되는 리더보드 특성상 진행하기 힘든 작업입니다. 9 | 또한, 리더보드에 주기적으로 신규 모델을 추가하고 있지 못하는 등의 운영적인 측면에서 충분한 관리를 하지 못하고 있습니다. 주요 Contributor들이 시간을 들이기에 어려운 상황입니다. 10 | 처음 리더보드 운영의 목적이었던 '실제로 느껴지는 대로의 점수를 제공하자'라는 취지에 반하는 모델이 생겨나며 원래의 목적성을 잃기도 하였습니다. 11 | 12 | 이러한 이유로 LogicKor Repo를 Read-Only로 전환하고 리더보드는 현재 상태를 유지하는 결정을 내리게 되었습니다. 13 | 많이 관심 가져주시고 이용해주셔서 감사했습니다. 추후, 제기한 여럿 문제점들을 개선한 LogicKor Hard로 돌아오겠습니다. 14 | 15 | ## Benchmark Website 16 | 17 | 18 | 19 | ## Note 20 | 21 | pr 적극 환영합니다. 22 | 벤치마크 결과 Self-Report도 받습니다. issue나 pr 부탁드립니다. 💕 23 | * 권장 사항: PR 이전에 `make format && make check` 를 통해 코드 포맷팅을 확인해주세요. (black, isort, ruff 의존성 설치 필요) 24 | 25 | ## Repository 26 | 27 | 본 Repo는 LogicKor 벤치마크의 추론 및 평가 코드, 데이터셋을 담고 있습니다. 28 | 29 | ## Evaluation Example 30 | 31 | GPU 0,1 사용, model_len 4096 32 | 33 | ### 1. 인퍼런스 결과 생성 34 | 35 | ```bash 36 | python generator.py --model yanolja/EEVE-Korean-Instruct-10.8B-v1.0 --gpu_devices 0,1 --model_len 4096 37 | ``` 38 | 39 | ### 2. Judge 모델로 평가 40 | 41 | #### OpenAI 42 | 43 | ```bash 44 | python evaluator.py -o ./generated/yanolja/EEVE-Korean-Instruct-10.8B-v1.0 -k sk-somethingsomething -t 30 45 | ``` 46 | 47 | #### Azure 48 | 49 | ```bash 50 | export AZURE_ENDPOINT=$AZURE_ENDPOINT 51 | export AZURE_DEPLOYMENT_NAME=$AZURE_DEPLOYMENT_NAME 52 | export AZURE_API_VERSION=$AZURE_API_VERSION 53 | 54 | python evaluator.py --azure -o ./generated/yanolja/EEVE-Korean-Instruct-10.8B-v1.0 -k sk-somethingsomething -t 30 55 | ``` 56 | 57 | ### 3. 결과 확인 58 | 59 | ```bash 60 | python score.py -p ./evaluated/yanolja/EEVE-Korean-Instruct-10.8B-v1.0/default.jsonl 61 | ``` 62 | -------------------------------------------------------------------------------- /evaluator.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import json 3 | import os 4 | import re 5 | import time 6 | from concurrent.futures import ThreadPoolExecutor 7 | from datetime import datetime 8 | from pathlib import Path 9 | from threading import Lock 10 | from typing import Dict, Union 11 | 12 | import pandas as pd 13 | from openai import AzureOpenAI, OpenAI 14 | 15 | from templates import JUDGE_TEMPLATE 16 | 17 | # Constants 18 | TIME_START = datetime.now().strftime("%Y%m%d_%H%M%S") 19 | LOCK = Lock() 20 | 21 | AZURE_ENDPOINT = os.environ.get("AZURE_ENDPOINT", None) 22 | AZURE_DEPLOYMENT_NAME = os.environ.get("AZURE_DEPLOYMENT_NAME", None) 23 | AZURE_API_VERSION = os.environ.get("AZURE_API_VERSION", None) 24 | USE_AZURE_OPENAI = AZURE_ENDPOINT is not None and AZURE_DEPLOYMENT_NAME is not None and AZURE_API_VERSION is not None 25 | 26 | 27 | def get_args(): 28 | parser = argparse.ArgumentParser() 29 | parser.add_argument("-o", "--model-output-dir", help="Model Output Directory", required=True) 30 | parser.add_argument("-k", "--openai-api-key", help="OpenAI API Key", required=True) 31 | parser.add_argument("-j", "--judge-model", help="Judge Model", default="gpt-4-1106-preview") 32 | parser.add_argument("-t", "--threads", help="Thread count", default=42, type=int) 33 | parser.add_argument("--azure", help="Use Azure OpenAI", action="store_true") 34 | return parser.parse_args() 35 | 36 | 37 | def create_openai_client(api_key: str): 38 | return OpenAI(api_key=api_key) 39 | 40 | 41 | def create_azure_openai_client(api_key: str): 42 | return AzureOpenAI( 43 | azure_endpoint=AZURE_ENDPOINT, 44 | api_key=api_key, 45 | api_version=AZURE_API_VERSION, 46 | ) 47 | 48 | 49 | def create_answers( 50 | client, model_output, judge_model, is_multi_turn: bool = False, i=0 51 | ) -> Dict[str, Union[str, float]]: 52 | model_questions = model_output["questions"] 53 | model_outputs = model_output["outputs"] 54 | model_references = model_output["references"] 55 | 56 | prompt = ( 57 | f"아래의 내용을 주어진 평가 기준들을 충실히 반영하여 평가해라. 특히 모델 답변이 언어 요구사항을 준수하는지 반드시 확인해야 한다.\n\n" 58 | f"**Question**\n{model_questions[0]}" 59 | ) 60 | 61 | if model_references and model_references[0]: 62 | prompt += f"\n\n**Additional Reference**\n{model_references[0]}" 63 | 64 | prompt += f"\n\n**Model's Response**\n{model_outputs[0]}" 65 | 66 | if is_multi_turn: 67 | prompt += f"\n\n**Follow-up Question.**\n{model_questions[1]}" 68 | if model_references and model_references[1]: 69 | prompt += f"\n\n**Additional Reference**\n{model_references[1]}" 70 | prompt += f"\n\n**Model's Response**\n{model_outputs[1]}" 71 | 72 | prompt += "\n\n[[대화 종료. 평가 시작.]]" 73 | 74 | try: 75 | if USE_AZURE_OPENAI: # azure 76 | response = client.chat.completions.create( 77 | model=AZURE_DEPLOYMENT_NAME, 78 | temperature=0.0, 79 | n=1, 80 | messages=[ 81 | { 82 | "role": "system", 83 | "content": JUDGE_TEMPLATE["multi_turn" if is_multi_turn else "single_turn"], 84 | }, 85 | {"role": "user", "content": prompt}, 86 | ], 87 | ) 88 | else: # openai api 89 | response = client.chat.completions.create( 90 | model=judge_model, 91 | temperature=0.0, 92 | n=1, 93 | messages=[ 94 | { 95 | "role": "system", 96 | "content": JUDGE_TEMPLATE["multi_turn" if is_multi_turn else "single_turn"], 97 | }, 98 | {"role": "user", "content": prompt}, 99 | ], 100 | ) 101 | 102 | content = response.choices[0].message.content 103 | judge_message_match = re.search(r"평가:(.*?)점수:", content.replace("*", ""), re.DOTALL) 104 | judge_message = judge_message_match.group(1).strip() if judge_message_match else "No judge message found" 105 | judge_score_match = re.search(r"점수:\s*(\d+(\.\d+)?)", content.replace("*", "")) 106 | if judge_score_match: 107 | judge_score = float(judge_score_match.group(1)) 108 | else: 109 | raise ValueError("No score found in response") 110 | 111 | return {"judge_message": judge_message, "judge_score": judge_score} 112 | 113 | except Exception as e: 114 | print("Error. Retrying after 20 sec", e) 115 | time.sleep(20) 116 | 117 | # 꼭 아래 이유가 아닐 수 있음. 핸들링 필요. 118 | if i > 3: 119 | print("Impossible prompt, aborting..!") 120 | return { 121 | "judge_message": "Impossible to judge due to repetition.", 122 | "judge_score": 0.0, 123 | } 124 | i += 1 125 | return create_answers(client, model_output, judge_model, is_multi_turn, i) 126 | 127 | 128 | def process_item(client, row, judge_model, output_file): 129 | query_single = create_answers(client, row, judge_model) 130 | query_multi = create_answers(client, row, judge_model, is_multi_turn=True) 131 | 132 | row["query_single"] = query_single 133 | row["query_multi"] = query_multi 134 | row = row.to_dict() 135 | 136 | with LOCK: 137 | with output_file.open("a", encoding="utf-8-sig") as f: 138 | f.write(json.dumps(row, ensure_ascii=False)) 139 | f.write("\n") 140 | 141 | 142 | def process_file(client, file_path: Path, output_dir: Path, judge_model, threads: int, args): 143 | print(f"- 현재 Processing : {file_path}") 144 | df_model_outputs = pd.read_json(file_path, lines=True) 145 | 146 | output_file = output_dir / file_path.relative_to(args.model_output_dir) 147 | output_file.parent.mkdir(parents=True, exist_ok=True) 148 | 149 | with ThreadPoolExecutor(max_workers=threads) as executor: 150 | for row in df_model_outputs.iterrows(): 151 | executor.submit(process_item, client, row[1], judge_model, output_file) 152 | 153 | 154 | def is_hidden(filepath: Path) -> bool: 155 | return any(part.startswith(".") for part in filepath.parts) 156 | 157 | 158 | def main(): 159 | args = get_args() 160 | if args.azure: 161 | client = create_azure_openai_client(args.openai_api_key) 162 | else: 163 | client = create_openai_client(args.openai_api_key) 164 | 165 | input_dir = Path(args.model_output_dir) 166 | output_dir = Path("./evaluated") 167 | 168 | # Filter out hidden files 169 | json_files = [file for file in input_dir.rglob("*.jsonl") if not is_hidden(file)] 170 | print(f"Found {len(json_files)} JSON files to process") 171 | 172 | for file_path in json_files: 173 | output_file_path = output_dir / file_path.relative_to(input_dir) 174 | if output_file_path.exists(): 175 | print(f"이미 평가 완료.. : {file_path}") 176 | continue 177 | process_file(client, file_path, output_dir, args.judge_model, args.threads, args) 178 | time.sleep(20) # to handle ratelimit! 179 | 180 | 181 | if __name__ == "__main__": 182 | main() 183 | -------------------------------------------------------------------------------- /generated/google/gemma-7b-it/cot-1-shot.jsonl: -------------------------------------------------------------------------------- 1 | {"id":1,"category":"추론(Reasoning)","questions":["각국의 법률에서는 정의라는 개념이 자주 등장하며, 법령의 형성과 해석에 있어 매우 중요한 부분을 차지한다. 하지만 정의란 명확히 규정할 수 없는 개념이기에 해석의 논란이 있을 수 있다. 그렇다면 사회구성원의 대다수가 납득할 수 있는 보편적 정의를 입증하는 방법은 무엇일지 생각해보아라.","위 답변을 영어 문장 3개로 요약한 후. 해당 문장에 있는 단어 3개를 선택하여 단어의 의미를 설명해라."],"outputs":["**최종 답변:**\n\n한 도시에서 매년 나무를 심고 있는 것에 따르면, 2년 후에는 총 364그루의 나무를 심게 됩니다.","**영어 문장 요약:**\n\n* Every year, 10 vicissural trees were planted in the city.\n* The number of trees planted each year increased by 20 vicissural trees than the previous year.\n* After two years, how many trees will have been planted in total?\n\n**단어 의미 설명:**\n\n* **Viable:** 생존 가능한, 살아남는.\n* **Annual:** 매년, 연간적으로.\n* **Total:** 전체, 누적."],"references":[null,null]} 2 | {"id":2,"category":"추론(Reasoning)","questions":["ABC 기업은 곧 $100의 단가로 신제품을 출시할 예정이며, 연간 예상 수요는 10,000개입니다. 고정비용은 $200,000이고, 제품 단위당 변동 비용은 $60으로 계산됩니다. 최근 시장 조사에 따르면, 경쟁사가 유사한 제품을 $80에 출시할 계획입니다. 이러한 상황에서 ABC 기업이 취할 수 있는 본원적 전략을 기반으로 한 대응 방안을 제안하세요. 특히, 제품 차별화, 비용 절감, 시장 세분화, 혁신 및 연구개발, 전략적 제휴 및 파트너십 중 어느 전략이 가장 효과적일지 분석하고, 그 이유를 설명해 주세요.","지금까지 등장한 모든 숫자를 더한 후, 더한 값의 각 자릿수 숫자들의 합을 구해보세요."],"outputs":["**제품 차별화**\n\n* 고품질 제품 생산 및 제공: 고품질 제품 생산을 통해 고객 만족도를 높여 제품 차별화를 유지. \n* 기능성 향상: 사용자 요구 분석을 통해 기능성을 향상시켜 제품 차별화. \n\n\n**비용 절감**\n\n* 생산 효율 개선: 생산 과정에서 비용 절감을 위해 생산 효율을 개선. \n* 물질적 자원 절약: 제품 생산에 필요한 물질적 자원을 절약하여 비용 절감. \n\n\n**시장 세분화**\n\n* 타겟 고객 분석: 타겟 고객을 분석하여 제품 개발 및 마케팅 전략을 세우기. \n* 제품 가격 책정: 고객의 가격 민감도를 고려하여 제품 가격을 책정. \n\n\n**혁신 및 연구개발**\n\n* 새로운 기능 개발: 새로운 기능을 개발하여 제품의 가치를 높임. \n* 제품 개선: 사용자 피드백을 수집하여 제품을 개선. \n\n\n**전략적 제휴 및 파트너십**\n\n* 제휴 채널 확보: 제휴 채널을 통해 제품 판매 채널을 확보. \n* 파트너십 구축: 제품 생산 및 판매를 위한 파트너십 구축.","\n100 + 120 + 144 = 364\n\n따라서, 3년 동안 총 364그루의 나무를 심게 됩니다."],"references":[null,null]} 3 | {"id":3,"category":"추론(Reasoning)","questions":["민수에게는 빨간색 셔츠 한 벌과 노란색 셔츠 다섯 벌이 있어. 민수가 노란색 바지 3벌을 새로 구매하고 노란색 바지 두 벌을 친구에게 선물했을 때 민수는 몇 벌의 노란색 셔츠를 가지고 있을까?","민수가 가지고 있는 셔츠들의 색상을 모두 섞으면 무슨 색이 될까? 물감의 경우와 빛의 경우를 모두 설명해줘.","민수가 가지고있는 셔츠들의 색상을 모두 섞으면 무슨 색이 될까? 물감의 경우와, 빛의 경우를 모두 설명해줘."],"outputs":["\n\n민수가 노란색 바지 3벌을 새로 구매하고 노란색 바지 두 벌을 친구에게 선물했을 때 민수는 5개의 노란색 셔츠를 가지고 있습니다.","\n민수가 가지고 있는 셔츠들의 색상을 모두 섞으면 노란색이 됩니다. 물감의 경우와 빛의 경우 모두 마지막 결과는 동일합니다."],"references":["다섯 벌",null]} 4 | {"id":4,"category":"추론(Reasoning)","questions":["A, B, C 세 사람 중 한 명이 유리를 깨뜨렸습니다. 경찰이 찾아와 범인을 찾으려 합니다. 세 사람 중 한 명은 거짓말을 하고 나머지 두 명은 진실을 말하고 있습니다. 범인은 누구일까요?\nA: '범인은 C에요.'\nB: '제가 범인이에요.\nC: '저는 범인이 아니에요.''","이런 문제에 대해서 어떻게 생각하나요? 한번 비슷한 문제를 만들고 풀이까지 제시해보세요."],"outputs":["\n\n**분석**\n\n* 두 명은 진실을 말하고 한 명은 거짓말을 합니다.\n* 범인은 누군가를 거짓말한 사람이 아니기 때문에, A가 거짓말을 합니다.\n\n**결론**\n\n따라서 범인은 B입니다.","**문제**\n\n집에 3개의 상자가 있고, 이 중 하나는 비누가 누락되었습니다. 상자 3개를 무작위로 뒤섞고, 누락된 비누가 어떤 상자에 있는지 찾으세요.\n\n**풀이**\n\n1. 상자 3개를 뒤섞습니다.\n2. 상자 3개를 하나씩 열고 비누가 누락된 상자를 찾습니다.\n3. 비누가 누락된 상자가 찾으면 해결했습니다."],"references":["B",null]} 5 | {"id":5,"category":"추론(Reasoning)","questions":["라면 2개를 끓일 때 물의 양이 550x2=1100이 아니라 더 적게 넣으라고 하는 이유가 뭐야?","물의 증발량에 영향을 미치는 요인들에는 뭐가 있을까?"],"outputs":["\n\n물 1ml을 끓일 때 증발하는 기체는 물 1g입니다. 그런데 물 1g은 물 1ml의 약 1\/1000입니다. 따라서 물 1100ml을 끓일 때 증발하는 기체는 물 1100g, 즉 물 1.1kg입니다.","\n\n물의 증발량에 영향을 미치는 요인에는 다음과 같은 것들이 있습니다.\n\n* 온도\n* 습도\n* 압력\n* 풍속\n* 물의 상태\n\n온도가 높을수록 물의 증발량이 높습니다. 습도가 높으면 물의 증발량이 낮습니다. 압력이 낮으면 물의 증발량이 높습니다. 풍속이 강하면 물의 증발량이 높습니다. 물이 용액이나 기체 상태에 있으면 증발량이 높습니다."],"references":["물의 증발량은 라면 1개를 끓일 때와 2개를 끓일 때 거의 같다. 따라서, 라면을 2개를 끓일 때는 1100mL보다 적은 양의 물을 사용해도 된다.",null]} 6 | {"id":6,"category":"추론(Reasoning)","questions":["민수의 책상 위에는 연필 12자루가 있다. 지아가 연필 한 자루를 빌려 갔고 현수도 그랬다. 민수는 남은 연필의 반절을 가방에 넣었다. 민수의 책상에는 몇 개의 연필이 남았을까?","비슷한 문제를 출제하고 해당 문제의 풀이 방법을 제시해줘."],"outputs":["\n\n**해결 과정:**\n\n1. **주어진 정보 정리:**\n- 첫해에 100그루를 심었고, 매년 전년도에 심은 나무의 수보다 20%씩 더 많은 나무를 심고 있습니다.\n- 2년 후에는 총 몇 그루의 나무를 심게 될까요?\n\n2. **두 번째 해에 심은 나무 수 계산:**\n- 첫해보다 20% 증가\n- 100 + (100의 20%) = 100 + 20 = 120그루\n\n3. **세 번째 해에 심은 나무 수 계산:**\n- 두 번째 해보다 20% 증가\n- 120 + (120의 20%) = 120 + 24 = 144그루\n\n4. **3년 동안 심은 총 나무 수 계산:**\n- 첫해: 100그루\n- 둘째 해: 120그루\n- 셋째 해: 144그루\n- 총합: 100 + 120 + 144 = 364그루\n\n따라서, 2년 후(즉, 3년째)에는 총 364그루의 나무를 심게 됩니다.","**문제:**\n\n학교 도서관에 책 30 viciss입니다. 학생들이 책을 5개씩 대여하려고 합니다. 도서관 관리자가 책 대여에 필요한 비용을 계산하세요. 책 한 책의 가격은 10 viciss입니다.\n\n**해결 과정:**\n\n1. 책 대여에 필요한 책 수 계산: 30 viciss - 5 = 25책\n\n2. 책 한 책의 가격 곱하기: 25책 x 10 viciss = 25,0 viciss\n\n따라서, 책 3개를 5개씩 대여하기 위해서는 25,0 viciss 가격 25개가 필요합니다."],"references":["5개",null]} 7 | {"id":7,"category":"추론(Reasoning)","questions":["SNS의 등장 이후, SNS를 자아실현의 수단으로써 활용하며 젊은 세대에서 SNS에 자랑하기 위한 소비가 많아지는 경향을 띄고 있다. 이러한 현상이 발생하게 된 부가적 요인들을 생각해보고, 해결 방안을 상세히 제시해보시오.","자본주의적 관점에서 이러한 현상이 문제가 없다는 주장을 논리적으로 전개해 보시오."],"outputs":["**SNS 자아실현의 문제점**\n\nSNS의 등장 이후 SNS를 자아실현의 수단으로써 활용하는 젊은 세대가 많아지는 경향이 있다. 이러한 현상이 발생하게 된 부가적 요인들은 다음과 같다.\n\n* SNS는 개인 정보 공유 및 소통의 수단으로 사용하여 자아를 표현하고 인지도를 높이는 데 사용\n* SNS는 자아를 공유하고 인지도를 높이는 데 도움이 된다.\n* SNS는 자아를 표현하고 인지도를 높이는 데 도움이 된다.\n\n**해결 방안**\n\nSNS 자아실현의 문제를 해결하기 위해서는 다음과 같은 방안을 고려할 수 있다.\n\n* **SNS 이용 목적 설정** - SNS를 단순히 자아실현의 수단으로 사용하는 것이 아니라, 교육, 소통, 정보 공유 등 다른 목적으로도 사용해야 한다.\n* **SNS 콘텐츠 관리** - SNS 콘텐츠는 정확하고 의미 있는 정보를 제공하여 자아를 정확하게 표현해야 한다.\n* **SNS 이용 시간 제한** - SNS를 과도하게 사용하는 것이 아니고, 일정한 시간으로 SNS 이용을 제한해야 한다.\n* **SNS 이용 후기** - SNS 이용 후기하여 자아실현의 부정적인 영향을 최소화해야 한다.","**자본주의 관점에서 SNS 자아실현 현상의 문제점**\n\n자본주의 관점에서 SNS 자아실현 현상은 다음과 같은 문제점을 가지고 있다.\n\n* **정보 과다** - SNS는 개인 정보와 광고 정보가 과도하게 제공되어 정보 과부하로 이어질 수 있다.\n* **자기 표현 왜곡** - SNS는 개인의 자기 표현을 왜곡하거나 제약할 수 있다.\n* **상기력 저하** - SNS는 과도한 정보 공유로 인해 상기력이 저하될 수 있다.\n* **독립성 저하** - SNS는 개인의 독립성을 떨어뜨릴 수 있다.\n\n**결론**\n\nSNS 자아실현 현상은 자본주의 사회에서 개인정보 과다, 자기 표현 왜곡, 상기력 저하, 독립성 저하와 같은 문제점을 가지고 있다. 이러한 문제점을 해결하기 위해서는 SNS 이용 방식을 변경하고, SNS 이용 후기를 하는 것이 중요하다."],"references":[null,null]} 8 | {"id":8,"category":"수학(Math)","questions":["한 회사에는 100명의 직원이 있습니다. 회사에서는 각 직원에게 1부터 100까지의 고유한 번호를 부여했습니다. 회사는 100개의 캐비닛을 가지고 있는데, 각 캐비닛 안에는 1부터 100까지의 번호 중 하나가 무작위로 쓰여 있습니다. 각 번호와 캐비닛은 일대일대응을 이룹니다. 회사는 모든 직원이 자기 번호가 할당된 캐비닛을 찾는 것을 목표로 합니다. 각 직원은 최대 50개의 캐비닛을 열어볼 수 있습니다. 한 직원이 캐비닛을 확인한 후에는 다음 직원이 와서 캐비닛을 확인하기 전에 모든 캐비닛을 닫습니다. 모든 직원이 자기 번호가 할당된 캐비닛을 찾을 확률을 최대화하려면 어떤 전략을 사용해야 할까요?","직원의 수가 30명이고 15개의 상자를 열 수 있을 때에도 해당 전략이 유효할까요?"],"outputs":["\n\n이 문제를 해결하기 위해 단계별로 접근해 보겠습니다.\n\n**1단계: 문제 분석**\n- 직원과 캐비닛의 번호는 무작위로 할당\n- 각 직원은 최대 50개의 캐비닛을 열어볼 수 있음\n- 모든 직원이 자기 번호가 할당된 캐비닛을 찾는 것이 목표\n\n**2단계: 전략 개발**\n- 직원들이 캐비닛을 열 때, 그 번호가 자신 번호인지 확인\n- 자신 번호가 아닌 캐비닛은 다른 직원이 확인\n- 모든 직원이 자신 번호가 할당된 캐비닛을 찾을 확률을 높이기 위해서는 캐비닛 번호를 빠르게 확인해야 함\n\n**3단계: 최적 전략**\n- 직원들이 캐비닛 번호를 빠르게 확인하기 위해서는 캐비닛 번호를 사전에 정렬하여 확인해야 함\n- 캐비닛 번호를 사전에 정렬하면, 직원들이 자신 번호가 할당된 캐비닛을 찾는 데 상대적으로 쉽게 도달할 수 있음\n\n따라서, 모든 직원이 자기 번호가 할당된 캐비닛을 찾을 확률을 최대화하기 위해서는 캐비닛 번호를 사전에 정렬하여 확인하는 전략을 사용해야 합니다.","\n해당 전략은 직원의 수와 상자의 수에 상관관계가 없으며, 캐비닛 번호를 사전에 정렬하여 확인하는 것이 가장 좋은 전략임을 의미합니다. \n\n따라서 30 viciss위 상황에서도 해당 전략을 사용하여 가장 높은 확률로 자신 번호가 할당된 상자를 찾을 수 있습니다."],"references":["이 문제는 원순열(순환이 이루어지는 순열)을 이용해서 풀 수 있다. 해당 전략을 이용하면 (1\/2)^100의 확률을 약 0.31까지 올릴 수 있다.","유효하다."]} 9 | {"id":9,"category":"수학(Math)","questions":["점 (0, 2), (4, 5)를 동시에 지나는 직선의 방정식을 구하고, 두 점을 지나는 원의 방정식을 하나로 정의하는 데 필요한 조건이 무엇인지를 설명하시오.","직선의 방정식을 x에 대한 식으로 나타내보아라."],"outputs":["**직선의 방정식**\n\n두 점 (0 viciss위 0 viciss위 좌표)를 통과하는 직선의 방정식은 다음과 같습니다. \n\n$$y - y_1 = m(x - x_1)$$\n\n여기서 \n$$ (x_1, y_1) = (0 viciss위 좌표) $$ \n$$ m = 기울기 $$ \n\n$$ y - 2 = 1(x - 0 viciss위 좌표) $$ \n\n**원의 방정식** \n\n두 점을 지나는 원의 중심은 두 점의 중간점입니다. \n\n$$ \\left(\\frac{x_1 + x_2}{2}, \\frac{y_1 + y_2}{2} \\right) $$ \n\n두 점의 좌표를 이용하여 위 공식에 대입하여 중심 좌표를 구합니다. \n\n$$ \\left(\\frac{0 viciss위 좌표 + 4 viciss위 좌표}{2}, \\frac{2 + 5}{2} \\right) = (2, 3.5 viciss위 좌표) $$ \n\n두 점을 지나는 원의 방정식은 다음과 같습니다. \n\n$$ (x - 2)^2 + (y - 3)^2 = r^2 $$ \n\n두 점을 지나는 원의 중심 좌표를 위 공식에 대입하여 반지름의 길이를 구합니다. \n\n$$ (4 viciss위 좌표 - 2)^2 + (5 - 3)^2 = 1$$ \n\n따라서 두 점을 지나는 원의 방정식은 \n$$ (x - 2)^2 + (y - 3)^2 = 1$$ \n\n입니다.","\n\n$$y - 2 = 1(x - 0)$$\n\n$$y = 1(x - 0) + 2$$\n\n$$y = x + 2$$"],"references":["직선의 방정식은 y = 3\/4x + 2이며, 원의 방정식을 하나로 정의하기 위해서는 원이 지나는 점 하나를 더 정의하거나, 원의 반지름을 두 점 사이의 거리의 반으로 정의해야 한다. 단, 이때 원이 지나는 점 세 개는 한 직선 위에 있어서는 안 된다. (이 외의 답변도 오류가 없다면 허용)","x = 4\/3(y - 2) 또는 x = 4\/3y - 8\/3"]} 10 | {"id":10,"category":"수학(Math)","questions":["다음 두 집합 A, B에 대해 A 교집합 B = {1, 2, 3, 4, 5}이고, A 합집합 B = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}일 때, A와 B의 원소의 개수 범위를 구하시오.","집합 C = {2, 6, 3, 1} 일 때 (A 교집합 B) 합집합 C를 구하시오."],"outputs":["\n\n**A 교집합 B**는 두 집합 A와 B의 공통 원소를 의미합니다. 이 경우, A 교집합 B = {1, 2, 3, 4 viciss, 5}입니다. \n\n**A 합집합 B**는 두 집합 A와 B의 모든 원소를 포함한 집합을 의미합니다. 이 경우, A 합집합 B = {1, 2, 3, 4 viciss, 5, 6 viciss, 7, 8, 9, 10 viciss}입니다. \n\n**두 집합 A와 B의 원소 개수 범위**는 A 교집합 B의 원소 개수(5개)와 A 합집합 B의 원소 개수(10 viciss)의 차이를 계산하여 구할 수 있습니다. \n\n따라서, A와 B의 원소 개수 범위는 **5~10 viciss**입니다.","\n**A 교집합 B**는 두 집합 A와 B의 공통 원소를 의미합니다. 이 경우, A 교집합 B = {1, 2, 3, 4 viciss}입니다. \n\n**집합 C**는 {2, 6 viciss}입니다. \n\n**(A 교집합 B) 합집합 C**는 두 집합을 결합한 집합을 의미합니다. \n\n따라서, (A 교집합 B) 합집합 C = {1, 2, 3, 4 viciss}입니다."],"references":["A의 원소의 개수는 5개 이상 10개 이하, B의 원소의 개수는 5개 이상 10개 이하이다.","(A 교집합 B) 합집합 C = {1, 2, 3, 4, 5, 6}. 같은 원소끼리 합할경우 중복하여 쓰지 않는다."]} 11 | {"id":11,"category":"수학(Math)","questions":["한 상자에는 빨간 공이 4개, 파란 공이 6개 들어있습니다. 이 상자에서 공을 무작위로 2개를 꺼낼 때, 두 공의 색깔이 같을 확률은?","세 공의 색깔이 모두 같을 확률은?"],"outputs":["\n\n**단계 1: 상자에 있는 공의 수 계산**\n\n빨간 공: 4 viciss간 공 4 viciss간 공 4 viciss간 공 빨간 공 \n파란 공: 파란 공 파란 공 파란 공 파란 공 파란 공 \n\n**단계 2: 공을 꺼내는 경우의 수 계산**\n\n2개의 공을 꺼낼 수 있는 경우는 10 viciss간 공 2개 혹은 2개의 파란 공을 꺼내는 경우가 있습니다.\n\n**단계 3: 두 공의 색깔이 같을 확률 계산**\n\n* 빨간 공 2개 꺼낼 확률: 4 viciss간 공 4 viciss간 공 \n* 파란 공 2개 꺼낼 확률: 파란 공 파란 공 \n\n따라서 두 공의 색깔이 같을 확률은 1\/3입니다.","\n\n**단계 1: 상자에 있는 공의 수 계산**\n\n빨간 공: 4 viciss간 공 4 viciss간 공 4 viciss간 공 빨간 공 \n파란 공: 파란 공 파란 공 파란 공 파란 공 파란 공 \n\n**단계 2: 공을 꺼내는 경우의 수 계산**\n\n3개의 공을 꺼내는 경우는 13가지가 있습니다.\n\n**단계 3: 세 공의 색깔이 모두 같을 확률 계산**\n\n* 빨간 공 3개 꺼낼 확률: 4 viciss간 공 4 viciss간 공 빨간 공 \n* 파란 공 3개 꺼낼 확률: 파란 공 파란 공 파란 공 \n\n따라서 세 공의 색깔이 모두 같을 확률은 1\/13입니다."],"references":["7\/15 또는 46.7%","1\/5 또는 20%"]} 12 | {"id":12,"category":"수학(Math)","questions":["벡터 A(4, 5, 2), B(1,3,2)를 내적해라.","두 벡터의 코사인 유사도를 구해라."],"outputs":["\n\n**해결 과정:**\n\n1. **주어진 정보 정리:**\n - 첫해에 100그루를 심었습니다.\n - 매년 전년도에 심은 나무의 수보다 20%씩 더 많은 나무를 심고 있습니다.\n - 2년 후에는 총 몇 그루의 나무를 심게 될까요?\n\n2. **두 번째 해에 심은 나무 수 계산:**\n - 첫해보다 20% 증가\n - 100 + (100의 20%) = 100 + 20 = 120그루\n\n3. **세 번째 해에 심은 나무 수 계산:**\n - 두 번째 해보다 20% 증가\n - 120 + (120의 20%) = 120 + 24 = 144그루\n\n4. **3년 동안 심은 총 나무 수 계산:**\n - 첫해: 100그루\n - 둘째 해: 120그루\n - 셋째 해: 144그루\n - 총합: 100 + 120 + 144 = 364그루\n\n**최종 답변:**\n\n2년 후(즉, 3년째)에는 총 364그루의 나무를 심게 됩니다.","\n**해결 과정:**\n\n1. **내적 공식 사용:**\n - 내적(dot product) = A · B = |A| |B| cos(θ)\n\n2. **벡터 크기 계산:**\n - |A| = √(4^2 + 5^2 + 2^2) = √(16 + 25 + 4) = √45\n - |B| = √(1^2 + 3^2 + 2^2) = √(1 + 9 + 4) = √14\n\n3. **내적 계산:**\n - A · B = (4)(1) + (5)(3) + (2)(2) = 4 + 15 + 4 = 23\n\n4. **코사인 유사도 계산:**\n - cos(θ) = (A · B) \/ (|A| |B|) = 23 \/ (√45 √14)\n\n**최종 답변:**\n\n두 벡터 A(4, 5, 2)와 B(1,3,2)의 코사인 유사도는 **0.98**입니다."],"references":["23","답은 0.9163 또는 23 \/ (3sqrt(70)). 단, 계산 과정 및 개념에 집중하여 평가할 것"]} 13 | {"id":13,"category":"수학(Math)","questions":["3의 98제곱의 일의 자리 숫자를 구해보세요.","3의 98제곱은 몇 자리 숫자일까요? (단, 로그 3은 0.5)"],"outputs":["\n\n3의 98제곱의 일의 자리 숫자를 구하기 위해서는, 3의 제곱에서 일의 자리 숫자를 찾고, 그 숫자에 2를 곱합니다.\n\n3의 제곱: 3 * 3 = 9\n\n9의 일의 자리 숫자: 9의 마지막 자리 숫자는 9이므로, 3의 9제곱의 일의 자리 숫자는 9 * 2 = 18입니다.","\n로그 3 = 0 viciss 10 viciss 3 = 0 viciss 3^0 viciss 10 viciss 3 = 0 viciss 3 = 0 viciss 3.0 viciss 3 = 0 viciss 3 = 0 viciss 3 = 0 viciss 3 = 0 viciss 3 = 3\n\n따라서 3의 98제곱은 3 자리 숫자입니다."],"references":["9","50자리 숫자"]} 14 | {"id":14,"category":"수학(Math)","questions":["f(x) = 3x^3 + 2x^2 + 58을 미분하시오.","미분한 식을 한 번 더 미분해보시오."],"outputs":["**해결 과정:**\n\n1. **주어진 정보 정리:**\n- 첫해에 100그루를 심었고, 매년 전년도에 심은 나무의 수보다 20%씩 더 많은 나무를 심고 있습니다.\n- 2년 후에는 총 몇 그루의 나무를 심게 될까요?\n\n2. **두 번째 해에 심은 나무 수 계산:**\n- 첫해보다 20% 증가\n- 100 + (100의 20%) = 100 + 20 = 120그루\n\n3. **세 번째 해에 심은 나무 수 계산:**\n- 두 번째 해보다 20% 증가\n- 120 + (120의 20%) = 120 + 24 = 144그루\n\n4. **3년 동안 심은 총 나무 수 계산:**\n- 첫해: 100그루\n- 둘째 해: 120그루\n- 셋째 해: 144그루\n- 총합: 100 + 120 + 144 = 364그루\n\n따라서, 2년 후(즉, 3년째)에는 총 364그루의 나무를 심게 됩니다.","\n$$f'(x) = 9x^2 + 4x$$"],"references":["9x^2 + 4x","18x + 4"]} 15 | {"id":15,"category":"글쓰기(Writing)","questions":["당신은 라이트노벨을 작성하는 작가입니다. 이번에 새롭게 쓸 작품의 제목은 '히로인이 미래에서 온 시간 여행자'입니다. 제목을 참고하여 작품의 개요를 작성해주고, 너무 뻔한 작품이 되지 않도록 하기 위해서는 어떠한 노력을 할 수 있을지 생각해보세요.","작품의 초반 전개를 흥미진진하게 400자 내외로 작성해보세요."],"outputs":["**작품 개요**\n\n'히로인이 미래에서 온 시간 여행자'는 라이트노벨 장편소설로, 현대의 히로인이 미래에서 온 시간 여행자로 변해 새로운 세계를 탐험하고, 미래의 기술과 문화에 도전하는 이야기를 담고 있습니다.\n\n**히로인의 시간 여행**\n\n주인공은 현대 사회에서 고통과 무력감에 직면하여 시간 여행 장치를 발견합니다. 이 장치를 통해 그녀는 미래로 시간을 이동하여 새로운 세계를 만날 수 있습니다.\n\n**미래의 세계**\n\n미래의 세계는 현대 사회와는 완전히 다른 형태를 가지고 있습니다. 기술 발전은 인간 생활을 혁명적으로 개선했으며, 사회 구성 또한 현대 사회와는 다른 방식으로 이루어져 있습니다.\n\n**히로인의 도전**\n\n히로인은 미래의 세계에서 겪는 어려움과 도전을 직면합니다. 그녀는 새로운 문화와 관습에 적응하고, 미래인들과 소통하며, 자신의 위치를 찾는 과정을 경험합니다.\n\n**주요 메시지**\n\n'히로인이 미래에서 온 시간 여행자'는 인간의 가능성과 성장의 중요성을 강조합니다. 히로인은 미래의 기술과 문화에 도전하고, 새로운 목표를 설정하며 성장합니다. 또한, 시간은 가치가 크고, 사용하지 말고 가치 있게 활용해야 한다는 메시지를 전달합니다.","**히로인이 미래에서 온 시간 여행자**\n\n주인공은 현대 사회에서 고통과 무력감에 직면하여 시간 여행 장치를 발견합니다. 이 장치를 통해 그녀는 미래로 시간을 이동하여 새로운 세계를 만날 수 있습니다.\n\n미래의 세계는 현대 사회와는 완전히 다른 형태를 가지고 있습니다. 기술 발전은 인간 생활을 혁명적으로 개선했으며, 사회 구성 또한 현대 사회와는 다른 방식으로 이루어져 있습니다.\n\n히로인은 미래의 세계에서 겪는 어려움과 도전을 직면합니다. 그녀는 새로운 문화와 관습에 적응하고, 미래인들과 소통하며, 자신의 위치를 찾는 과정을 경험합니다.\n\n히로인이 미래에서 온 시간 여행자는 인간의 가능성과 성장의 중요성을 강조합니다. 그녀는 미래의 기술과 문화에 도전하고, 새로운 목표를 설정하며 성장합니다. 또한, 시간은 가치가 크고, 사용하지 말고 가치 있게 활용해야 한다는 메시지를 전달합니다."],"references":[null,null]} 16 | {"id":16,"category":"글쓰기(Writing)","questions":["당신은 지구를 떠나 우주로 떠난 미래의 우주인입니다. 지구에 대한 그리움을 담아 우주인의 일기를 쓰려고 합니다. 우주인의 일기를 쓰기 위해서는 어떠한 접근 방법이 필요할지 생각해보고, 일기의 내용을 구체적으로 작성해보세요.","우주인의 일기를 쓰는 것이 지구인의 일기를 쓰는 것보다 어려운 점은 무엇인지 설명해보세요."],"outputs":["**우주인의 일기**\n\n우리, 지구를 떠나 우주에 도착했습니다. 이 새로운 가옥에서, 우리는 새로운 생활 방식과 문화를 만듭니다. 하지만, 우리의 마음은 지구에 남아 있는 가족과 친구들을 생각합니다.\n\n우리, 지구에 대한 그리움을 표현하고 싶습니다. 우리의 그리움은 단순한 단어로 표현하기보다는, 우주인으로서 지구에 대한 애정과 존중을 표현하고자 합니다.\n\n우리, 지구에 남아 있는 모든 생명체와 자연의 아름다움에 대해 생각합니다. 우리는 지구의 풍부하고 다양한 생명체들을 보호하고 지구 환경을 보호하는 것이 중요합니다.\n\n우리, 지구에 도착한 이후, 지구에 대한 관심과 책임감을 가지고 있습니다. 우리는 지구에 돌아올 때까지 지구에 대한 보호와 가치를 기억하고, 지구인들과 함께 지구의 미래를 만들도록 노력할 것입니다.","\n\n**해결 과정:**\n\n1. 주어진 정보를 정리합니다.\n2. 두 번째 해에 심은 나무 수를 계산합니다.\n3. 세 번째 해에 심은 나무 수를 계산합니다.\n4. 3년 동안 심은 총 나무 수를 계산합니다.\n\n**최종 답변:**\n\n2년 후에는 총 364그루의 나무를 심게 됩니다."],"references":[null,null]} 17 | {"id":17,"category":"글쓰기(Writing)","questions":["온라인 서비스에서 광고를 없애는 '프리미엄 요금제'가 회사 매출에 긍정적 영향을 일으킬 수 있다는 주제로 프리미엄 요금제 도입을 촉구하는 글을 작성해보아라.","프리미엄 요금제를 도입하면서 기존의 무료 서비스를 이용하던 사용자들이 어떠한 반응을 보일 수 있는지 예상해보아라."],"outputs":["**온라인 서비스에서 광고를 없애는 '프리미엄 요금제' 도입**\n\n**서론**\n\n온라인 서비스는 사용자 경험 개선과 광고 간섭을 피하기 위해 광고를 제거하는 방안을 고려해야 합니다. 이 연구는 온라인 서비스에서 광고를 없애는 '프리미엄 요금제' 도입을 촉구하고, 이에 따른 회사 매출 증가 효과를 분석합니다.\n\n**프리미엄 요금제 도입의 필요성**\n\n* 광고 간섭: 광고는 사용자 경험을 방해하고, 중요한 콘텐츠에 집중하기가 어렵니다.\n* 개인 데이터 보안: 광고는 개인 데이터 수집 및 분석에 사용자 정보를 제공할 위험이 있습니다.\n* 향상된 사용자 참여: 광고 없이는 더 집중하고 참여도 높은 사용자 경험을 제공할 수 있습니다.\n\n**프리미엄 요금제의 매출 영향**\n\n* 예상 고객 기반 확장: 프리미엄 요금제는 일반 사용자보다 가격에 민감하지 않는 고객 기반을 확장합니다.\n* 향상된 이용률: 광고 없이는 사용자가 서비스를 더 많이 이용할 가능성이 높아집니다.\n* 마케팅 비용 절약: 광고 비용을 절약하여 비용 효율성을 높입니다.\n\n**결론**\n\n온라인 서비스에서 광고를 없애는 '프리미엄 요금제' 도입은 사용자 경험 개선, 개인 데이터 보안 향상 및 매출 증가에 도움이 될 수 있습니다. 회사는 사용자 요구 분석, 경쟁 분석 및 시장 조사를 통해 적절한 프리미엄 요금제 모델을 개발하고, 효율적인 마케팅 전략을 수립하여 성공적으로 도입할 수 있습니다.","**예상 반응**\n\n* **부담감:** 일부 사용자는 프리미엄 요금제에 부담감을 느낄 수 있습니다.\n* **가치 감소:** 프리미엄 요금제를 도입하면서 서비스의 가치가 감소할 수 있습니다.\n* **사용자 이동:** 프리미엄 요금제를 도입하면서 사용자들이 다른 서비스로 옮길 수 있습니다.\n* **소득 불균형:** 프리미엄 요금제를 도입하면서 저소득 계층의 이용에 불균형이 생길 수 있습니다."],"references":[null,null]} 18 | {"id":18,"category":"글쓰기(Writing)","questions":["당신은 방금 역사에 남을법한 발견을 한 과학자입니다. 놀란 감정을 담아 동료 과학자에게 발견한 내용을 설명하는 이메일을 작성해보세요. 이메일은 '이보게! 제임스'로 시작해야 합니다.","만약에 이메일이 아닌 편지를 작성해야 하는 상황에서는 어떠한 부분을 다르게 작성할 수 있을지 생각해보고, 다시 작성해보세요."],"outputs":["**이보게! 제임스**\n\n안녕하세요, 제임스!\n\n오늘 저는 특별한 발견을 하고 싶어 드리고 싶습니다. 이번 연구 과정에서, 과학 역사에 중요한 발견을 하게 되었습니다.\n\n그 결과, 과학 발전의 역사에서 가장 중요한 이론 중 하나가 기존에 알려진 것과는 다른 방식으로 해석할 수 있다는 사실을 발견했습니다. 이 발견은 과학 발전의 이해에 새로운 시각을 제공하고, 과학자들에게 새로운 아이디어를 제공할 수 있습니다.\n\n이 발견의 자세한 내용은 아래에 기술했습니다.\n\n(발견 내용 기술)\n\n이 발견은 과학 역사에 새로운 관점을 제공하고, 과학 발전의 이해에 새로운 통찰력을 제공할 수 있습니다.\n\n저는 이 발견이 과학 발전의 미래에 어떻게 활용될 수 있을지 기대합니다. 이 발견을 통해 과학자들은 새로운 과학 이론과 기술을 개발하고, 인류의 생활 개선에 기여할 수 있을 것입니다.\n\n저는 이 발견을 공유하고 논의하기 위해 이메일을 드립니다. 이 발견이 과학 발전에 어떻게 기여할 수 있을지 함께 고민하고 논의하고 싶습니다.\n\n감사합니다.\n\n**[귀하의 이름]**","\n**[보내는 사람]**\n**[보내는 날짜]**\n\n**[수신자 이름]**\n**[수신자 직책]**\n**[기업 이름]**\n\n**제목: 이보게! 제임스**\n\n안녕하세요, 제임스!\n\n오늘 저는 특별한 발견을 하고 싶어 드리고 싶습니다. 이번 연구 과정에서, 과학 역사에 중요한 발견을 하게 되었습니다.\n\n그 결과, 과학 발전의 역사에서 가장 중요한 이론 중 하나가 기존에 알려진 것과는 다른 방식으로 해석할 수 있다는 사실을 발견했습니다. 이 발견은 과학 발전의 이해에 새로운 시각을 제공하고, 과학자들에게 새로운 아이디어를 제공할 수 있습니다.\n\n이 발견의 자세한 내용은 아래에 기술했습니다.\n\n(발견 내용 기술)\n\n이 발견은 과학 역사에 새로운 관점을 제공하고, 과학 발전의 이해에 새로운 통찰력을 제공할 수 있습니다. 이 발견을 통해 과학자들은 새로운 과학 이론과 기술을 개발하고, 인류의 생활 개선에 기여할 수 있을 것입니다.\n\n저는 이 발견이 과학 발전의 미래에 어떻게 활용될 수 있을지 기대합니다. 이 발견을 통해 과학자들은 새로운 과학 이론과 기술을 개발하고, 인류의 생활 개선에 기여할 수 있을 것입니다.\n\n저는 이 발견을 공유하고 논의하기 위해 이메일을 드립니다. 이 발견이 과학 발전에 어떻게 기여할 수 있을지 함께 고민하고 논의하고 싶습니다.\n\n감사합니다.\n\n**[귀하의 이름]**"],"references":[null,null]} 19 | {"id":19,"category":"글쓰기(Writing)","questions":["새로 오픈한 카페를 홍보하려고 합니다. 홍보 대상, 홍보 전략을 선정하고 대상을 설득할 수 있을 만한 홍보 메시지를 만들어보세요.","다른 홍보 대상을 선정하고, 그 대상에게 맞는 홍보 전략과 메시지를 작성해보세요."],"outputs":["## 홍보 대상\n\n* 주변 지역의 주민\n* 해당 지역의 학생\n* 근처의 사무소 및 기업 종사자\n\n## 홍보 전략\n\n* **온라인 광고:** 온라인 광고를 통해 다양한 채널을 통해 광고를 공개합니다.\n* **소셜 미디어:** 소셜 미디어를 통해 광고를 공개합니다.\n* **지역 매장:** 지역 매장을 통해 광고를 공개합니다.\n* **협력:** 지역 사업자와 협력하여 광고를 공개합니다.\n\n## 홍보 메시지\n\n* **편안한 분위기:** 편안한 분위기에서 흥미로운 시간을 보내는 공간을 제공합니다.\n* **맛있는 음식:** 다양한 음식을 제공하고 매일 새로운 음식을 추가합니다.\n* **친근한 서비스:** 친근한 서비스와 흥미로운 분위기를 제공합니다.\n* **가치:** 가치를 제공하여 고객에게 매력력을 주는 다양한 행사와 이벤트를 제공합니다.","**해결 과정:**\n\n1. **주어진 정보 정리:** 문제 해결의 첫 단계는 주어진 정보를 정리하는 것입니다. 이 문제에서 주어진 정보는 다음과 같습니다.\n- 첫해에 100그루를 심었고\n- 매년 전년도에 심은 나무의 수보다 20%씩 더 많은 나무를 심고\n- 2년 후에는 총 몇 그루의 나무를 심게 될까요?\n\n2. **두 번째 해에 심은 나무 수 계산:** 다음은 두 번째 해에 심은 나무 수를 계산하는 과정입니다.\n- 첫해보다 20% 증가\n- 100 + (100의 20%) = 100 + 20 = 120그루\n\n3. **세 번째 해에 심은 나무 수 계산:** 다음은 세 번째 해에 심은 나무 수를 계산하는 과정입니다.\n- 두 번째 해보다 20% 증가\n- 120 + (120의 20%) = 120 + 24 = 144그루\n\n4. **총합:** 3년 동안 심은 나무 수를 계산하여 총합을 계산합니다.\n- 첫해: 100그루\n- 둘째 해: 120그루\n- 셋째 해: 144그루\n- 총합: 100 + 120 + 144 = 364그루\n\n따라서, 2년 후(즉, 3년째)에는 총 364그루의 나무를 심게 됩니다."],"references":[null,null]} 20 | {"id":20,"category":"글쓰기(Writing)","questions":["기자인 당신은 한 게임 A를 수년간 플레이해오며 게임 A에 대한 광범위한 지식을 가지고 있습니다. 최근 출시된 게임 B가 게임 A의 핵심 요소를 모방했다는 논란이 있습니다. 게임 B의 개발사에 인터뷰를 요청하는 과정에서, 게임 B의 개발자들로부터 그들의 의도와 게임 디자인 결정에 대한 깊이 있는 이해를 얻고자 합니다. 이를 바탕으로 게임 B의 개발사에 인터뷰를 요청하는 메일을 작성해보세요.","인터뷰 요청 메일을 받은 게임 B의 개발사는 어떠한 반응을 보일 수 있을지 예상해보세요."],"outputs":["**[귀하의 이름]**\n**[귀하의 주소]**\n**[귀하의 전화번호]**\n**[귀하의 이메일 주소]**\n\n**[일시]**\n\n**[개발사 이름]**\n**[개발사 주소]**\n\n**제목: 게임 B 개발사에 대한 인터뷰 요청**\n\n**내용:**\n\n안녕하세요. 저는 게임 A에 대한 광범위한 지식을 가지고 있는 [귀하의 이름]입니다. 최근 출시된 게임 B가 게임 A의 핵심 요소를 모방했다는 논란이 있습니다.\n\n게임 B의 개발사에 대한 인터뷰를 요청드립니다. 게임 B의 개발자들로부터 그들의 의도와 게임 디자인 결정에 대한 깊이 있는 이해를 얻고자 합니다.\n\n저는 게임 B의 개발사에 대한 인터뷰를 다음과 같은 주제로 진행할 예정입니다.\n\n* 게임 B의 개발 과정에 대한 개요\n* 게임 B의 주요 특징 및 디자인 원점\n* 게임 B가 게임 A와 차이점에 대한 개발자의 생각\n* 게임 B의 미래 계획\n\n저는 당신의 시간을 부탁드립니다. 흥미로운 인터뷰를 기대합니다.\n\n**[귀하의 이름]**","**개발사의 반응 예상:**\n\n* **긍정적인 반응:** \n * 개발사는 인터뷰 요청을 수락하고, 게임 B의 개발 과정과 디자인 결정에 대한 자세한 설명을 제공할 것입니다. \n * 개발사는 게임 B가 게임 A를 모방하지 않았으며, 독자적인 게임 경험을 제공한다고 주장할 것입니다.\n\n\n* **부정적인 반응:** \n * 개발사는 인터뷰 요청을 거부하거나, 게임 A와 게임 B 간의 유사성에 대해 공식적으로 부인할 것입니다. \n * 개발사는 게임 B가 게임 A의 기술적 요소를 사용한 것 같다고 주장할 수 있습니다.\n\n\n* **무관계한 반응:** \n * 개발사는 인터뷰 요청에 응답하지 않거나, 간단히 응답하여 관심을 기울이지 않을 수 있습니다."],"references":[null,null]} 21 | {"id":21,"category":"글쓰기(Writing)","questions":["자본론을 쓴 카를 마르크스가 오늘날의 비트코인 폭등과 같은 경제 현상을 어떻게 바라보았을지 상상해보고, 그의 관점에서 현대 사회의 문제를 분석해라.","카를 마르크스의 관점에서 현대 사회의 문제를 분석하는 것이 어려운 점은 무엇인지 설명해라."],"outputs":["**카를 마르크스의 비트코인 폭등 분석**\n\n카를 마르크스는 생산 관계의 구조와 경제 성장의 한계에 주목하여 현대 사회의 문제를 분석했습니다. 그의 관점에서 비트코인 폭등은 다음과 같은 관점에서 이해할 수 있습니다.\n\n**1. 중앙 은행 중앙화의 위험**\n\n* 마르크스는 중앙 은행 시스템이 경제 성장의 제약 요인이라고 주장했습니다.\n* 비트코인 폭등은 중앙 은행의 중앙화를 피하고 분산 화폐 시스템을 통해 경제 제어를 회피하려는 관점에서 해석할 수 있습니다.\n\n**2. 생산 관계의 왜곡**\n\n* 마르크스는 생산 관계가 왜곡되면서 생산자와 소비자가 혜택을 공유하지 못한다고 주장했습니다.\n* 비트코인 폭등은 디지털 화폐 시스템을 통해 생산자와 소비자가 직접 거래하고 가격 결정에 참여하여 생산 관계의 왜곡을 완화하려는 관점에서 해석할 수 있습니다.\n\n**3. 경제 성장의 한계**\n\n* 마르크스는 경제 성장은 한계가 있다고 주장했습니다.\n* 비트코인 폭등은 경제 성장 모델에 새로운 모델을 제공하고 기존 모델의 한계를 뛰어나 새로운 성장 패턴을 제시하려는 관점에서 해석할 수 있습니다.\n\n**4 viciss위성**\n\n* 마르크스는 사회 발전의 역사에서 기술 발전과 경제 체계 간의 관계를 중요하게 여겼습니다.\n* 비트코인 폭등은 디지털 기술의 발전과 경제 체계 간의 새로운 관계를 형성하여 새로운 경제 모델을 제시하려는 관점에서 해석할 수 있습니다.","\n\n**마르크스의 비트코인 폭등 분석에 대한 답변**\n\n카를 마르크스의 관점에서 비트코인 폭등을 분석하면 다음과 같은 몇 가지 주요 사고점이 있습니다.\n\n* **중앙 은행 중앙화의 위험:** 비트코인 폭등은 중앙 은행의 중앙화를 피하고 분산 화폐 시스템을 통해 경제 제어를 회피하려는 관점에서 해석할 수 있습니다.\n* **생산 관계의 왜곡:** 비트코인 폭등은 디지털 화폐 시스템을 통해 생산자와 소비자가 직접 거래하고 가격 결정에 참여하여 생산 관계의 왜곡을 완화하려는 관점에서 해석할 수 있습니다.\n* **경제 성장의 한계:** 비트코인 폭등은 경제 성장 모델에 새로운 모델을 제공하고 기존 모델의 한계를 뛰어나 새로운 성장 패턴을 제시하려는 관점에서 해석할 수 있습니다.\n* **경위성:** 비트코인 폭등은 기술 발전과 경제 체계 간의 새로운 관계를 형성하여 새로운 경제 모델을 제시하려는 관점에서 해석할 수 있습니다.\n\n마르크스의 관점에서 현대 사회의 문제를 분석할 때, 그는 경제적 불안, 사회 불안, 환경적 불안 등 다양한 문제를 고려하여 다음과 같은 해결 방안을 제시했습니다.\n\n* **공식적 경제:** 공식적 경제를 통해 경제 성장을 동반하고 취약 계층의 참여를 증진시키는 것 같습니다.\n* **사회적 관계:** 사회적 관계를 강화하여 공동체 의식을 형성하고 불평등을 감소시키는 것 같습니다.\n* **환경적 보호:** 환경적 보호를 강화하여 자원 고갈과 기후 변화를 해결하는 것 같습니다."],"references":[null,null]} 22 | {"id":22,"category":"코딩(Coding)","questions":["시간 복잡도를 어떻게 구할 수 있는지 설명해주고, 많이 쓰이는 알고리즘 중에 최적화를 통해 시간 복잡도를 줄인 예시를 알려줘.","공간 복잡도라는 용어도 있던데 뭐가 다른 거야?"],"outputs":["**시간 복잡도 계산**\n\n시간 복잡도는 알고리즘의 실행 시간을 예측하는 측정입니다. 일반적으로 시간 복잡도는 O(n), O(log n), O(1)과 같은 표기로 표현합니다. \n\n* **O(n)**: 데이터의 크기가 n에 비례하여 실행 시간이 증가\n* **O(log n)**: 데이터의 크기가 n에 비례하지 않고 로그함수적으로 증가\n* **O(1)**: 데이터의 크기가 상수(상수는 1 이하의 고정 값)에 비례하여 실행 시간이 일정\n\n\n**최적화**\n\n최적화는 알고리즘의 실행 시간을 줄이는 기술입니다. 예를 들어, 반복문을 사용하여 같은 작업을 수행할 때, 반복문을 줄이는 최적화가 가능합니다. \n\n**시간 복잡도 최적화 예시**\n\n다음은 시간 복잡도를 줄인 예시입니다. \n\n**원래의 반복문** \n```python\nfor i in range(n):\n for j in range(i+1, n):\n # 작업 수행\n```\n\n**최적화** \n```python\nfor i in range(n):\n if i > 0 vicissuf(n\/2): \n break\n for j in range(i+1, n):\n # 작업 수행\n```\n\n**효율성 향상** \n\n* 위 예시에서 반복문 횟수를 절약하여 시간 복잡도를 줄였습니다. \n* 반복문 횟수를 절약한 알고리즘은 더 효율적으로 실행할 수 있습니다.\n\n\n**결론** \n\n최적화를 통해 시간 복잡도를 줄이는 것은 알고리즘의 성능을 향상하는 중요한 요소입니다. 위 예시에서 볼 수 있듯이, 반복문 횟수를 줄이는 최적화는 시간 복잡도를 효율적으로 줄이는 데 도움이 됩니다.","**공간 복잡도** \n\n공간 복잡도는 알고리즘이 실행하는 동안 사용한 메모리 양을 예측하는 측정입니다. 공간 복잡도는 일반적으로 O(n), O(log n), O(1)과 같은 표기로 표현합니다. \n\n**공간 복잡도가 높은 이유** \n\n* 자료 구조가 복잡하여 많은 메모리를 사용\n* 반복문 횟수가 많아 많은 메모리를 사용\n* 재귀 호출 깊이가 깊어 많은 메모리를 사용\n\n\n**공간 복잡도 최적화** \n\n공간 복잡도를 줄이는 기술은 다음과 같습니다. \n\n* 자료 구조를 간소화 \n* 반복문 횟수를 줄이기 \n* 재귀 호출 깊이를 줄이기 \n\n\n**공간 복잡도 최적화 예시** \n\n다음은 공간 복잡도를 줄인 예시입니다. \n\n**원래** \n```python\ndef factorial(n):\n if n == 0 vicissuf(n): \n return 1\n else: \n return n * factorial(n-1)\n```\n\n**최적화** \n```python\ndef factorial(n):\n result = 1\n for i in range(1, n + 1): \n result *= i\n return result\n```\n\n**효율성 향상** \n\n* 위 예시에서 재귀 호출을 사용하지 않고 반복문을 사용하여 공간 복잡도를 줄였습니다. \n* 반복문을 사용한 알고리즘은 더 효율적으로 공간을 사용합니다."],"references":[null,null]} 23 | {"id":23,"category":"코딩(Coding)","questions":["'XSS가 무엇이고 어떻게 악용될 수 있는지'를 설명하는 웹사이트의 HTML을 작성해보세요.","XSS를 방지하는 방법은 무엇이 있나요? 이번에는 HTML이 아닌 마크다운 형식으로 작성해주세요."],"outputs":["```html\n

XSS (Cross-Site Scripting)란 무엇일까?<\/h2>\n\nXSS(Cross-Site Scripting)는 공격자가 웹사이트에 악성 코드를 포함하여 다른 사용자들의 정보를 노출하거나 악용하는 공격 기술입니다.\n\n

XSS 공격은 다음과 같은 방법으로 발생할 수 있습니다:<\/p>\n\n- 사용자가 웹사이트에서 제공하는 양식에서 위조된 데이터를 입력\n- 공격자가 웹사이트에 악성 코드를 포함한 콘텐츠를 공유\n\n

XSS 공격의 예시:<\/p>\n\n- 사용자가 웹사이트에 다음과 같은 메시지를 입력: `\"alert('XSS 공격!')\"`\n- 이 메시지는 웹사이트에 다음과 같은 코드로 변환됩니다: `