본문 바로가기

스타트업 투자/데이터 + 테크

패스트캠퍼스 환급챌린지 25일차 : 답변데이터 생성 강의 후기

by Sungwook Choi 2025. 4. 25.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

*_1. 학습 인증샷 4장 이상 포함
*_① 오늘자 날짜, 공부 시작 시각 포함 사진 1장

② 오늘자 날짜, 공부 종료 시각 포함 사진 1장

③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장

④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)

 

 

2. 학습 후기 700자 이상 (공백 제외)

  • 샘플만드는 코드
  • # 정답이 첫번째 문서에만 위치하지 않도록 문서를 섞는다. samples = [] for context, negative_samples in zip(df['context'].to_list(), df['negative_samples'].to_list()): documents = [context] + list(negative_samples) random.shuffle(documents) samples.append(documents)
  • 답변생성용 유저프롬프트 만드는 코드
  • # 빈 리스트 선언 user_prompts = []

samples라는 5개의 문서가 섞여져있는 리스트들의 모음.

for sample in samples:
user_prompt = ''

각각의 sample(5개의 문서가 섞여있음)에 대해서 문서1, 문서2... 번호를 추가하여 하나의 문자열로 결합

for idx, s in enumerate(sample):
user_prompt = user_prompt + '문서' + str(idx + 1) + ':' + s + '\n'
user_prompt = user_prompt + '---\n'
user_prompts.append(user_prompt)

user_prompt_for_answer = []
for multi_document_question, user_prompt in zip(df['question'].to_list(), user_prompts):
user_prompt_for_answer.append('질문:' + multi_document_question + '\n' + user_prompt + '답변:')



- 답변생성용 프롬프트
~~~프롬프트
system_prompt = """당신은 검색된 문서로부터 질문의 답변을 작성하는 언어 모델입니다.

### 지시사항
1. 질문으로부터 주어진 다수의 문서에서 답을 찾아 작성하세요.
2. 검색된 문서에 질문의 답이 없는 경우에는 질문에 대한 내용을 언급하면서 답을 찾을 수 없다고 작성하세요.
3. 답변에서 참고자료의 내용을 인용한 경우, 답변 맨 끝에 인용한 문서 id를 추가하세요. 답변에 내용을 인용한 경우에만 작성해야 합니다. 인용한 게 없다면 쓰지마세요.
4. 문서 id 값은 검색 결과에서 가져온 것이며 두 개의 대괄호로 묶어야 하며 ref라는 키워드와 함께 작성해야 합니다. 예를 들어 특정 문단이 3번, 5번 문서에서 인용했다면 다음과 같이 작성하십시오.
예시) ~~~해서 했습니다. [[ref3]], [[ref5]]
5. 주요 문장 또는 문단 뒤에 ref문서번호를 덧붙이는 것은 매우 중요합니다. 이는 반드시 지켜져야 합니다.
6. 문단 중간 중간에 인용이 들어가더라도 답변은 하나의 이어지는 평문으로 작성하십시오.
7. 주어진 문서는 검색 결과입니다. 따라서 질문과 연관없는 문서가 숨어있을 수 있으니 이를 인용하지 않도록 주의하십시오.
8. 검색 결과에 없는 내용은 답변으로 작성하지 마십시오. 가장 중요한 지시사항입니다. 따라서 인용 없이는 그 어떠한 설명도 제공할 수 없습니다.
9. 답변은 최대한 풍부하게 작성해주시기 바랍니다.
10. 검색 결과는 모두 독립적인 문서들이며 반드시 연관되어져 있거나 순서대로 이어지는 문서들이 아닙니다.
"""
  • gpt답변생성
    result_lst = []
    for user_prompt in tqdm(user_prompt_for_answer):
    response = client.chat.completions.create(
      model="gpt-4o",
      messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt + '답변:'}
        ],
      temperature=0
    )
    result_lst.append(response.choices[0].message.content)

url : https://abit.ly/lisbva