본문 바로가기

전체 글178

4. [Docker & PostgreSQL] 장기 메모리(Long-term Memory)(1) 지금 하려는 것은 우리가 지금까지 만든 짧은 대화 기억(History + Summary)에서 한 단계 발전해서,Agent가 대화가 끝나도 중요한 정보를 PostgreSQL DB에 저장하고, 나중에 다시 꺼내 사용하는 장기 메모리(Long-term Memory)를 만드는 것입니다.그리고 지금까지 해오신 Python → OpenAI API → Agent → History → Summary 학습 흐름에서 아주 자연스러운 다음 단계입니다. [전체 요약]# 1. Docker Desktop 설치 # 2. PowerShell 또는 CMD: docker --version ===> Docker version 29.7.2, build a7dcaa6 docker ps .. 2026. 9. 1.
3. [History+Summary] 자동 대화 요약 메모리를 탑재한 대화형 챗봇 봇(CLI) 단발성 테스트 스크립트를 넘어, 실제 터미널(CLI) 환경에서 사용자와 주고받는 실시간 대화 루프(while True)와 슬라이딩 윈도우 기반 요약 메모리를 결합한 완성형 챗봇 애플리케이션입니다. #Chat_Loop (대화 루프): 사용자가 /quit을 입력하기 전까지 연속적으로 메시지를 입력받고 응답하는 무한 루프 구조입니다.#CLI_Command (특수 명령어): 챗봇 대화 중 /history, /summary, /reset과 같은 명령어로 대화 이력을 조회하거나 상태를 관리하는 기능입니다.#System_Prompt (시스템 프롬프트): AI에게 역할(Assistant), 답변 규칙, 요약 정보 참조 방식 등을 미리 지시하는 핵심 명령문입니다.#Summary_Memory (요약 메모리): 누적된 오래.. 2026. 8. 31.
2. [Summary Memory] 대화 이력 슬라이딩 윈도우 및 자동 요약 압축 시스템 이전 코드에서 한 단계 더 발전하여 대화 개수 기준(슬라이딩 윈도우)을 적용해 대화 이력(History)을 자동으로 잘라내고 요약 및 압축하는 완성형 파이썬 스크립트입니다. #History_Management (대화 이력 관리): 대화형 AI가 이전 맥락을 기억하도록 대화 목록을 저장하고 전달하는 메커니즘입니다.#Sliding_Window (슬라이딩 윈도우): 전체 대화 중 최근 $N$개의 메시지만 최신 상태로 유지하고, 나머지 오래된 메시지는 분리해내는 기법입니다.#Context_Compression (컨텍스트 압축): 오래된 대화들을 LLM에 전달해 3줄 요약문으로 만든 뒤 system 메시지로 변환하여 전체 토큰 수를 대폭 줄이는 기술입니다.#List_Slicing (리스트 슬라이싱): 파이썬의 m.. 2026. 8. 31.
1. [Short-term Memory] 대화 이력 자동 압축 및 요약 시스템 대화가 길어질 때 발생하는 토큰 사용량 증가와 비용 문제를 해결하기 위해, 이전 대화 내용(History)을 OpenAI 모델을 통해 핵심만 3줄로 자동 요약해주는 파이썬 스크립트입니다. #Context_Window (문맥 창) 및 토큰 관리: 대화가 길어질수록 전달되는 텍스트(토큰)량이 늘어나 비용이 급증합니다. 이를 해결하기 위해 오래된 대화를 요약하여 압축(Summarization)하는 기법이 필수적입니다. 1. 환경 설정 및 라이브러리 로드import osfrom dotenv import load_dotenvfrom openai import OpenAIload_dotenv()API_KEY = os.getenv("OPENAI_API_KEY")MODEL_NAME = os.environ.get("MOD.. 2026. 8. 31.
XVII. AI Agent Engine 기본 완성: Python · Agent Loop · Tool Dispatcher · Function Call · Context Block · History Trim # 1. import import os import json import time import logging import inspect from pathlib import Path from datetime import datetime from dataclasses import dataclass, field from typing import Any from dotenv import load_dotenv from openai import OpenAI # ============================================================ # 2. Environment settings # ===========.. 2026. 8. 30.
XVI. 작은 AI Agent에 5가지 기능을 추가한 프로그램(끝) # 1. Tools from pathlib import Path def calculator(expr:str)->str: """(20*4)+15와 같은 간단한 산술 표현식을 계산합니다.""" allowed = set("0123456789+-*/().") expr = expr.replace(" ", "") if not expr or not set(expr) allowed: return "오류: 숫자와 +-*/().만 허용됩니다." try: return str(eval(expr)) except (SyntaxError, ZeroDivisionError) as e: .. 2026. 8. 26.