본문 바로가기

전체 글67

[LangGraph] 똑똑한 AI의 첫걸음 - 7 VibeGraph 로그 #7: 생각의 흐름을 실시간으로 - 스트리밍 API와 세션 관리의 서막안녕하세요, VibeGraph의 진화 과정을 함께 추적하는 여러분. 지난 #6 로그에서 우리는 VibeGraph가 FastAPI라는 강력한 심장을 이식하고 웹 서비스로 재탄생하는 과정을 지켜보았습니다. 이제 VibeGraph는 /ask 엔드포인트를 통해 전 세계 누구와도 대화할 수 있는 창을 열었습니다. 하지만 이 대화는 아직 반쪽짜리였습니다. VibeGraph가 깊은 생각에 빠져있는 동안, 사용자는 그저 막연한 기다림 속에서 초조해해야만 했습니다.오늘 우리가 탐험할 3ef2a25 - stream 방식 추가 및 이력 관리 샘플 추가 커밋은, 바로 이 소통의 간극을 메우는 혁명적인 도약입니다. 이 커밋을 통해 Vi.. 2025. 8. 4.
[LangGraph] 똑똑한 AI의 첫걸음 - 6 VibeGraph 로그 #6: 콘솔을 넘어 웹으로 - FastAPI 도입과 구조 리팩토링안녕하세요, VibeGraph의 개발 여정을 함께하는 여러분. 지난 다섯 편의 로그를 통해 우리는 VibeGraph의 두뇌와 신경망, 즉 지능형 검색, 동적 실행 로직, 그리고 체계적인 문서화에 이르는 내면의 성장을 지켜보았습니다. 하지만 지금까지 VibeGraph는 오직 개발자의 터미널이라는 고독한 공간 속에서만 존재할 수 있었습니다. 이제 VibeGraph가 세상 밖으로 나아갈 시간입니다.이번 로그에서 우리가 깊이 탐험할 6456c85 - refactoring graph and add fastapi 커밋은, VibeGraph의 역사에서 가장 중요한 변곡점 중 하나입니다. 이것은 단순한 기능 추가를 넘어, 애플리케이.. 2025. 8. 4.
[LangGraph] 똑똑한 AI의 첫걸음 - 5 VibeGraph #5: 모든 것의 시작, 그리고 미래를 향한 발걸음안녕하세요, VibeGraph 프로젝트의 마지막 기술 블로그에 오신 것을 환영합니다. 지난 네 편의 글을 통해 우리는 VibeGraph가 어떻게 아이디어에서 시작하여, 리팩토링을 통해 뼈대를 다지고, 지능적인 검색 능력과 체계적인 문서화를 갖추게 되었는지 그 여정을 함께했습니다.오늘은 이 모든 이야기의 시작점, 766114a - init 커밋과, VibeGraph의 모든 노드와 로직을 하나로 엮어 생명을 불어넣는 main.py 파일을 통해 프로젝트의 전체 그림을 완성하고, 앞으로 나아갈 길에 대해 이야기하며 시리즈를 마무리하고자 합니다.1. 모든 위대한 여정의 첫걸음: init모든 프로젝트는 git commit -m 'init' 이라는 .. 2025. 7. 23.
[LangGraph] 똑똑한 AI의 첫걸음 - 4 VibeGraph 로그 #4: 잘 만든 README, 열 엔지니어 안 부럽다안녕하세요, VibeGraph 프로젝트의 네 번째 로그입니다. 지난 세 번의 포스팅을 통해 VibeGraph가 어떻게 똑똑한 질문을 만들고, 검색 결과의 품질을 평가하며, 동적으로 재시도하는지에 대한 기술적인 여정을 공유했습니다. 오늘은 잠시 코드에서 눈을 돌려, 종종 간과되지만 프로젝트의 성패를 좌우할 수도 있는 중요한 자산, 바로 문서화(Documentation), 그중에서도 프로젝트의 얼굴인 README.md 파일에 대해 이야기하고자 합니다.커밋 로그 d4f98a0 - readme update는 단순히 몇 줄의 텍스트를 추가한 작업이 아닙니다. 이는 VibeGraph의 정체성을 확립하고, 미래의 동료와 사용자들에게 보내는 첫.. 2025. 7. 23.
[LangGraph] 똑똑한 AI의 첫걸음 - 3 VibeGraph #3: 똑똑한 검색의 비밀 - 품질 평가와 동적 리트라이안녕하세요, VibeGraph 프로젝트의 세 번째 기술 블로그입니다. 지난 1편과 2편을 통해 VibeGraph의 기본 철학과 성장 과정을 공유했습니다. 오늘은 VibeGraph를 단순한 정보 검색 도구에서 한 단계 더 나아가, 스스로 생각하고 판단하는 지능형 시스템으로 만드는 핵심적인 업데이트, 커밋 854965d에 대해 깊이 있게 다뤄보겠습니다.이번 업데이트의 핵심 질문은 이것입니다: "만약 첫 번째 검색 결과가 만족스럽지 않다면, 어떻게 해야 하는가?" 이 질문에 대한 저희의 대답은 '품질 평가(Quality Evaluation)' 와 '동적 재시도(Dynamic Retry)' 메커니즘의 도입입니다.1. 문제 정의: 첫 검색의.. 2025. 7. 23.
[LangGraph] 똑똑한 AI의 첫걸음 - 2 VibeGraph #2: 좋은 코드는 성장한다 - 리팩토링의 중요성안녕하세요, VibeGraph 프로젝트의 두 번째 기술 블로그입니다. 지난 1편에서는 사용자의 의도를 파악하고 답변의 품질을 평가하는 핵심 기능을 구현하며 VibeGraph의 뼈대를 세웠습니다. 오늘은 그 뼈대를 더 튼튼하고 유연하게 만드는 과정, 바로 리팩토링에 대해 이야기하고자 합니다.소프트웨어 개발에서 리팩토링은 종종 '보이지 않는 작업'으로 여겨집니다. 새로운 기능이 추가되는 것도 아니고, 사용자 경험이 극적으로 바뀌는 것도 아니기 때문입니다. 하지만 잘 된 리팩토링은 프로젝트의 미래를 바꿉니다. 코드의 복잡성을 낮추고, 유지보수를 쉽게 만들며, 새로운 기능 추가를 위한 튼튼한 발판이 되어줍니다. 커밋 로그 7391f03은 바로 그.. 2025. 7. 18.
[LangGraph] 똑똑한 AI의 첫걸음 - 1 VibeGraph #1: 똑똑한 AI의 첫걸음 - 질의 의도 파악과 답변 품질 평가안녕하세요, VibeGraph 프로젝트의 첫 번째 기술 블로그에 오신 것을 환영합니다. 이 시리즈를 통해 VibeGraph가 어떻게 더 똑똑하고 신뢰할 수 있는 AI로 발전해 나가는지, 그 여정을 가감 없이 공유하고자 합니다.오늘의 주제는 모든 AI 시스템의 근본적인 고민, "어떻게 하면 사용자의 모호한 질문 속에서 진짜 의도를 파악하고, 부정확할 수 있는 검색 결과 속에서 신뢰도 높은 답변을 찾아낼 것인가?" 입니다. 이 문제를 해결하기 위한 저희의 첫 번째 접근법을 커밋 로그 854965d와 함께 자세히 살펴보겠습니다.1. 문제 정의: 모호함과 불확실성LLM을 기반으로 한 검색 시스템을 처음 만들면 두 가지 큰 문제에 .. 2025. 7. 18.
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (3) 1. 회원 관리 웹 애플리케이션 요구 사항 Member, MemberRespository를 생성한다. Repository의 경우 싱글톤 패턴을 위해 생성자를 Private 로 막아둔다. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String name; private int age; public Member() { } public Member(String name, int age) { this.name = name; this.age = age; } } package hello.servlet.do.. 2024. 4. 21.
[Spring][Error] RestTemplate Response 한글 깨짐 Java Spring Boot에서 RestTemplate을 사용하여 API 호출하는 경우 한글이 깨져서 들어오는 경우가 존재한다. 이는 RestTemplate에서 사용하는 StringHttpMessageConverter의 default Characterset이 ISO 8859-1이기 때문이다. 이를 해결하기 위해서 사용하는 Charset을 UTF-8로 변경해 줄 필요가 있다. RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); RestTemplate 선언이후 restTemplate 객체에 get.. 2024. 4. 21.
반응형