전체 글
-
진주아버지 간병 2026. 1. 6. 03:15
아버지께서 뇌출혈로 쓰러지셨다. 새벽 1시 반쯤 도착해서 주치의 분을 직접 뵙지는 못하고 간호사 분과 가족들에게 상황을 전해들었다. 좌측 뇌내출혈로 운동과 인지능력을 담당하는 부위를 걸쳐 계란만한 크기로 응고가 된 상황이라고 한다.경과를 지켜봐야 알겠지만 수술 후 회복이 되도 우측 마비, 인지장애가 동반될 수 있다고 들었을 땐 믿기지가 않았다.고향인 남해에서 할아버지와 함께 지내고 계셨는데 현관 앞 흙밭에 쓰러진 채로 두시간정도 방치되셨다고 한다.65세인 연세에 걸맞지 않게 정말 정정한 분이셨다. 178정도로 건장하고 체구도 있으신 편이라 이렇게 될 거라곤 상상을 못했다.24년부터 내가 취준과 직장 스트레스로 말썽을 부려도 이성적이면서도 힘차게 조언을 주실만큼 정신력도 강인한 편이셨는데 그런 아버지께서 ..
-
이코에코(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(...) # 외..
-
이코에코(Eco²) Clean Architecture #13: Scan Worker 마이그레이션 로드맵이코에코(Eco²)/Clean Architecture Migration 2026. 1. 5. 19:07
작성일: 2026-01-05상태: Implemented1. 마이그레이션 배경1.1 기존 구조의 한계domains/scan과 domains/_shared/waste_pipeline은 빠른 프로토타이핑에 적합했으나, 시스템이 성장하면서 다음과 같은 문제가 드러났다.레이어 경계가 모호했다. Vision API 호출, 프롬프트 로딩, 파이프라인 조합이 모두 한 디렉토리에 뒤섞여 있어 모델 확장이 어려웠다. OpenAI만 사용하던 초기와 달리, Gemini 등 멀티모델을 지원해 보다 에이전틱스럽게 작동하길 바랐다.1.2 마이그레이션 목표Clean Architecture 적용Application/Infrastructure 레이어 분리LLM DI모델명 기반 런타임 어댑터 선택Stateless ReducerStep을 ..
-
이코에코(Eco²) LLM 파이프라인 의사결정 리포트이코에코(Eco²)/Reports 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 현재 구조 분석┌─────────────────────────────────────..
-
Stateless Reducer Pattern for AI Agents이코에코(Eco²)/Applied 2026. 1. 5. 07:21
"Make your agent a stateless reducer"에이전트를 상태를 직접 관리하지 않는 순수 함수로 설계하여 테스트 용이성, 재현성, 확장성을 확보하는 패턴1. 개요1.1 전통적인 Stateful Agent의 문제점# ❌ Anti-pattern: Stateful Agentclass StatefulAgent: def __init__(self): self.messages = [] # 내부 상태 self.current_step = "start" # 내부 상태 self.results = {} # 내부 상태 self.llm = OpenAI() def run(self, user_input: str):..
-
LangGraph : 상태관리, SSE, 오케스트레이션, 비동기 태스크이코에코(Eco²)/Applied 2026. 1. 5. 06:50
LangGraph의 핵심 기능을 심층 분석하고, 기존 인프라(Redis Streams, RabbitMQ, SSE Gateway)와의 호환성을 검토합니다.참고: LangGraph 공식 문서, LangGraph Concepts목차LangGraph 개요상태 관리 (State Management)그래프 오케스트레이션 (Graph Orchestration)스트리밍 (Streaming & SSE)비동기 태스크 (Async Tasks)체크포인트 & 지속성 (Persistence)Human-in-the-Loop기존 인프라와의 호환성 분석1. LangGraph 개요1.1 LangGraph란?LangGraph는 LangChain 팀이 개발한 상태 기반 멀티액터 오케스트레이션 프레임워크입니다.에이전트 워크플로우를 Direc..
-
Dependency Injection for LLM이코에코(Eco²)/Applied 2026. 1. 5. 06:31
LLM 모델을 함수의 파라미터로 전달하여 에이전트 로직과 모델 선택을 분리하는 설계 패턴용어 정의⚠️ Note: 이 문서에서 설명하는 패턴은 공식적인 명칭이 없습니다.기존 소프트웨어 설계 패턴(Dependency Injection, Strategy Pattern)을 LLM 컨텍스트에 적용한 것입니다. 이 패턴을 설명하는 다양한 표현Dependency Injection for LLM - DI 패턴의 LLM 적용Strategy Pattern for Model Selection - 전략 패턴 관점Provider Abstraction - 프로바이더 추상화Pluggable LLM Backend - 교체 가능한 LLM 백엔드Model as Configuration - 모델을 설정으로 취급실제 구현 사례Cursor ..
-
LLM Gateway & Unified Interface Pattern이코에코(Eco²)/Applied 2026. 1. 5. 06:16
AI 에이전트 시스템에서 LLM 모델 선택을 에이전트 로직과 분리하는 아키텍처 패턴용어 정의⚠️ Note: 이 문서에서 다루는 개념들은 업계에서 다양한 명칭으로 불립니다.공식적으로 통일된 명칭은 없으며, 아래와 같은 용어들이 실제로 사용됩니다.실제 사용 용어사용처설명LLM Gateway / AI GatewayCloudflare, Kong, AWSLLM 요청을 중앙에서 관리하는 게이트웨이LLM Router당근, Martian모델별로 요청을 라우팅하는 컴포넌트Unified LLM InterfaceLiteLLM, OpenRouter여러 Provider를 하나의 API로 통합Multi-Provider SupportLangChain, LiteLLM다중 LLM Provider 지원Model Abstraction L..