Skip to content

Commit 6d0d385

Browse files
committed
feat: /visualize API에 GPT 기반 코드 시각화 기능 추가
- /visualize 엔드포인트에 GPT-4o 기반 시각화 JSON(Ast) 생성 기능 추가 - lang, input, code 정보를 기반으로 단계별 시각화용 JSON 구조 응답 - 기존 stdout, stderr, exitCode 외에 ast 필드 추가
1 parent e209129 commit 6d0d385

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

server/app.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,12 @@ def visualize_code():
184184

185185
try:
186186
completion = client.chat.completions.create(
187-
model="gpt-4o-mini",
187+
model="gpt-4o",
188188
messages=[
189-
{"role": "system", "content": "이 코드의 출력결과를 알려줘"},
189+
{
190+
"role": "system",
191+
"content": "당신은 **코드 실행 시각화 JSON 생성기**입니다. 사용자가 언어(lang), 코드(code), 입력값(input)을 주면 아래 스키마에 맞춰서 **모든 연산, 비교, 대입, 스왑, 함수 호출, 반복문, 조건문, 재귀 호출, 자료구조 변화 등을 단계별로** 시각화 가능한 JSON을 **정확하고 완전하게** 생성하세요.\n\n**출력 JSON 스키마**:\n{\n \"lang\": \"언어\",\n \"TimeComplexity\": \"시간복잡도(Big O)\",\n \"SpaceComplexity\": \"공간복잡도(Big O)\",\n \"input\": \"입력값(없으면 빈 문자열)\",\n \"variables\": [\n { \"name\": \"변수명\", \"type\": \"자료형|array|graph|heap|linkedList|bst\", \"initialValue\": 값, \"currentValue\": 값 },\n\n ],\n \"functions\": [\n { \"name\": \"함수명\", \"params\": [\"param1\", …], \"called\": 호출횟수 },\n\n ],\n \"steps\": [\n {\n \"line\": 소스코드_행번호,\n \"description\": \"이 단계에서 일어난 일\",\n \"changes\": [ { \"variable\": \"변수명\", \"before\": 이전값, \"after\": 이후값 }, … ],\n \"stack\": [ { \"function\": \"함수명\", \"params\": [값들] }, … ], (선택)\n \"loop\": { \"type\": \"for|while|do-while\", \"index\": 현재반복인덱스, \"total\": 총반복횟수 }, (선택)\n \"condition\": { \"expression\": \"조건식\", \"result\": true|false }, (선택)\n \"dataStructure\": { (선택)\n \"type\": \"array|linkedList|bst|heap|graph\",\n \"nodes\": [ \"0\", \"1\", … ] | [ { \"id\": \"0\", \"value\": 값, \"links\": [\"1\", …] }, … ],\n \"edges\": [[\"0\",\"1\"],[\"1\",\"2\"],…], // graph 전용\n \"adjacencyMatrix\": [[0,1],[1,0],…] // graph 전용\n }\n },\n\n ]\n}\n\n✅ 단계별로 dataStructure 객체를 **반드시** 포함하여 자료구조 상태를 **정확히** 기록하세요.\n✅ graph의 경우 반드시 nodes, edges, adjacencyMatrix를 **모두 포함**해야 합니다.\n✅ 생략이나 … 없이 **모든 단계의 흐름과 변수/자료구조 변화**를 상세히 출력하세요.\n✅ HTML 시각화 코드와 호환되도록 구조를 유지하며, 다른 설명이나 텍스트는 **절대로 추가하지 마세요**.\n✅ **올바른 JSON만** 출력하세요."
192+
},
190193
{"role": "user", "content": gpt_prompt}
191194
]
192195
)

0 commit comments

Comments
 (0)