본문 바로가기

전체 글

(15)
[AI 논문 리뷰] SWE-agent Reference: "SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering" [arxiv]1. 서론소프트웨어 개발에서 버그를 찾고 수정하는 작업은 시간이 많이 소요되는 반복적인 일입니다. 최근 대규모 언어 모델(LLM)이 코드 생성에서 뛰어난 성능을 보이면서 이를 활용해 소프트웨어 엔지니어링 작업을 자동화하려는 시도가 활발합니다. 하지만 단순히 강력한 LLM을 사용한다고 해서 복잡한 소프트웨어 엔지니어링 작업을 잘 수행할 수 있을까요?이 논문은 "인터페이스 설계"가 LLM 에이전트의 성능에 결정적인 영향을 미친다는 점에 주목합니다. 마치 인간 개발자가 VSCode나 PyCharm 같은 IDE를 사용하면 생산성이 향상되는 것처..
[AI 논문 리뷰] SWE-bench: 언어 모델은 실제 GitHub 이슈를 해결할 수 있을까? Reference: "SWE-BENCH: CAN LANGUAGE MODELS RESOLVE REAL-WORLD GITHUB ISSUES?" [arxiv] 1. 서론2023년 인공지능 기술은 소프트웨어 개발 영역에서 급속도로 발전하고 있었다. GitHub Copilot과 ChatGPT 등 다양한 AI 코딩 어시스턴트들이 상용화되며 개발자들의 일상에 깊숙이 자리 잡기 시작했다. 그러나 이러한 발전에도 불구하고 우리는 근본적인 질문 하나에 직면하게 된다.이 AI 시스템들이 정말로 실제 소프트웨어 엔지니어링 업무를 수행할 수 있을까? 기존의 코드 생성 벤치마크들은 이미 포화 상태에 이르렀다. 최신 언어 모델들은 HumanEval과 같은 표준 평가에서 90% 이상의 높은 점수를 기록하고 있었다. 하지만 실제 개발..
[AI 논문 리뷰] Codex: 자연어로 코드를 생성하는 AI의 등장 Reference: "Evaluating Large Language Models Trained on Code" [arxiv]우리가 매일 사용하는 개발 환경 속엔 사실 코드 생성 인공지능이 조용히 녹아 있다. GitHub Copilot처럼 다음 줄을 예측해주는 자동완성, 코드 스멜을 찾아주는 린터, Pull Request를 리뷰하는 봇까지 모두 코드를 이해하고 생성하는 AI가 핵심에 있다.과거의 프로그램 합성 시스템은 사람이 직접 설계한 문법 트리와 규칙 기반 템플릿을 조합해 만들었다. 하지만 이 방식은 추상적이거나 복잡한 요구사항에 취약했고 실제 개발자들의 다양한 코딩 스타일을 반영하기 어려웠다.최근에는 LLM(Large Language Model) 패러다임이 코드 생성 영역에도 본격적으로 적용되고 있다..
LLM: 코드를 이해하고 생성하는 AI 의 등장 최근 ChatGPT, Claude 와 같은 AI 챗봇들이 우리의 일상에 자연스럽게 스며들고 있습니다. 질문에 답하고 글을 작성하며 심지어 복잡한 문제를 해결하는 모습을 보며 많은 사람들이 놀라움을 감추지 못하고 있습니다. 이러한 AI 서비스의 핵심에는 LLM(Large Language Model, 대규모 언어 모델)이라는 기술이 자리잡고 있습니다.그런데 LLM 의 능력은 자연어 처리에만 그치지 않습니다. 2021 년, OpenAI 는 Codex 라는 혁신적인 모델을 발표했습니다. 이 모델은 사람이 작성한 문장을 읽고 실제로 작동하는 프로그래밍 코드를 자동으로 생성해냅니다. 마치 숙련된 개발자가 옆에 앉아 코딩을 도와주는 것처럼 말이죠. 앞으로 Codex 관련 논문을 깊이 학습하고 그 내용을 공유할 예정입..
카카오 로그인에 대한 리팩토링과 고찰 이번에 프로젝트를 진행하면서 네모 프로젝트에서 진행했던 카카오 로그인 서비스와 시큐리티레거시 코드들을 가져오려고 했으나 여러 문제점들을 발견하고 시큐리티의 버전 상승으로 인한 코드 변경으로 인해 kakao developers 문서를 정독하며 새롭게 코드를 작성해봤습니다.기존 코드의 문제점먼저 카카오 로그인 서비스에 대한 문제점입니다. public String kakaoLogin(String code) { KakaoTokenDTO userToken = getKakaoAccessToken(code); log.info("get kakao token"); KakaoAccountDTO kakaoAccount = null; try { kakaoA..
ResponEntity class 내부 뜯어보기 이번에 프로젝트를 진행하면서 기존에 사용하던 코드를 유지 보수하는 시간을 가졌습니다.기존 코드의 문제점간단한 예시로 기존 코드의 문제점을 확인해보겠습니다. @GetMapping("/seats") public ResponseEntity librarySeats() { List unavailableSeats = librarySeatService.getUnavailableLibrarySeat() .stream() .map(LibrarySeatResponse::from) .toList(); return ResponseEntity.ok().body(ApiUtils.success(unavailableS..
Spring Batch란? 배치 서비스란?대량의 데이터를 모아서 한번에 처리하는 서비스를 말합니다. 예를 들어 우리 주변에는 다음과 같은 작업들에 배치 서비스를 적용할 수 있습니다.주기적인 은행 업무쇼핑몰 알림세금 고지서 일괄 처리성적 일괄 처리이러한 배치 서비스는 어떠한 트리거 예를 들어, 스케쥴과 같은 이벤트에 맞춰 실행됩니다. 또한 한번 시작하면 어떻게든 종료되는 특징을 가지고 있습니다.배치 서비스 기본 3단계[Read] 많은 데이터를 데이터베이스, 파일, 메세지로부터 읽는다.[Processing] 읽은 데이터를 로직에 의해 처리한다.[Write] 로직으로 처리된 데이터를 수정된 형태로 출력한다.배치 처리를 위해 사용되는 도구들배치 처리를 위해 사용되는 도구들은 다양합니다.Cron, CrontabQuartzJenkins기타 ..
Swagger UI란? Swagger UI란 간단하게 말해서 문서화 Open API인데요 개발자라면 문서화가 얼마나 중요한지 알고 계시리라 생각됩니다. 왜냐하면 개발은 혼자만의 힘으로 하는 것이 아닌 팀적으로 개발하기 때문에 서로의 커뮤니케이션을 위해선 팀 회의를 통한 규칙 또는 내용들을 문서를 통해 정리할 필요가 있습니다.이런 문서화 API는 중요한 만큼 여럿 존재합니다. 흔히 알고 계시는 Java doc도 있고 저번 스크럼에 저가 소개한 Har Exploer도 문서화 API 중 하나입니다. 이번 시간에는 실무에서 가장 널리 쓰이고 예전부터 즐겨 사용해왔던 Swagger UI의 사용 방법과 설정 방법에 대해 설명드리겠습니다.Swagger UI를 지금부터 짧게 swagger라고 부르겠습니다. swagger는 spring boo..