Langchain이란?
언어 모델을 기반으로 하는 애플리케이션을 개발하기 위한 프레임워크이다.
Langchian의 모듈
Model I/O : 언어 모델과의 인터페이스
Retrieval : 애플리케이션별 데이터와의 인터페이스
Chains : 호출 시퀀스 구성
Agents : 체인이 주어진 높은 수준의 지시문에 사용할 도구를 선택하도록 허용
Memory : 체인 실행 간에 애플리케이션 상태 유지
Callbacks : 모든 체인의 중간 단계를 기록하고 스트리밍합니다.
설치방법
pip install langchain
export OPENAI_API_KEY="..."
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
LLMChain
LangChain의 가장 핵심이 되는 컴포넌트
체인에서는 아래의 3가지를 조합한다:
LLM - 언어모델은 핵심적인 추론 엔진으로 다양한 언어보델이 사용 가능하다
Prompt Templates - 언어모델에 전달하는 지시사항 을 관리한다. 이는 언어모델의 출력 결과에 영향을 주기 때문에 프롬프트를 작성하는 방법은 매우 중요하다.
Output Parsers - 출력 파서는 LLM이 리턴하는 결과를 사용 가능한 형식으로 전환하여 아웃풋을 사용할 수 있도록 한다.
from langchain.chat_models import ChatOpenAI
api_key = "your-api-key"
chat_model = ChatOpenAI(openai_api_key=api_key)
chat_model.predict("하늘은 무슨색일까?")
from langchain.prompts import PromptTemplate
template = """질문에 대해 친절하게 답변해주는 챗봇이에요
질문: {question}"""
prompt = PromptTemplate.from_template(template)
chat_model.predict(prompt.format(question="졸음이 올때 어떻게 해야할까?"))
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser
class CommaSeparatedListOutputParser(BaseOutputParser):
"""LLM 아웃풋에 있는 ','를 분리해서 리턴하는 파서."""
def parse(self, text: str):
return text.strip().split(", ")
template = """
너는 맛있는 과일을 추천해주는 AI이야
추천하는 과일 5개를 나열하고
각 단어는 반드시 comma(,)로 분리해서 대답해주고 다른 말은 하지 마
질문:"""
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chain = LLMChain(
llm=ChatOpenAI(openai_api_key = api_key),
prompt=chat_prompt,
output_parser=CommaSeparatedListOutputParser()
)
chain.run("맛있는 과일 추천해줘")
공감하며 읽었습니다. 좋은 글 감사드립니다.