728x90

1. Model I/O

2. Retrieval

3. Agents

4. Chains

5. Memory

6. Callbacks

 

 

1. Model I/O

모델의 입출력 관련 요소들을 살펴보자.

 

모델(Models)

랭체인에서 사용하는 모델에 대한 개념은 두 가지로 나뉜다.

 

LLMs VS. Chat Models

LLMs는 텍스트 완성 모델(completion model), Chat Models는 대화에 특화되어 튜닝된 모델이다. Chat Models는 텍스트 완성 모델과 다른 인터페이스를 사용한다. LLMs와 Chat Models의 프롬프트 전략은 달라질 수 있다.

메시지(Messages)

메시지에는 몇 가지 유형이 있으며, 모든 메시지에는 role과 content 속성이 있다.

*메시지 종류: HumanMessage, AIMessage, SystemMessage, FunctionMessage, ToolMessage

 

프롬프트(Prompts)

언어 모델에 대한 입력을 프롬프트라고 부르나, 앱의 사용자 입력이 모델에 대한 직접적인 입력이 아닌 경우가 많다. 사용자 입력을 받아 최종 문자열이나 메시지로 변환하는 개체를 "프롬프트 템플릿"이라고 한다.

1. PromptValue

2. PromptTemplate

3. MessagePromptTemplate

4. MessagesPlaceholder

5. ChatPromptTemplate

 

출력 파서(Output Parsers)

출력 파서는 모델의 출력을 가져와 사용 가능한 형식으로 변환하는 역할을 한다.

*파서 종류

1) StrOutParser

언어 모델(LLM 또는 Chat Model)의 출력을 문자열로 변환하는 간단한 출력 파서

 

2) OpenAI Fumctions Parsers

OpenAI 함수 호출 작업 전용 파서로, 내부에 있는 function_call 및 매개변수의 출력을 가져온다.

 

3)Agent Output Parsers

에이전트는 언어 모델을 사용하여 수행할 단계를 결정하는 시스템이다. 언어 모델의 출력은 수행할 작업이 있는 경우, 이를 나타낼 수 있는 스키마로 구문 분석되어야 한다. Agent Output Parser는 출력을 가져와 해당 스키마로 변환해준다.

 

2. Retrieval

검색 증강 생성(Retrieval Augmented Generation, RAG)을 이용하여 외부 데이터를 검색한 후 생성 단걔를 수행할 때 LLM으로 전달한다.

Document loaders -> Text Splitting(작은 덩어리로 분할, 또는 청크화) -> Text embedding models(25개 이상의 임베딩 제공) -> Vector stores(50개 이상의 다양한 벡터 저장소와의 통합 제공) -> Retrievers(하단 내용 참고)-> Indexing(벡터 저장소에 중복된 콘텐츠를 사용하지 않게하는 기능 등 지원)

 

*Retrievals

Parent Document Retriever: 작은 청크를 조회하지만 더 큰 컨텍스트 반환 가능

Self Query Retriever: 의미 부분 구문 분석 가능

Ensemble Retriever: 여러 다른 알고리즘을 사용하여 문서 검색 가능

3.  Agents

에이전트는 언어 모델을 사용하여 수행할 작업을 선택하기 위한 것이다.

다음은 에이전트 유형을 선택을 위해 표로 내용을 구성해 놓은 것이다.

https://python.langchain.com/docs/modules/agents/agent_types/

 

도구

도구는 에이전트의 프로세스 중 수행하는 특정 기능이다. 외부 환경에 영향을 주어 새로운 정보를 관찰한다. LLM에게 지식과 계산 능력을 부여하는 역할을 한다. 예: New API

 

4. Chain

체인은 calls의 시퀀스로, LCEL을 사용하여 체인을 구성한다.

이밖에 Legacy 체인에 대한 정보는 다음 링크 참고:

https://python.langchain.com/docs/modules/chains#legacy-chains

 

5. Mermory

1)

from langchain.memory import ConversationBufferMemory

-> 기본적으로 대화 기록

2)

from langchain.memory import ConversationBufferWindowMemory

-> 마지막 n개의 대화 기록

3)

from langchain_openai import OpenAI
from langchain.memory import ConversationEntityMemory
llm = OpenAI(temperature=0)

-> 개체에 대한 정보 저장

4)

from langchain.memory import ConversationKGMemory
from langchain_openai import OpenAI

-> 지식 그래프(Knowledge Graph); 정보를 기반으로 한 그래프 형태의 데이터 구조를 사용하여 메모리 재생성

5)

from langchain.memory import ConversationSummaryMemory, ChatMessageHistory
from langchain_openai import OpenAI

-> 대화 요약본 저장

6)

from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import OpenAI
llm = OpenAI()

-> 대화 요약본 + 마지막 n개 토큰 기억

7)

from langchain.memory import ConversationTokenBufferMemory
from langchain_openai import OpenAI
llm = OpenAI()

-> 마지막 n개 토큰 기억

8)

from datetime import datetime
from langchain_openai import OpenAIEmbeddings
from langchain_openai import OpenAI
from langchain.memory import VectorStoreRetrieverMemory
from langchain.chains import ConversationChain
from langchain.prompts import PromptTemplate

-> 벡터DB에 정보 저장

 

6. Callbacks

LangChain은 LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공한다. 이는 로깅, 모니터링, 스트리밍 및 기타 작업에 유용하다.

728x90

+ Recent posts