AI 12

[LangChain] 멀티턴 구현 Memory

OpenAI API 단독 Memory 관리대화 문맥을 기억하기 위해 아래와 같이 대화 기록을 매번 append모델이 가진 context window 한계 때문에 대화 기록을 무한정 append 불가Context window 는 입력 + 출력 토큰의 총합 한도이며 이걸 초과하면 모델이 호출 자체를 거부입력 토큰이 너무 많으면 출력에 쓸 수 있는 공간이 줄어듬OpenAI API 단독으로는 자동 대화 관리 기능이 없으므로 직접 오래된 메시지를 삭제하거나 요약하는 로직을 구현해야 함e.g.오래된 메시지를 앞에서부터 제거오래된 히스토리를 LLM 으로 요약한 뒤 요약 결과를 새로운 system message 로 교체messages = [ { 'role': 'system', 'content': 'y..

AI/LLM 2025.10.31

[LangChain] LCEL

LangChain Expression Language (LCEL)Runnable 객체들을 파이프 (|) 로 연결하는 문법적 표현 (Runnable 객체 연결. Runnable 결과 연결이 아님)파이프는 Runnable 객들을 연결시킴. 예외적으로 Runnable 이 아닌 callable 객체가 오면 LCEL 파이프에서는 해당 callable 을 내부적으로 RunnableLambda 로 감싸줘 Runnable 객체로 만들어줌| 와 RunnableSequence 는 동일. 내부적으로 | 연산자가 RunnableSequence 를 생성하는 syntactic sugar 표현e.g. prompt | llm | StrOutputParser() 와 RunnableSequence(prompt, llm, StrOutpu..

AI/LLM 2025.10.10

[LangChain] 개요

LangChain 사용 이유LLM API 를 단독으로 사용할때보다 훨씬 간결하게 기능 구현 가능프롬프트 관리, 메모리, 체이닝, 툴 호출, RAG, 에이전트 같은 기능을 체계적으로 제공langchain-openai기존: 모든 공급자 (예: OpenAI, Anthropic, HuggingFace 등) 가 langchain 본체 안에 혼재변경: 의존성 폭발과 업데이트 속도 차이 때문에 공급자별 패키지 분리LangChain 의 주요 기능LLM 기본 호출프롬프트 템플릿 관리메모리 사용 (대화 맥락 유지)체인 구성 (여러 단계 처리, 기능 모듈화)RAG 간편 구현 (샘플 체인으로 이미 구현되어 있음)Agent 간편 구현즉, 일일이 프롬프트를 구성하여 결과를 재사용하는 과정, LLM 의 결과에 따라 특정 함수를 호..

AI/LLM 2025.10.02

Prompt Engineering

Prompting 원칙명확한 지침을 내릴 것입력에서 특정 부분을 명확히 강조하기 위해 ```, """, , , : 등의 delimiter (구분자) 사용할 것출력 형식을 JSON, HTML, 혹은 그 외 직접 설정한 structured ouput 형태로 요청할 것최대한 명확하고 자세하게 설명할 것짧은 프롬프트보다 긴 프롬프트가 더 효과적조건을 만족하면 어떠한 답변을, 만족하지 않으면 어떠한 답변을 주라는 식으로 명확히 지침모델이 생각할 시간을 줄 것작업을 완료하는 데 필요한 절차를 하나하나 명확하게 설명할 것모델이 스스로 생각하게끔 지시하기여러가지 팁잘못된 공백, 들여쓰기 등이 성능에 큰 영향을 미치지 않을 수 있으나 여전히 고려하기테스트를 해보며 프롬프트 계속해서 수정해보기고급 프롬프팅 기술Few-sh..

AI/LLM 2025.09.24

OpenAI API

API Key 적용 방식client 객체를 생성할 때 api_key 인자를 직접 지정api_key 인자를 지정하지 않았다면 환경변수 OPENAI_API_KEY 값을 읽어와서 client 객체를 초기화 (다른 이름이면 안됨)import osimport openai# Case 1: client 객체 생성 시 API Key 직접 할당client = openai.OpenAI(api_key="sk-xxxx") # 직접 할당import osimport openai# Case 2: client 객체 생성 시 API Key 미할당 → OpenAI 클래스가 초기화 시점에 환경변수 OPENAI_API_KEY 값을 자동으로 읽어 사용os.environ["OPENAI_API_KEY"] = "sk-yyyy" # 미리 환경변..

AI/LLM 2025.08.19

LangChain

LangChainLangChain 은 LLM 기반 애플리케이션을 구성하는 프레임워크로, 다양한 모듈 (LangChain Components) 을 조합해 복잡한 LLM 기반 파이프라인을 구성하는 기능을 제공합니다. LangChain 은 Agent 뿐 아니라, PromptTemplate, Tool, Chain, Memory 등 다양한 구성 요소를 제공하며, Agent 는 외부 Tool 들과 LLM 을 동적으로 연결해 문제를 해결하는 방식의 한 예입니다. 한 편, LangChain 이 LLM 을 중심으로 설계된 건 맞지만, 전체 구조는 LLM 을 선택적으로 사용하는 조합형 프레임워크이기 때문에 LangChain 을 사용할 때 LLM 이 필수 구성 요소는 아닙니다.LangChain 의 Agent 는 LLM 의 ..

AI/LLM 2025.05.08

LLM Agent

LLM AgentLLM Agent 는 LLM 이 사용자 입력이나 외부 환경에 따라 적절한 판단을 내려, 사전에 정의된 도구 (tool), 함수 (function), API 등을 자율적으로 호출하거나 실행할 수 있는 구조를 가진 시스템입니다. 즉, 단순한 문장 생성 모델이 아니라, 행동 가능한 의사결정 주체로서의 LLM 을 의미합니다.LLM Agent 구현 방법LLM Agent 는 단순한 답변 생성기를 넘어 복잡한 조건 분기를 스스로 판단해 다음 단계를 결정할 수 있어야 합니다. 이를 위해 LLM 에게 function call, tool use, 분기 판단을 학습시키거나 프롬프트로 유도합니다. LangChain 은 Agent 시스템을 쉽게 만들 수 있도록 도와주는 프레임워크입니다. 하지만 LangChain..

AI/LLM 2025.04.24

RAG

RAG (Retrieval-Augmented Generation)R (Retrieval, 검색): 외부 데이터베이스에서 관련 정보를 검색A (Augmented, 증강): 검색된 정보를 LLM 입력 (prompt) 에 추가하여 활용G (Generation, 생성): 프롬프트를 통해 제공된 외부 데이터를 참고하여 최종 답변을 생성즉, RAG 는 시스템 설계자가 LLM 을 외부 데이터베이스와 미리 연결한 후, 질의가 들어올 때마다 외부 정보를 검색하여 프롬프트를 통해 정보를 증강시켜 답변 품질을 향상시키는 방식입니다. 검색 자체는 단순한 데이터 조회이며, 검색한 데이터가 LLM 의 모델 자체에 축적되지는 않기 때문에 검색해온 데이터를 프롬프트를 통해 LLM 에 직접 추가해주어야 합니다. RAG 는 LLM 자체..

AI/LLM 2025.02.20

NLP 간단 정리

텍스트 전처리 (Preprocessing)텍스트를 모델이 이해할 수 있는 형태로 변환하는 과정텍스트를 정제하여 학습 데이터 불균형을 방지하고 성능 저하를 막음학습과 테스트 과정 모두 사용모델을 평가할 때, 학습 데이터와 동일한 방식으로 전처리해야 일관된 결과가 나옴딥 러닝 모델 사용 여부에 따라 전처리 정도가 달라질 수는 있으나, 전통적인 NLP 방식과 딥 러닝 기반의 NLP 방식 모두에서 전처리는 중요한 과정텍스트 전처리의 주요 단계텍스트 정제 (Cleaning)HTML 태그, 이모지, 특수문자 제거ex. "Hello!" → "Hello!"토큰화 (Tokenization)문장을 단어 또는 서브워드 단위로 분리ex. "I love NLP!" → ["I", "love", "NLP", "!"]정규화 (Nor..

AI/NLP 2025.02.11