본문 바로가기

반응형

전체 글

(290)
[Claude] Claude Code Cross-session messaging 기능 Claude Code를 터미널 두세 개에 띄워놓고 쓰다 보면, 한 session이 다른 session에 메시지를 보내는 장면을 보게 된다. 2026년 8월 v2.1.224에 들어온 cross-session messaging 기능이다. 이 글은 이 기능이 무엇이고 무엇을 할 수 있고 어떻게 쓰는지 공식 문서 기준으로 정리한다.1. Cross-session messagingcross-session messaging은 내 Claude Code session 하나가 내 다른 session에 텍스트 메시지를 전달하는 기능이다. 문서의 정의는 이렇다.A message is a piece of text one Claude writes to another, never the sender's conversation hi..
[Django] 세션 쿠키 생성/검증과 nginx proxy 관련 사고 서비스의 새로운 기능을 테스트 하던 중 특정 화면에서 갑자기 로그아웃이 발생했다. 사용자가 아무것도 하지 않았는데 몇 초 뒤 로그인 화면으로 튕겨나갔다. 서버 로그에는 세션이 없다는 메시지만 남아 있었고 세션 만료 시간은 한참 남아 있었다. 원인은 nginx 설정 한 줄과 브라우저 fetch 의 기본값이 만나서 생긴 것이었다. 이 사고를 이해하려면 Django 세션이 정확히 어디에 있고, 누가 만들고, 누가 확인하는지를 알아야 한다. 이번 글에서는 Django 세션의 구조와 라이프사이클을 먼저 정리하고 그 위에 사고를 올려놓고 왜 로그아웃이 났는지 따라가 보겠다. 회사 코드는 그대로 쓸 수 없어서 같은 구조의 가상 서비스로 각색했다.세션과 세션 쿠키가장 먼저 분리해야 할 개념이다. 흔히 "세션 쿠키" 라..
[AI Agent] AI Agent 채팅 서비스의 SSE 스트리밍 중단과 처리 방법 AI agent 서비스를 개발하며 겪은 문제들을 예제 프로젝트로 재구성해 정리하는 시리즈이다. 예제 코드는 parcel-bot repo 에 있고 docker compose 로 전부 재현할 수 있다. 지난 글에서 ASGI와 LangGraph으로 구현한 스트리밍 구성을 확인했다. 운영 환경에서는 스트리밍의 중단 상황을 고려해야 한다. 스트리밍이 중단되면 무슨 일이 일어나는가. LLM 호출이 실패했을 때, 응답이 오래 걸릴 때, 사용자가 화면을 떠났을 때 각각 클라이언트에는 무엇이 보이고 서버는 무엇을 해야 하는가. 이번 글에서는 운영에서 실제로 겪는 중단 상황들을 빈도 순으로 정리하고 각각의 처리를 구현해보겠다.스트리밍 중단 기준본문으로 들어가기 전에 판단 기준을 하나 세우려한다. 스트리밍 중단 상황의 처리..
[LLM] LangGraph의 node 실행 방식 LangGraph 로 graph 를 만들다 보면 각 node가 어떻게 동작하는지, graph의 실행 방식에 대한 의문이 생긴다. node 를 sync 함수로 쓸 때와 async 함수로 쓸 때 무엇이 달라지는가. stream() 과 astream() 은 node 를 어떻게 다르게 실행하는가. sync node 를 astream() 으로 실행해도 되는가. 이번 글에서는 LangGraph 소스를 따라가며 node 가 실제로 어떻게 실행되는지 확인해보겠다. 기준 버전은 langgraph 1.2 이다.요약결론부터 먼저 보겠다. sync API (invoke/stream)async API (ainvoke/astream)sync node (def)호출 스레드에서 직접 실행워커 스레드에 위임 (executor)asy..
[AI Agent] ASGI 에서 LangGraph 스트림 버퍼링 문제 (iterator 와 서버의 조합) AI agent 서비스를 개발하며 겪은 문제들을 예제 프로젝트로 재구성해 정리하는 시리즈이다. 예제 코드는 parcel-bot repo 에 있고, docker compose 로 전부 재현할 수 있다. 이번 글은 이 시리즈를 시작하게 만든 문제를 다룬다. Django 와 LangGraph 로 만든 서비스에 성능을 높이기 위해 async 를 도입하는 과정에서, LangGraph 스트림이 통째로 버퍼링되는 문제를 만났다. 이전 글에서 정리한 iterator 와 서버의 관계를 정리했던 것처럼 이번 글에서는 문제를 재현하고 원인과 해결 방법을 확인해보겠다.문제 상황Django 와 LangGraph 로 구성된 AI agent 서비스가 있다. agent 의 응답은 SSE 로 스트리밍한다. def recommend(s..
[AI Agent] WSGI 에서 Django SSE 스트리밍 버퍼링 문제 AI agent 서비스를 개발하며 겪은 문제들을 예제 프로젝트로 재구성해 정리해보려 한다. 예제 코드는 parcel-bot repo에 있고, docker compose로 전부 재현할 수 있다. LLM은 mock으로 대체했기 때문에 API key 없이 실행 가능하다. 이번 글에서는 SSE 스트리밍 응답이 WSGI 환경에서 버퍼링되는 문제를 재현하고 원인을 확인해보겠다.문제 상황LLM 챗봇의 답변을 ChatGPT처럼 토큰 단위로 출력하기 위해 SSE(Server-Sent Events) 응답을 구현했다. SSE는 HTTP 연결을 유지하면서 서버가 이벤트를 계속 전달하는 방식이다. 그런데 브라우저에서 확인해보면 토큰이 하나씩 출력되는 것이 아니라, 한참 동안 아무것도 출력되지 않다가 답변 전체가 한 번에 출력된..
[LLM] LangChain 1. LangChain 이란?LnagChain 은 LLM agent 나 애플리케이션 개발을 편리하게 해주는 프레임워크이다. OpenAI, Anthropic, Google 등 다양한 LLM provider 와 연동할 수 있는 인터페이스를 제공하여 agent 를 개발하는데 사용할 수 있다. 이 외에도 HTTP API 호출, 데이터베이스 연동 등 다양한 tool 을 호출하여 사용할 수 있고, vector store, retriever 등을 사용하여 RAG 도 구현할 수 있다.2. LangChain 장점LangChain 을 사용하는 이유는 LLM 을 사용하는 agent 나 application 의 개발을 위한 다양한 기능들을 제공해주기 때문이다. 만약 LangChain 을 사용하지 않으면 OpenAI 나 Gem..
[LLM] RAG (Retrieval-Augmented Generation) 1. RAG 란?RAG (Retrieval-Augmented Generation) 은 LLM 이 새로운 정보를 검색하고 통합할 수 있도록 하는 기술이다. LLM 이 외부 데이터 소스에서 정보를 검색한 뒤, 그 결과를 기반으로 응답을 생성하는 구조로 구성된다. LLM 을 단독으로 사용했을 때 없는 사실을 생성하는 Hallucination 문제나, 최신 데이터 부족으로 인한 문제 등이 발생한다. RAG 를 사용하면 모델의 학습에 사용된 데이터 이외에 새로운 추가 정보를 제공함으로 이러한 문제들을 해결할 수 있다. 또한 응답 생성에 참고해야 하는 내용을 제공함으로 사용자가 원하는 내용을 더 정확하게 얻을 수 있다.2. RAG 핵심 개념 및 동작 흐름1) Indexing사전 준비 단계로 RAG 를 구성하기 위해..

반응형