개요
•
LG 질문별 레포트 현재까지 버전을 공유드립니다.
•
현재 chat 타입만 인사이트를 전부 뽑은 상태입니다.
구글 Docs
데이터
•
data
•
질문별 question_id 정리(국가별로 id가 달라서 정리했습니다)
코드
•
q_list에 문항 넣어서 결과 보면서 작업했습니다.
•
18번 문항만 토큰 초과 에러나서 sampling 해서 토큰 줄였습니다
•
gemini-2.5-pro가 입력 100만 토큰이라 모델 바꾸는 것도 좋을 것 같습니다(저는 제미나이랑 gpt 고민하다가 이전에 서던포스트 할 때 gpt가 결과가 좋았어서 gpt로 했습니다)
import pandas as pd
from openai import OpenAI
from tqdm import tqdm
import json
df = pd.read_excel("202509_Curi_integrated Raw(SP.FR.UK).xlsx")
q_df = pd.read_excel("question_info.xlsx")
client = OpenAI(api_key="")
def gen_isight(user_info, survey_data):
prompt = f"""
다음은 LG에서 진행한 가전 서비스 설문 결과임.
[유저 정보]
{user_info}
[설문 결과]
{survey_data}
## 작성 지침
1. 설문 결과를 바탕으로 **인사이트 리포트**를 2~3문단으로 작성.
2. 각 문단에는 **소제목(## 수준 헤딩)**을 붙일 것.
3. 반드시 설문 응답의 **원문 인용**을 포함할 것. 단, 각 문단마다 1~2개의 인용만 제시할 것.
인용은 "한글 번역" (원문) 형태로 병기할 것.
예: "저는 직접 보고 시험해 보고 싶습니다."(Parce que je veux voir et tester les appareils en personne)
4. 리포트는 반드시 **국가별 비교**를 포함할 것.
5. 문체는 **공식 보고서 양식**을 따를 것. (객관적, 간결한 서술형, '~함/~임' 체)
6. 출력은 **Markdown 형식**으로 줄 것.
7. **시사점은 작성하지 말 것.**
8. 마지막에 2~3문장으로 요약문을 작성할 것.
9. 리포트는 **한글로 작성**할 것.
"""
response = client.chat.completions.create(
model="gpt-5",
messages=[
{"role": "system", "content": "You are a professional market research analyst. Always answer in Markdown."},
{"role": "user", "content": prompt}
]
)
result = response.choices[0].message.content.strip()
print(result) # 디버깅용
try:
return result
except:
return {"category": "기타", "status": "error"} # fallback
# -----------------------------
# DataFrame 처리
# -----------------------------
result_list = [] # 결과 담을 리스트
user_df = df[df['question_type']=='single-choice']
user_info = str(user_df[['Country', 'useridx', 'question_text', 'answer_text']].values.tolist())
q_list = ["Q24"]
for q in tqdm(q_list):
temp = q_df[q_df['Q_no']==q][['question_id', 'question_text_ko']]
q_ids = temp['question_id'].values.tolist()
q_txt = temp['question_text_ko'].values[0]
cand_df = df[df["question_id"].isin(q_ids)].copy()
# cand_df = cand_df.sample(frac=0.85, random_state=42) #18번 문항만 토큰 초과 에러나서 샘플링 사용
survey_data = str(cand_df[['Country', 'useridx', 'question_text', 'answer_text']].values.tolist())
result = gen_isight(user_info, survey_data)
result_dic = {"question_text_ko":"q_txt", "result":result}
result_list.append(result_dic)
Python
복사
