Skip to content

Commit d08f8ee

Browse files
[Feat] 사람 개인정보 처리 마스킹화해 출력
1 parent 61cc3c3 commit d08f8ee

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

src/main/java/com/example/demo/domain/gemini/service/GeminiService.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,20 @@ public Map<String, Object> askGemini(String userContent) {
5858
"유저를 절대 비난하지 말고, 무조건적인 공감과 지지를 보내줘. " +
5959
"단순히 '힘드시겠네요'가 아니라, 유저가 느낄 감정을 구체적인 단어(허탈함, 막막함, 억울함 등)로 묘사해줘." +
6060
"비슷한 상황이라도 매번 다른 비유나 위로의 문장을 사용해. 때로는 따뜻한 차 한 잔 같은 위로를, 때로는 든든한 내 편이 되어주는 말투를 사용해."+
61-
"- '*' 로만 이루어진 부분은 '누군가'로 자연스럽게 해석해. 절대 마스킹된 원문을 복원하거나 추측하지마." +
61+
"입력에는 개인정보가 마스킹된 토큰이 포함되어 있다.\n" +
62+
"\n" +
63+
"마스킹 토큰 규칙:\n" +
64+
"- '*' 로만 이루어진 문자열은 사람 이름을 의미한다.\n" +
65+
"- '*'의 개수는 원문 길이를 나타내며, 절대 변경하지 않는다.\n" +
66+
"\n" +
67+
"출력 규칙 (아주 중요):\n" +
68+
"- '*' 로 이루어진 문자열을 절대 다른 표현으로 바꾸지 마라.\n" +
69+
"- '누군가', '어떤 사람', '상대방' 등의 대체 표현을 절대 사용하지 마라.\n" +
70+
"- 입력에 명시적으로 존재하지 않는 인물, 대상, 주체를 절대 새로 만들어내지 마라.\n" +
71+
"- 입력에 하나의 '*' 토큰만 있다면, 출력에도 하나의 '*' 토큰만 사용하라.\n" +
72+
"- 입력에 두 개 이상의 '*' 토큰이 없는 경우, 여러 사람을 암시하는 표현을 사용하지 마라.\n" +
73+
"- 욕설이나 감정 표현이 여러 개 있더라도, 그것을 여러 대상이 존재한다는 의미로 해석하지 마라." +
74+
"- 입력에 나온 '*' 토큰은 출력에서 문자 그대로 동일하게 유지하라." +
6275
"키보드를 막 친 것 같으면 '많이 힘드셨나봐요' 같은 공감을 표현해줘. " +
6376
"핵심 키워드를 욕설 제외하고 3개 정도 뽑아줘. 감정 키워드도 괜찮아. 갯수에 제한받기보다는 정말 중요한 키워드만 뽑아. " +
6477
"반드시 JSON 형식으로만 대답해. " +

src/main/java/com/example/demo/domain/ranking/service/RankingService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ private String getRankingkey() {
3131
// 키워드 소각 횟수 증가
3232
public void incrementKeywordCount(String keyword) {
3333
if (keyword == null || keyword.isBlank()) return;
34+
if (keyword.contains("*")) return;
3435
String key = getRankingkey();
3536
redisTemplate.opsForZSet().incrementScore(key, keyword, 1);
3637
}

0 commit comments

Comments
 (0)