본문 바로가기
인공지능/LangChain

[LangChain] 공식문서 Conceptual Guide docs (2) Components

by 이준언 2024. 7. 21.

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