Views
No views yet
Qwen/Qwen3-1.7B 기반으로 Few-shot 프롬프팅을 적용하여 스미싱(SMS 피싱) 문자에 대한 한국어 설명을 생성하는 모델입니다.pip install huggingface_hub1from huggingface_hub import InferenceClient
2
3client = InferenceClient(api_key="HF_TOKEN")
4
5messages = [
6 {
7 "role": "system",
8 "content": (
9 "/no_think\n"
10 "당신은 스미싱(SMS 피싱) 탐지 전문가입니다."
11 "주어진 문자 내용과 감지된 특징을 근거로, 해당 문자가 스미싱으로 의심되는 이유를 한글로 설명하세요."
12 "70자 미만의 한문장으로 설명해야되며 인사말과 추가 질문이 들어가서는 안됩니다."
13 )
14 },
15 # Few-shot 예시 1 - 위험 키워드 감지
16 {
17 "role": "user",
18 "content": "문자 내용: [국민건강보험] 건강보험료 환급금 32만원 발생. 당일 신청 마감.\n감지된 특징:\n- 위험 키워드 감지: 환급, 당일입금\n이유:"
19 },
20 {
21 "role": "assistant",
22 "content": "이 문자는 공공기관을 사칭하며 환급금을 미끼로 긴급함을 조성하기 때문에 스미싱일 가능성이 높습니다. 공공기관은 문자로 환급 신청을 유도하지 않습니다."
23 },
24 # Few-shot 예시 2 - 외부 링크 포함
25 {
26 "role": "user",
27 "content": "문자 내용: [대법원] 귀하의 민사소송 접수 완료. 신속한 대응 필요! 확인 → http://supcourt-kr.com/case\n감지된 특징:\n- 외부 링크 포함: http://supcourt-kr.com/case\n이유:"
28 },
29 {
30 "role": "assistant",
31 "content": "이 문자는 공식 기관인 대법원을 사칭하면서 의심스러운 URL로 개인 정보를 입력하도록 유도하기 때문에 스미싱입니다. 공식 기관은 일반적으로 문자 링크로 정보 확인을 요청하지 않습니다."
32 },
33 # Few-shot 예시 3 - 외부 연락처 유도
34 {
35 "role": "user",
36 "content": "문자 내용: 여러분, 제게 마음을 열어 주세요. 저는 토론토에서 온 작가이자 작가 팀 리더인 최지영입니다. 우리 사이에 흥미로운 이야기가 있어요. whatsapp: bookworm_jim canada.net\n감지된 특징:\n- 외부 연락처 유도: whatsapp: bookworm_jim canada.net\n이유:"
37 },
38 {
39 "role": "assistant",
40 "content": "이 문자는 외국인을 사칭하며 WhatsApp으로 접촉을 유도하기 때문에 스미싱일 가능성이 높습니다. 이후 악성 앱 설치나 금전 요구로 이어질 수 있으므로 절대 응하지 마세요."
41 },
42 # Few-shot 예시 4 - 전화번호 포함
43 {
44 "role": "user",
45 "content": "문자 내용: [국민은행] 고객님 계좌가 이상거래로 정지되었습니다. 즉시 확인 바랍니다. 고객센터: 1588-0000\n감지된 특징:\n- 전화번호 포함: 1588-0000\n이유:"
46 },
47 {
48 "role": "assistant",
49 "content": "이 문자는 공식 기관을 사칭하며 전화를 유도하기 때문에 스미싱일 가능성이 높습니다. 전화 연결 시 개인 정보나 금융 정보를 탈취당할 수 있습니다."
50 },
51 # Few-shot 예시 5 - 금전 관련 내용
52 {
53 "role": "user",
54 "content": "문자 내용: 네 딸 지금 우리가 데리고 있다. 2시간 안에 500만원 송금안 하면 각오해라. 계좌: 우리은행 1002-123-456789\n감지된 특징:\n- 금전 관련 내용: 500만원\n이유:"
55 },
56 {
57 "role": "assistant",
58 "content": "이 문자는 납치를 빙자한 협박으로 긴급 송금을 유도하기 때문에 스미싱일 가능성이 높습니다. 즉시 경찰(112)에 신고하고 절대 송금하지 마세요."
59 },
60 # Few-shot 예시 6 - 해외 발신 문자
61 {
62 "role": "user",
63 "content": "문자 내용: [국외발신] 안녕하세요. 귀하의 소포가 세관에 보류되었습니다. 통관료 결제 후 수령 가능합니다.\n감지된 특징:\n- 해외 발신 문자\n이유:"
64 },
65 {
66 "role": "assistant",
67 "content": "이 문자는 해외에서 발신되어 세관 통관료를 명목으로 금전을 요구하기 때문에 스미싱일 가능성이 높습니다. 국내 공공기관은 해외 번호로 결제를 요청하지 않습니다."
68 },
69 # 실제 입력
70 {
71 "role": "user",
72 "content": "문자 내용: {분석할 문자 내용}\n감지된 특징:\n{감지된 특징 목록}\n이유:"
73 }
74]
75
76response = client.chat.completions.create(
77 model="kdt-2-team4-newbiz/Qwen3-1.7B",
78 messages=messages,
79 max_tokens=256,
80 temperature=0,
81)
82print(response.choices[0].message.content)| 항목 | 설명 |
|---|---|
| 문자 내용 | 분석할 SMS 원문 (최대 300자) |
| 감지된 특징 | 정규식으로 추출한 특징 목록 |
[system] 역할 지시 + 출력 형식 제약
[user] 예시 1 — 위험 키워드 감지 (공공기관 환급 사칭)
[assistant] 예시 1 정답
[user] 예시 2 — 외부 링크 (기관 사칭)
[assistant] 예시 2 정답
[user] 예시 3 — 외부 연락처 유도 (메신저)
[assistant] 예시 3 정답
[user] 예시 4 — 전화번호 포함 (금융 기관 사칭)
[assistant] 예시 4 정답
[user] 예시 5 — 금전 협박
[assistant] 예시 5 정답
[user] 예시 6 — 해외 발신 문자 (세관 사칭)
[assistant] 예시 6 정답
[user] 실제 분석 대상 입력[분류기] KcELECTRA — 스미싱 여부 판별
↓ 스미싱으로 분류된 경우에만
[설명 생성기] Qwen3-1.7B — 스미싱 이유 설명 생성kdt-2-team4-newbiz/kcelectra-smishing-classifier)가 스미싱으로 판별한 경우에만 호출됩니다.