본문 바로가기

분류 전체보기

(106)
LangGraph 기반 AI 채팅의 상태 관리: Branching과 Custom Reducer의 역할 LangGraph를 활용하여 AI 챗봇이나 대화형 애플리케이션을 만들 때, 상태(State) 관리는 가장 중요한 요소 중 하나입니다.✅ 어떻게 이전 메시지를 기억하고, 새 메시지를 추가할 것인가?✅ 병렬 실행 중 충돌을 방지하고 안정적인 대화 흐름을 유지하는 방법은?LangGraph는 기본적으로 상태를 관리하는 여러 가지 방법을 제공합니다.하지만, 기본 동작(Default Overwriting State)을 이해하지 않으면, 메시지가 예상치 못하게 사라지거나 덮어씌워질 수도 있습니다.이 글에서는 LangGraph에서 상태가 어떻게 업데이트되는지를 살펴보고,Branching(분기), Custom Reducer, 그리고 add_messages Reducer를 활용해 AI 챗봇의 대화 상태를 안전하게 유지하는..
LangGraph에서 Router, Agent, ReAct, State, 그리고 Memory 이해하기 💡 LangGraph를 활용하여 LLM을 보다 스마트하게 만들기 위한 핵심 개념들 – Router, Agent, ReAct, State, 그리고 Memory – 에 대해 알아보겠습니다.1️⃣ Router: LLM이 어떻게 경로를 결정하는가?LangGraph에서 Router(라우터)는 입력된 메시지를 보고 적절한 처리 방식을 결정하는 역할을 합니다.✅ Router의 실행 흐름Start → Step 1: 첫 번째 단계 실행Step 1 → LLM: LLM이 입력을 분석LLM이 판단:Step 2로 이동 → 자연어 응답 반환Step 3로 이동 → Tool 호출 후 결과 반환즉, Router는 LLM이 단순 응답을 할지, Tool을 활용할지 결정하는 중요한 요소입니다.✅ Tool을 사용하면 어떻게 동작이 달라질까..
LangChain에서 LLM을 더 강력하게 만드는 방법: Control Flow와 Agent 개념 정리 1. 단순한 LLM만으로는 한계가 있다!💡 "LLM(대형 언어 모델) 하나만으로는 실무에서 활용하기 어렵다!"✔ AI 모델 하나만 가지고는 실제 업무를 수행하기 어려움 ✔ 추가적인 기능이 필요함 (예: 검색, 계산, 문서 분석 등) ✔ 여러 단계의 작업(멀티스텝 워크플로우)을 자동화할 필요가 있음📌 즉, 단순한 AI 모델로는 복잡한 작업을 수행하기 어렵기 때문에, 더 강력한 구조가 필요하다! ✅2. Control Flow(제어 흐름)의 필요성💡 "많은 LLM 애플리케이션이 Control Flow를 사용한다!"✔ LLM이 단순한 응답을 넘어서, 여러 단계를 거쳐 작업을 수행할 수 있도록 Control Flow를 추가해야 함 ✔ LLM 호출 전/후에 다양한 작업(도구 호출, 검색, 데이터 조회 등)이 ..
자바로 배우는 코틀린 개념 - 일급 객체(First Class Object)와 고차함수 코틀린 카테고리에 웬 자바에서 일급 객체(First Class Object)란 일까 했지만코틀린을 잘 이해하기 위해서 기존에 알고 있던 자바의 개념으로 정리해 본다.  글을 쓰게 된 계기는 코틀린에서 아래 개념 때문이다.   코틀린에서는 함수가 1급객체의 성질을 가지는 것이 가능하다.1급 객체란 무엇일까나는 1급 객체가 뭔지 개념이 아예 없었고, 1급 객체를 이해하기 위해서 익명함수의 이해부터 필요하다 이제 하나하나 차근차근 써보겟다. 1급 객체를 달성하기 위한 조건 3가지이다 변수나 데이터에 할당할 수 있어야 합니다.객체의 인자로 넘길 수 있어야 합니다.객체의 리턴값으로 리턴할 수 있어야 합니다.자바에서는 1급 객체를 만족시키기 위해서 익명함수와 람다로 구현을 했다.  익명함수란먼저 익명 함수라는 것은..
HaProxy 의 역할과 graceful stop 과정 HAProxy는 여러 서버에 대해 요청을 확산시키는 TCP 및 HTTP 기반 애플리케이션들을 위해고가용성 로드밸런서와 리버스 프록시를 제공하는 자유-오픈 소스 소프트웨어 HAProxy의 역할- a TCP proxy : it can accept a TCP connection from a listening socket- an HTTP reverse-proxy (called a "gateway" in HTTP terminology)- a content-based switch요청의 모든 요소를 고려하여 요청이나 연결을 전달할 서버를 결정할 수 있습니다.따라서 동일한 포트를 통해 여러 프로토콜(예: HTTP, HTTPS, SSH)을 처리할 수 있습니다.- a server load balancerTCP 연결과 HT..
CORS - Cross-Origin Resource Sharing 란 무엇일까 Cross-Origin Resource Sharing 업무를 하다가 듣기는 엄청 듣고 뭔지도 대충 아는데 정확하게 설명할 정도로는 모르는것 같아서 이참에 정리한다. 한글로 이해 할려고 하지말고 Cross-Origin Resource Sharing 그대로 이해하자 cors 는 웹 애플리케이션이 다른 도메인 또는 포트에서 리소스에 접근할 수 있도록 허용하는것이다. 뭔지 모르겠으면 이게 왜 나왔는지 알아가면된다. 만약 어떤 개발자가 www.만화.com 사이트를 만들었다고 하자 저 사이트는 유명하고 트래픽도 많아서 저 사이트를 배끼기 위한 www.복제.com 을 만들었다. ‘복제’ 사이트는 원조 사이트의 url을 그대로 호출해서 만들었다. 이렇게 되면 원래 사이트에서 제공하는 요청이 다른 사이트에 노출된다. 예..
Spring 예제 코드로 알아보는 semaphore, mutex 동기화 이해 동기화부터 알아야 하는데 동기화란 프로세스들 사이의 수행시기를 맞추는것을 말한다. 실행 순서 제어를 위한 동기화 상호 배제를 위한 동기화 위 두가지 케이스로 나뉠수 있다. 대표적으로 생산자 소비자 문제가 있는데 생성자는 데이터를 추가하면 변수 1을 증가시키고 소비자는 데이터를 삭제하면 변수 1을 감소시킨다. 총합 == 10 생산자(){ 데이터 추가 총합 변수 1 증가 } 소비자(){ 데이터 삭제 총합 변수 1 감소 } 생산자를 1000번 소비자를 1000번 실행 시키면 결과값은 항상 0이 나오지 않는다. 생산자와 소비자가 동기화 되있지 않아서 생기는 문제이다. 소비자 작업이 끝나기 전에 생산자가 수정되어 공유자원에 문제가 생긴다. 공유자원(shared resource)이란 동시에 접근해서는 안되는 자원이..
istio(이스티오)와 서비스 메시, 프록시 쿠버네이티스와 밀접하게 연관된 istio에 대해 정리 한번 해야겠다 생각만하다가 이제 서야 정리한다. 일단 istio를 설명하기 전에 서비스 메시라는것을 우선 알아야 한다. 서비스 메시 애플리케이션 트래픽을 관리, 추적 및 보안성을 강화하기 위해 플랫폼 레이어에 구성되는 네트워크 제어 방법 대표하는 기능은 크게 3가지 1. 애플리케이션 트래픽 관리 (Traffic Management) 2. 관찰 가능성(observability) 3. 보안 1. 애플리케이션 트래픽 관리 - 트래픽 관리를 위한 라우팅은 더 나은 배포 전략을 가능하게 한다. - 트래픽 라우팅 규칙을 사용하면 서비스 간의 트래픽 흐름 및 API 호출을 쉽게 제어한다 - 서킷 브레이커, 타임아웃 및 재시도와 같은 구성을 단순화한다 - A/B 테..