Agent
-
이코에코(Eco²) Agent #5: Checkpointer & State이코에코(Eco²)/Agent 2026. 1. 13. 20:34
Scan의 Stateless Reducer vs Chat의 Cache-Aside Checkpointer업데이트: Cache-Aside 패턴 적용으로 Hot session은 Redis에서 응답 Agent #4에서 Event Relay 계층을 다뤘습니다. 이번 포스팅에서는 멀티턴 대화 컨텍스트를 유지하는 Checkpointer 구현을 다룹니다.Scan vs Chat: 상태 관리의 차이Scan: Stateless Reducer PatternClean Architecture #14에서 Scan은 Stateless Reducer Pattern으로 체크포인팅을 직접 구현했습니다.┌─────────────────────────────────────────────────────────────┐│ ..
-
이코에코(Eco²) Agent #4: Event Relay & SSE이코에코(Eco²)/Agent 2026. 1. 13. 20:10
Chat Worker에서 발행한 이벤트가 클라이언트까지 도달하는 Event Relay 계층 설계Agent #3에서 Taskiq 기반 비동기 큐잉을 다뤘습니다. 이번 포스팅에서는 Chat Worker가 발행한 이벤트가 클라이언트의 SSE 연결까지 전달되는 Event Relay 계층을 설계합니다.문제: Chat Worker와 클라이언트 사이의 간극Chat Worker Client │ │ │ Redis Streams (XADD) │ │ chat:events:{job_id} │ ▼ ..
-
이코에코(Eco²) Agent #3: Taskiq 기반 비동기 큐잉 시스템이코에코(Eco²)/Agent 2026. 1. 13. 19:08
Chat API → Chat Worker 간 메시지 큐잉 설계와 Taskiq 선택 이유 Chat 서비스는 LLM 기반 대화형 AI입니다. 응답 생성에 수 초~수십 초가 소요되므로 동시성 확보를 위한 비동기 처리가 필수적입니다. 이 문서에서는 Chat API와 Chat Worker 간의 non-blocking 및 태스크 단위 큐잉을 풀어낸 과정을 설명합니다.전체 아키텍처┌─────────────────────────────────────────────────────────────────────────┐│ Client (Mobile/Web) │└───────────────────────────────┬────────..
-
이코에코(Eco²) Agent #1: Domain Layer이코에코(Eco²)/Agent 2026. 1. 13. 02:24
Chat Worker의 Domain Layer — 외부 의존성 없는 순수 비즈니스 개념 정의 항목값작성일2026-01-14 (업데이트)커밋32af77171. 왜 Domain Layer부터 시작하는가?Clean Architecture에서 Domain Layer는 가장 안쪽 원입니다.┌─────────────────────────────────────────┐│ Infrastructure ││ ┌───────────────────────────────┐ ││ │ Application │ ││ │ ┌───────────────────┐ │ ││ │ │ Domain ..
-
이코에코(Eco²) Agent #0: LangGraph 기반 클린 아키텍처 초안이코에코(Eco²)/Agent 2026. 1. 13. 02:04
Intent-Routed Workflow with Subagent 패턴으로 설계한 LangGraph 기반 Chat 서비스 아키텍처 초안SSE 스트리밍, 컨텍스트 격리, 멀티 모델 지원1. 배경과 목표1.1 기존 구조의 한계기존 domains/chat 서비스는 다음과 같은 문제가 있었습니다:문제설명단일 파이프라인이미지/텍스트 구분 없이 동일한 처리 흐름의도 분류 부재모든 요청을 폐기물 질문으로 처리UX 피드백 없음처리 진행 상황을 사용자에게 알릴 수 없음모델 하드코딩OpenAI만 지원, 멀티 모델 확장 어려움1.2 목표LangGraph 도입: 조건부 분기가 가능한 파이프라인 구축Intent-Routed + Subagent: 의도 기반 분기 + 복잡한 질문 컨텍스트 격리SSE 스트리밍: 실시간 진행 상황 및..
-
LangGraph 스트리밍 패턴 심화 가이드Knowledge Base/Applied 2026. 1. 9. 23:05
Chat 서비스의 SSE 스트리밍 구현을 위한 LangGraph 스트리밍 패턴 정리작성일: 2026-01-09참고: LangGraph Streaming1. 스트리밍 모드 비교LangGraph는 세 가지 스트리밍 모드를 제공합니다.1.1 stream_mode 옵션모드설명사용 케이스values전체 State 스트리밍디버깅, 전체 상태 추적updatesState 변경분만 스트리밍노드별 결과 추적custom노드 내부 커스텀 이벤트토큰 스트리밍, 진행 상황1.2 Chat 서비스 요구사항필요한 이벤트 타입:├── progress: 단계 진행 상황 (vision, rag, answer 시작/완료)├── delta: LLM 토큰 스트리밍 (실시간 타이핑 효과)└── done: 파이프라인 완료결론: stream_mode..
-
이코에코(Eco²) Clean Architecture #14: Stateless Reducer Pattern + 체크포인팅이코에코(Eco²)/Clean Architecture Migration 2026. 1. 6. 01:12
작성일: 2026-01-06참조: Stateless Reducer Pattern 이론1. 도입 배경1.1 기존 파이프라인의 문제Scan Worker의 4단계 파이프라인(Vision → Rule → Answer → Reward)은 Celery Chain으로 구현되어 있었다. 각 Task가 직접 이벤트를 발행하고, 에러를 처리하고, 다음 Task로 데이터를 전달했다.# 기존 방식 (문제점)@celery_app.taskdef vision_task(task_id, image_url, ...): try: publish_event("vision", "started") # Side effect 1 result = openai.chat.completions.create(...) # 외..
-
ADR: LLM-based Agent 파이프라인이코에코(Eco²)/Agent 2026. 1. 5. 16:45
작성일: 2026-01-05작성자: AI Assistant (Claude Opus 4.5)상태: Draft관련 서비스: scan, scan-worker, chat, chat-worker📋 Executive Summary본 리포트는 Eco² 백엔드의 LLM 파이프라인 아키텍처에 대한 기술적 의사결정을 문서화합니다.Scan 파이프라인: LangGraph 미도입, Stateless Reducer 패턴 적용Chat 파이프라인: LangGraph 도입으로 분기 로직 구현공통: LangChain 기반 DI(Dependency Injection)로 LLM 클라이언트 추상화1. Scan 파이프라인: LangGraph 미도입 결정1.1 현재 구조 분석┌─────────────────────────────────────..