전체 글 76

Deep Agents

왜 "Deep"한 에이전트가 필요할까?기존 에이전트의 한계많은 에이전트가 LLM이 루프를 돌며 툴을 호출하는 얕은(shallow) 구조에 머무름이런 구조는 장기 목표를 세우고 여러 단계를 끝까지 실행하는 능력이 떨어져, 복잡한 리서치나 큰 코드 변경 같은 과업에서 금세 맥락을 잃을 수 있음Deep Agents 란?LangGraph를 엔진으로 쓰고 그 위에 기능을 탑재한 "깊은 작업"용 에이전트 라이브러리복잡한 멀티스텝 과제를 위해 계획(할 일 분해), 파일 시스템 기반 컨텍스트 관리, 서브(하위) 에이전트 스폰, 장기 메모리 같은 기능이 표준 제공됨덕분에 긴 검색 결과·문서·중간 산출물을 프롬프트 밖(파일)으로 빼놓고, 필요할 때만 특화 보조 에이전트에게 위임해 메인 컨텍스트를 깔끔하게 유지할 수 있음D..

AI 2025.10.25

노션 데이터로 나만의 RAG 시스템 구축하기

RAG (Retrieval-Augmented Generation) : 검색을 통해 찾은 근거를 LLM에 주입해서 답을 생성하는 방식⇒ ‘모르는 건 모른다’고 하면서, 내 문서에 근거한 답변을 만들어 주는 것왜 RAG가 필요할까?LLM의 한계지식이 학습 시점에 고정됨 → 최신 정보 반영 불가파라미터 안에 있는 지식은 사실 오류(환각, Hallucination)가 많음프라이빗 데이터(내 회사 문서, 내 노션)는 학습 데이터에 없음RAG의 장점외부 지식을 실시간으로 주입 → 최신성 확보“내 문서” 기반으로 답변 → 맞춤형 어시스턴트 가능모델이 스스로 추측하지 않고, 근거 있는 답변 제공 → 신뢰성 강화구성: 노션 API(문서 수집) → 전처리/청킹 → 로컬 임베딩(BAAI/bge-m3) → 벡터 인덱스(FAI..

AI 2025.09.28

LangGraph 개요

대규모 언어 모델(LLM) 애플리케이션을 그래프(흐름) 구조로 표현하고 실행할 수 있도록 만든 오픈소스 프레임워크LangChain vs. LangGraph기존의 LangChain이 컴포넌트를 선형(순차)적으로 연결하는 방식이라면,LangGraph는 노드(Node)와 엣지(Edge) 개념을 도입하여 비선형적이고 동적인 흐름을 지원함즉, LangGraph는 단순한 파이프라인이 아니라 조건 분기, 루프, 병렬 실행 같은 복잡한 서비스 로직을 유연하게 모델링할 수 있게 해줌구성 요소1. State (상태)그래프의 전체 흐름을 관리하는 데이터 저장소모든 node가 참조하고 업데이트 가능from typing import TypedDict# 상태 정의class State(TypedDict): counter: i..

AI 2025.09.26

Langchain 개요

0. 배경LangChain은 LLM(Large Language Model) 기반 애플리케이션을 빠르게 조립하기 위한 프레임워크입니다. 한 번의 모델 호출로 끝나지 않고, 프롬프트 설계부터 단계적 파이프라인 구성(체인), 문서 인덱싱/검색(RAG), 대화 맥락 기억(메모리), 외부 도구 실행(에이전트)까지 전 과정을 한 자리에 모아줍니다. 쉽게 말해 “LLM 서비스 제작 공방”입니다. 재료(데이터·도구)를 준비하고, 레시피(프롬프트·체인)를 짜고, 기계(모델·인덱스·에이전트)를 연결해 제품(요약·Q&A·자동화)을 만드는 흐름을 표준화합니다.1. 구성 요소1) LLM Abstraction추상화는 복잡한 시스템이나 개념에서 핵심적인 부분만 드러내고 불필요한 세부 사항은 감추는 과정을 말합니다.프로그래밍에서 추..

AI 2025.08.24

[개념 정리] 플로이드 와샬 (Floyd Warshall)

플로이드 와샬 알고리즘모든 정점에서 다른 모든 정점으로의 최단 경로를 구하는 알고리즘핵심 아이디어i에서 j로 가는 최단 경로는 k를 경유할 때 더 짧아질 수 있다면 갱신한다.단순히 직접 연결만 보는 게 아니라, 중간 노드를 통해 우회하는 모든 가능성을 계산함점화식 : dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])for k in range(n): # 경유지 for i in range(n): # 출발지 for j in range(n): # 도착지 dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])3중 for문을 사용하여 각 노드 k를 중간 지점으로 놓고, ..

AlGORITHM 2025.07.25

[개념 정리] 벨만 포드 (Bellman Ford)

벨만 포드 알고리즘가중치가 있는 그래프에서 한 정점에서 다른 정점들까지의 최단 거리를 구하는 알고리즘 다익스트라 : 지금까지 가장 짧은 경로만 계속 확장벨만 포드 : 모든 간선을 반복적으로 확인해서 더 짧은 경로가 있으면 계속 갱신간선의 가중치가 음수여도 동작 가능동작 방식거리 배열 초기화: 시작점만 0, 나머지는 무한대모든 간선을 V(노드 수) - 1번 반복하며 최단 거리 갱신 (Relaxation)정점 개수 V에 대해 최단 경로는 최대 V - 1개의 간선으로 이루어질 수 있기 때문예시▶ 시작 노드 A에서 모든 노드까지의 최단 경로를 구하기 ◀graph = { 'A': [('B', 4), ('C', 2)], 'B': [('C', -3), ('D', 2)], 'C': [('D', 3)]..

AlGORITHM 2025.07.24

[개념 정리] 다익스트라 (Dijkstra)

다익스트라 알고리즘가중치가 있는 그래프에서 한 정점에서 다른 정점들까지의 최단 거리를 구하는 알고리즘전제 조건그래프는 방향 그래프 혹은 무방향 그래프일 수 있음간선의 가중치는 0 이상의 정수 (음수 가중치 불가)우선순위 큐(Priority Queue)를 이용해 최적화가장 빠르게 도착할 수 있는 노드부터 처리하기 위해 !핵심 원리시작 노드부터 각 노드까지의 최단 거리를 저장거리가 가장 짧은 노드를 하나씩 선택하면서,그 노드를 거쳐가는 경로가 더 짧으면 업데이트함예시▶ 시작 노드 A에서 모든 노드까지의 최단 경로를 구하기 ◀graph = { 'A': [('B', 1), ('C', 4)], 'B': [('C', 2), ('D', 5)], 'C': [('D', 1)], 'D': []} A..

카테고리 없음 2025.07.21

[python] 도둑질

문제 설명도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다.각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다.각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요.제한사항이 마을에 있는 집은 3개 이상 1,000,000개 이하입니다.money 배열의 각 원소는 0 이상 1,000 이하인 정수입니다.문제 풀이💡 일반 도둑 문제 (선형 구조) 점화식: dp[i] = max(dp[i-1], dp[i-2] + money[i])dp[i] : i번째 집까지 고려했을 때 얻을 수 있는 최댓값i번째 집을 털지 않을..

[Python] 정수 삼각형

문제 설명위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요.제한사항삼각형의 높이는 1 이상 500 이하입니다.삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.문제 풀이Bottom-Up, Top-Down DP 두가지 방식으로 구현할 수 있다.1. Bottom-Up아래에서 위로 올라오면서 각 위치의 값을 누적 최댓값으로 바꾸는 방식..

[Python] N으로 표현

문제 설명아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 55를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.제한사항N은 1 이상 9 이하입니다.number는 1 이상 32,000 이하입니다.수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.최솟값이 8보다 크면 -1을 return 합니다.문제 풀이구조dp[i]: N을 i번 사용해서 만들 수 있는 모든 수..