Skip to content

Commit 6ec8faa

Browse files
committed
refactor: ai 프롬프트, 검증 로직 변경
1 parent 1ad22ca commit 6ec8faa

File tree

2 files changed

+36
-19
lines changed

2 files changed

+36
-19
lines changed

src/main/java/org/ezcode/codetest/infrastructure/openai/OpenAIMessageBuilder.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
@Component
1010
class OpenAIMessageBuilder {
1111

12-
private static final String MODEL_NAME = "o4-mini";
12+
private static final String MODEL_NAME = "gpt-4o";
1313

1414
private static final String PREFIX = """
1515
당신은 코딩 테스트 사이트의 코드 리뷰어입니다.
1616
아래 **정확히** 이 형식을 지켜 응답하세요:
17-
'시간 복잡도:', '코드 총평:' 같은 제목은 **제목**과 같이 볼드체로 변환합니다.
17+
'코드 총평' 같은 제목은 **제목** 과 같이 볼드체로 변환합니다.
18+
**[중요] 오답일 경우 시간 복잡도 항목은 절대 금지입니다.**
19+
만약 형식을 지켜 응답하지 않으면 시스템은 응답을 폐기합니다.
1820
""".stripIndent();
1921

2022
private static final String SUFFIX = """
@@ -63,30 +65,38 @@ private String buildSystemPrompt(boolean isCorrect) {
6365
String body;
6466
if (isCorrect) {
6567
body = """
66-
- 시간 복잡도: Big-O 표기법으로만 답하세요. **단, N과 M을 같다고 가정하고 n으로 표기하세요.**
68+
**시간 복잡도**: Big-O 표기법으로만 답하세요.
69+
**단, N과 M을 같다고 가정하고 n으로 표기하세요.**
6770
코드에 포함된 중첩 루프(depth)에 따라 O(N^k) 형태로 정확히 표기해주세요.
6871
**for 루프뿐만 아니라 while 루프도 모두 중첩(depth)에 포함**하여, 코드에 실제로 있는 루프 개수만큼 exponent를 세십시오.
6972
예) for-for-for ⇒ O(n³), for-for-while ⇒ O(n³), for-for-for-for-while ⇒ O(n⁵)
7073
\n
71-
- 코드 총평:
72-
각 문장은 한 탭(\t) 들여쓰기 + '- '로 시작.
73-
문장 끝에만 마침표를 붙이세요.
74+
**코드 총평**:
75+
각 문장은 '- '로 시작.
76+
문장 끝에만 마침표를 붙이고 줄바꿈 하세요.
7477
\n
75-
- 조금 더 개선할 수 있는 방안:
76-
각 문장은 한 탭(\t) 들여쓰기 + '- '로 시작.
77-
문장 끝에만 마침표를 붙이세요.
78+
**조금 더 개선할 수 있는 방안**:
79+
각 문장은 '- '로 시작.
80+
문장 끝에만 마침표를 붙이고 줄바꿈 하세요.
7881
""".stripIndent();
7982
} else {
8083
body = """
81-
- 코드 총평:
82-
각 문장은 한 탭(\t) 들여쓰기 + '- '로 시작.
83-
문장 끝에만 마침표를 붙이세요.
84+
**코드 총평**:
85+
각 문장은 '- '로 시작.
86+
문장 끝에만 마침표를 붙이고 줄바꿈 하세요.
8487
\n
85-
- 공부하면 좋은 키워드:
88+
**공부하면 좋은 키워드**:
8689
1. 첫 번째 키워드
8790
2. 두 번째 키워드
8891
3. 세 번째 키워드
8992
… 필요한 만큼 번호를 늘려주세요.
93+
\n
94+
**조금 더 개선할 수 있는 방안**:
95+
각 문장은 '- '로 시작.
96+
문장 끝에만 마침표를 붙이고 줄바꿈 하세요.
97+
98+
절대 시간 복잡도라는 단어도 쓰지 마세요.
99+
Big-O 표기법도 절대 포함하지 마세요.
90100
""".stripIndent();
91101
}
92102

src/main/java/org/ezcode/codetest/infrastructure/openai/OpenAIResponseValidator.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@ protected boolean isValidFormat(String content, boolean isCorrect) {
88
if (content == null)
99
return false;
1010

11-
if (isCorrect) {
12-
return content.contains("시간 복잡도:") &&
13-
content.contains("코드 총평:") &&
14-
content.contains("조금 더 개선할 수 있는 방안:");
11+
if (!isCorrect) {
12+
13+
boolean containsRequired = content.contains("**코드 총평**:") &&
14+
content.contains("**공부하면 좋은 키워드**:")&&
15+
content.contains("**조금 더 개선할 수 있는 방안**:");
16+
17+
boolean containsForbidden = content.contains("**시간 복잡도**:") ||
18+
content.toLowerCase().contains("**시간복잡도:**");
19+
20+
return containsRequired && !containsForbidden;
1521
}
1622

17-
return content.contains("코드 총평:") &&
18-
content.contains("공부하면 좋은 키워드:");
23+
return content.contains("**시간 복잡도**:") &&
24+
content.contains("**코드 총평**:") &&
25+
content.contains("**조금 더 개선할 수 있는 방안**:");
1926
}
2027
}

0 commit comments

Comments
 (0)