Components
LangChain은 LLMs를 사용하여 다양한 작업을 수행할 수 있도록 여러 구성 요소에 대한 표준화된 인터페이스와 integrations를 제공한다.
1. Chat Models
Chat models는 메시지 시퀀스를 입력받아 채팅 메세지를 출력하는 언어 모델이다. 전통적인 LLM과 달리, 각 메세지에 역할을 할당하여, AI, 사용자, 시스템 메세지를 구분할 수 있다.
Chat models는 문자열을 입력으로 받아 HumanMessage로 변환 후 모델에 전달한다. 이를 통해 Chat models를 LLM처럼 쉽게 사용할 수 있다. Chat models에서 LangChain은 외부 통합을 통해 사용되며, 표준화된 매개변수를 제공하여 다양한 모델을 일관되게 사용할 수 있도록 한다.
- 표준화된 매개변수
- model
- temperature
- timeout
- max_tokens
- stop
- max_retries
- api_key
- base_url
- Multimodality
멀티모달리티는 AI 모델이 텍스트뿐만 아니라 이미지, 오디오, 비디오 등 다양한 입력 형식을 처리할 수 있는 기능이다. 이러한 모델들은 아직 흔하지 않으며, API 정의에 대한 표준도 확립되지 않았다. 그러나 LangChain은 이러한 멀티모달 기능을 지원하는 모델들을 위한 추상화를 제공하여 개발자들이 쉽게 사용할 수 있도록 하고 있다.
LangChain에서 대부분의 멀티모달 입력을 지원하는 채팅 모델은 OpenAI의 콘텐츠 블록 형식을 사용하여 이미지 입력을 처리한다. 예를 들어, OpenAI의 모델들을 이미지 데이터를 특정 형식으로 받아들이고 이를 처리할 수 있다.
2. Prompt templates
Prompt templates는 사용자 입력과 매개변수를 언어 모델에 대한 명령으로 변환하는 데 도움을 준다. 이를 통해 모델이 문맥을 이해하고 관련성 있는 일관된 언어 기반 출력을 생성하도록 돕는다.
Prompt templates는 dictionary를 입력으로 받으며, 각 키가 프롬프트 템플릿의 변수를 의미한다. 출력은 ‘PromptValue’로, 이는 LLM 또는 ChatModel에 전달될 수 있으며 문자열이나 메세지 목록으로 변환할 수 있다.
- Prompt Templates 유형
- String PromptTemplates
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")
prompt_template.invoke({"topic": "cats"})
- ChatPromptTemplates
메세지 목록을 포맷하는 데 사용되며, 목록 자체가 템플릿으로 구성됨.
여러 개의 메세지를 포함할 수 있어 복잡한 대화를 처리하는 데 적합.
from langchain_core.prompts import ChatPromptTemplate
prompt_template = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant"),
("user", "Tell me a joke about {topic}")
])
prompt_template.invoke({"topic": "cats"})
- MessagesPlaceholder
특정 위치에 메세지 목록을 추가하는 템플릿.
사용자로부터 여러 메세지를 받아 특정 위치에 삽입할 수 있음. 동적인 대화 흐름을 유지하는 데 유용
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessage
prompt_template = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant"),
MessagesPlaceholder("msgs")
])
prompt_template.invoke({"msgs": [HumanMessage(content="hi!")]})
3. Chat History
대부분의 LLM 어플리케이션은 대화형 인터페이스를 갖고 있다. 대화의 주요 요소는 이전 대화에서 소개된 정보를 지칭할 수 있어야하는 점이다. 최소한 대화형 시스템은 이전 메세지에 직접적으로 접근할 수 있어야한다.
ChatHistory의 기본 개념은 임의의 체인을 감싸는 데 사용할 수 있는 LangChain의 클래스를 의미한다. 이는 기본 체인의 입력과 출력을 추적하고 메세지 데이터베이스에 메세지를 추가한다. 그러면 향후 상호작용이 해당 메세지를 불러와서 입력의 일부로 체인에 전달한다.
참조
https://python.langchain.com/v0.2/docs/concepts
Conceptual guide | 🦜️🔗 LangChain
This section contains introductions to key parts of LangChain.
python.langchain.com
'인공지능 > LangChain' 카테고리의 다른 글
[LangChain] 공식문서 Build a Chatbot 실습 (2) (2) | 2024.07.26 |
---|---|
[LangChain] 공식문서 Build a Chatbot 실습 (1) (0) | 2024.07.25 |
[LangChain] 공식문서 Conceptual Guide (1) Architecture, LCEL (0) | 2024.07.21 |
[LangChain] 2. 초거대언어모델 (LLM) (0) | 2024.07.16 |
[LangChain] 1. LangChain에 대해서 (2) | 2024.07.16 |