TIL/내일배움캠프

나는 AI를 잘 사용하고 있을까?

Kou_ 2026. 4. 23. 21:53

[내일배움캠프] QA/QC_6기 - 사전캠프 4일차

  • TIL
    • SQL로 데이터 포맷 변경 및 조건 걸기
    • AI 프롬프트 엔지니어링
  • To-Do List
    1. SQL 강의 수강 (Chap3 전체)
    2. AI Literacy 강의 수강 (Chap1-4)
    3. SQL 및 AI Literacy 강의 과제 수행

SQL

업무 필요한 문자 포맷이 다를 때, SQL로 가공하기

  • 특정 문자를 다른 문자로 바꾸기
    • REPLACE : 칼럼의 특정 값을 변경
      replace(바꿀 칼럼, 현재 값, 바꿀 값)
  • 원하는 문자만 남기기
    • SUBSTR (또는 SUBSTRING) : 칼럼에서 특정 문자만 골라서 조회
      substr(조회 할 칼럼, 시작 글자 위치, 글자 수)
  • 여러 칼럼의 문자를 합치기
    • CONCAT : 여러 칼럼의 값을 하나로 합칠 수 있는 기능
      concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, )
    • 붙일 수 있는 문자 종류 : 칼럼, 한글, 영어, 숫자, 기타 특수문자

조건에 따라 포맷을 다르게 변경해야 한다면

  • 조건에 따라 다른 방법을 적용하고 싶을 때 - IF 문 기초
    • IF : 원하는 조건을 충족할 때 적용할 방법과 충족하지 않을 때 적용할 방법을 지정
      if(조건, 조건을 충족할 때, 조건을 충족하지 않을 때)
  • 조건을 여러가지 지정하고 싶을 때 - CASE 문 기초
    • CASE : 각 조건별로 적용 할 값을 지정 가능 (IF 문을 여러번 사용한 효과)
      case when 조건1 then 값1(문자, 데이터 등) → 1번 조건
      when 조건2 then 값2 → 2번 조건 (그 이상도 가능)
      else 값3지정한 조건들 외의 경우 (나머지)
      endCASE 문의 끝을 지정

예제

  • 음식 단가, 음식 종류 별 음식점의 그룹 나누기 (이름도 같이 출력)
    select
    restaurant_name, price/quantity "단가", cuisine_type, order_id,
    case when (price/quantity <5000) and cuisine_type='Korean' then '한식1'
    when (price/quantity between 5000 and 15000) and cuisine_type='Korean' then '한식2'
    when (price/quantity > 15000) and cuisine_type='Korean' then '한식3'
    when (price/quantity <5000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식1'
    when (price/quantity between 5000 and 15000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식2'
    when (price/quantity > 15000) and cuisine_type in ('Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '아시아식3'
    when (price/quantity <5000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타1'
    when (price/quantity between 5000 and 15000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타2'
    when (price/quantity > 15000) and cuisine_type not in ('Korean', 'Japanese', 'Chinese', 'Thai', 'Vietnamese', 'Indian') then '기타3' end "식당 그룹"
    from food_orders
 

실습 예제

  • 배달 시간이 늦었는지 판단하는 값을 만들기
    • 조건 : 주중 25분 이상, 주말 30분 이상
      select order_id, restaurant_name, day_of_the_week, delivery_time,
      case when day_of_the_week='weekday' and delivery_time>=25 then "Late"
      when day_of_the_week='weekend' and delivery_time>=30 then "Late"
      else "On-time" end "지연 여부"
      from food_orders

과제

    1. sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요.
      select name, track
      from sparta_students
    2. sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요.
      select *
      from sparta_students
      where track<>'Unity'
    3. sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해 주세요.
      select *
      from sparta_students
      where enrollment_year in(2021, 2023)
    4. sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 'A'인 학생의 입학년도를 선택하는 쿼리를 작성해주세요.
      select *
      from sparta_students
      where track='Node.js' and grade='A'
    5. team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요.
      select name
      from team_projects
      where aws_cost>=40000
    6. team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요. 단, start_date < '2023-01-01' 조건을 사용하지 말고 쿼리를 작성해주세요.
      select *
      from team_projects
      where start_date in(2022)
    7. team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요.
      select *
      from team_projects
      where curdate() between start_date and end_date
    8. team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요.
      select name, datediff(end_date, start_date) working_days
      from team_projects
    9. lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요. 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)
      select name, rating, rank() over (order by rating desc)
      from lol_users
    10. lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요.
      select name
      from lol_users
      order by join_date desc
      limit 1
    11. lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요.
      select name
      from lol_users
      order by region, rating desc
    12. lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요.
      select region, avg(rating) "평균 레이팅"
      from lol_users
      group by region

AI Literacy

프롬프트 기초 - AI에게 잘 묻는 법

  • 프롬프트란?
    LLM은 사람의 언어를 인식하고 답변하는 AI
    LLM에게 입력하는 모든 문장, 지시문 = '프롬프트'
  • 프롬프트의 요소
    • Instruction (지시) : LLM이 수행해야 하는 명령
    • Input Data (입력 값) : LLM이 받아들일 값 (그림, 글 등)
    • Context (문맥) : 추가적인 정보, 어조, 말투
    • Output Indicator (출력 지시자) : 출력 틀, 양식
    • Example (예시) : 사용자가 원하는 추가적인 예시
    • 항상 이 구성 요소가 적용되진 않는다.
  • 프롬프트 요소와 매개변수 요소는 다르다.
    • 자유도(temperature) : LLM의 답변 자유도를 설정하는 값
      • 자유도가 너무 높을 경우 → 환각(holluciation) 발생 가능성 ↑
      • 자유도가 너무 낮을 경우 → 추론 능력 ↓
      • 간접적으로 이와 같은 현상이 발생할 수 있음
    • 최대 토큰(token) : LLM이 소화할 수 있는 최대 토큰 수
      • 토큰 : LLM이 문장, 단어, 글자, 문장 부호 등을 의미 단위로 쪼갠 언어 처리의 가장 작은 조각
      • 토큰 수 ↑ → GPU 부담 ↑, 토큰 수 ↓ → 답변 가능한 문장 길이 ↓

프롬프트 엔지니어링 (Prompt Engineering)

  1. Zero-Shot Prompting : 모델에 예시 없이 원하는 작업을 지시하여, 사전 학습된 일반적인 지식만으로 문제를 해결하는 방법
    • ex) 지시문 : 1 더하기 1은?
    • 장점 : 별도의 학습을 수행하지 않고 지시문만 명료하게 작성하면 되므로 사용자 입장에서 직관적이고 간편
    • 단점 : 오로지  LLM의 기존 학습 내용에 의존 
  2. Few-Shot Prompting : 프롬프트 내에 소수의 관련 예시를 포함시켜서 AI 모델의 성능을 향상시키는 기법
    • ex) 지시문 :  [예시1] 원문 : "오늘은 금요일이다." / 출력 : "내일은 토요일이다"
                                      원문 : "오늘은 수요일이다." / 출력 : "내일은 목요일이다."
    • 장점 : 예시를 포함하여 다음 출력 결과를 예상 가능
    • 단점 : 예시가 명확해야하며 정확한 답변을 원할수록 더 많은 예시와 예외 처리가 필요
  3. Chain-of-Thought Prompting (CoT, 생각의 사슬) : 복잡한 문제를 해결할 때, 정답을 바로 제시하는 대신 사고 과정을 단계별로 거쳐 추론하도록 유도하는 방식
    • ex) 지시문 : 아래 질문에 대해 생각의 흐름을 단계별로 적은 후 결론을 말하라.
                         "연필 한 다스는 12개의 연필로 구성되어 있다. 그렇다면 연필 4 다스는 몇 개의 연필인가?"
    • 장점 : LLM의 추론 과정을 보고 만약 잘못된 부분이 있으면 피드백하기 용이함
    • 단점 : 필요 없는 내용까지 답변이 방대하질 수 있으며, 답변의 후처리 가공을 필요로 할 수 있음 
  4. Tree of Thoughts (ToT, 생각의 나무) : 복잡한 문제를 해결하는 과정을 나무와 같이 여러 가지 가능성으로 가지를 뻗듯이 탐색하고 최적의 경로를 찾는 방식
    • 답변의 수를 제한하는 등 추가적인 조건을 제시하는 것이 좋음
    • ex) 지시문 : 다음 문제를 tree of thoughts 방식으로 해결하라.
    • 장점 : 여러 해결책을 구할 수 있음
    • 단점 : 어느 답이 가장 적절한지 환각은 없는지 검증을 해야하거나 검증이 어려움
  5. Structured Prompting (구조화 지시) : 구조를 갖춰서 절차지향적으로 프롬프트를 작성하는 방법
    • ex) 지시문 : 다음 글을 아래 구조에 맞춰 요약하라.
      [요약]
      - 핵심 문장 : 
      - 주요 포인트 : 
      - 결론 : 
      글 : "기원전 4025년 메소포타미아... (중략) ..."
    • 장점 : LLM이 절차를 수행하는데 가장 직관적인 방법
    • 단점 : 사람이 이해하는데 초점을 두기보다 기계의 입장에서 프롬프트를 이해하도록 작성하는데 초점을 둬야함
  6. Generated Knowledge Prompting (지식 생성) : 응답 정확도와 추론 능력을 향상시키기 위한 프롬프트 엔지니어링 기법
    • LLM의 추론 과정을 한 번 더 점검 하도록 도울 수 있음 (few-shot 기법도 함께 사용하면 좋음)
    • ex) 지시문 : 먼저 '중학생 수준의 기후지식'을 5개 생성하라. 그 후 그 지식을 사용해 아래 질문에 답하라.
                        [질문] "지구 온난화가 왜 극지방의  빙하 감소로 이어지는가?"
    • 장점 : 모델이 지식을 정리하며 사고 기반을 만들기 때문에 정확도와 추론력 향상에 도움
    • 단점 : 생성된 지식이 부정확할 경우 잘못된 정보를 기반으로 답이 더 크게 틀릴 수 있는 위험이 존재

Quiz! 다음 중 생성형 LLM의 추론 능력을 이용하는 프롬프트 기법은? (4번)

  1. Structured prompt → 구조화 기반의 프롬프트 기법
  2. Grok → LLM의 이름
  3. RAG → Retrieval-Augment Generation (검색 증강 생성)
  4. CoT

Quiz! 다음 정의를 말해주세요.

  1. (단답형) 구조화된 프롬프트 엔지니어링 방법은? : Structured prompt
  2. (단답형) LLM이 문장을 나누는 기본 단위는? : 토큰
  3. (서술형) 프롬프트 엔지니어링이란?
    LLM이 인간의 언어를 더 잘 인식하도록 지시문을 작성하여 사용자가 원하는 답변을 얻을 수 있도록 하는 방법
    LLM 모델의 정체성을 부여하고 사용자의 적합성을 성숙시키는 기법 (강사님 답변)

당일 과제. 오늘 배운 프롬프트 기법들의 예시들을 내 직무 관련 업무와 연관 지어 TIL에 작성해봅시다.

    • 내 지시문
      너는 반도체 품질관리 직무 경력 10년의 베테랑이야.
      아래 상황에 대한 답변을 생각의 흐름을 단계 별로 양식에 맞춰 작성하고 결론을 알려줘.
      상황 : "만약 반도체 패키징 공정에서 지속적으로 동일한 불량이 검출된다면 이를 검출하고 예방하기 위해서는 어떻게 해야 할까?"
       [양식]
      1. 문제 상황
      2. 문제 식별 및 과정
      3. 문제 해결 방법 및 재발 방지 대책
      4. 결론 
    • GPT 답변


출처

내일배움캠프 교육 자료

'TIL > 내일배움캠프' 카테고리의 다른 글

쿼리로 데이터베이스 다루기  (0) 2026.04.27
AI와 대화? 프롬프팅  (0) 2026.04.26
GPT는 LLM?  (1) 2026.04.22
AI란 무엇인가?  (0) 2026.04.21
JD 분석이란?  (1) 2026.04.21