Langchian

후니·2023년 11월 14일
0

파이썬

목록 보기
3/3

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가지를 조합한다:

  1. LLM - 언어모델은 핵심적인 추론 엔진으로 다양한 언어보델이 사용 가능하다

  2. Prompt Templates - 언어모델에 전달하는 지시사항 을 관리한다. 이는 언어모델의 출력 결과에 영향을 주기 때문에 프롬프트를 작성하는 방법은 매우 중요하다.

  3. Output Parsers - 출력 파서는 LLM이 리턴하는 결과를 사용 가능한 형식으로 전환하여 아웃풋을 사용할 수 있도록 한다.

  1. ChatGPT 모델 활용
from langchain.chat_models import ChatOpenAI

api_key = "your-api-key"
chat_model = ChatOpenAI(openai_api_key=api_key)

chat_model.predict("하늘은 무슨색일까?")
  1. Prompt templates 작성하기
from langchain.prompts import PromptTemplate

template = """질문에 대해 친절하게 답변해주는 챗봇이에요
질문: {question}"""

prompt = PromptTemplate.from_template(template)

chat_model.predict(prompt.format(question="졸음이 올때 어떻게 해야할까?"))
  1. LLMChain으로 활용하기
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("맛있는 과일 추천해줘")

2개의 댓글

comment-user-thumbnail
2023년 11월 14일

공감하며 읽었습니다. 좋은 글 감사드립니다.

1개의 답글