langchain 기반의 LLM 애플리케이션 개발을 위해 chain 및 agent 모듈 사용을 위한 단계적 가이드 – 2부) SequentialChain

개요

1부 글에서 비교적 간단하게 주어진 prompt에 대한 답을 얻는 LLMChain에 대해서 설명했다면 이번에는 뒤이어 조금 더 복잡한 경우에 사용할 수 있는 SequentialChain에 대해서 설명한다.

순차 체인은 한 체인의 출력이 다음 체인의 입력이 되는 여러 체인을 결합합니다. 일련의 체인을 차례로 실행합니다. 순차 체인에는 두 가지 유형이 있습니다.

  1. SimpleSequentialChain — 단일 입력/출력
  2. SequentialChain — 다중 입력/출력

SimpleSequentialChain

이는 각 단계에 단일 입력/출력이 있고 한 단계의 출력이 다음 단계의 입력이 되는 가장 간단한 형태의 순차 체인입니다. 이는 하나의 입력만 예상하고 하나의 출력만 반환하는 하위 체인이 있을 때 잘 작동합니다.

아래 샘플 코드는 연극 제목을 입력하면 거기에 맞는 연극 시놉시스가 만들어지고, 다시 그 시놉시스에 대한 리뷰가 연달아서 생성되는 예제입니다.

import os
# 환경변수에 OPENAI_API_KEY를 설정합니다.
os.environ["OPENAI_API_KEY"] = "sk-XXXXXXXXXXXXXXXXXXXXXXX" 

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# This is an LLMChain to write a review of a play given a synopsis.
llm = ChatOpenAI(temperature=0.7, model="gpt-3.5-turbo")
template = """당신은 드라마 작가입니다. 드라마 제목이 주어지면 해당 제목에 대한 시놉시스를 작성하는 것이 귀하의 임무입니다.

제목:{title}
시놉시스:"""

prompt_template = PromptTemplate(input_variables=["title"], template=template)
synopsis_chain = LLMChain(llm=llm, prompt=prompt_template)
# This is an LLMChain to write a review of a play given a synopsis.
llm = ChatOpenAI(temperature=0.7, model="gpt-3.5-turbo")
template = """당신은 대한민국 최고 수준의 드라마 평론가입니다. 드라마의 시놉시스가 주어지면 해당 드라마에 대한 리뷰를 작성하는 것이 당신의 임무입니다.

드라마 시놉시스:
{synopsis}
드라마 시놉시스에 대한 평론가의 글:"""
prompt_template = PromptTemplate(input_variables=["synopsis"], template=template)
review_chain = LLMChain(llm=llm, prompt=prompt_template)
# This is the overall chain where we run these two chains in sequence.
from langchain.chains import SimpleSequentialChain
overall_chain = SimpleSequentialChain(chains=[synopsis_chain, review_chain], verbose=True)

drama_title = "초능력자들의 사랑과 전쟁"
review = overall_chain.run(drama_title)
print(review)

위의 코드를 실행하면 아래와 같이 드라마 시놉시스와 리뷰글이 생성됩니다.

> 드라마 시놉시스...
드라마 "초능력자들의 사랑과 전쟁"은 현대 사회에서 초능력을 가진 사람들의 이야기를 다루고 있습니다. 이 드라마는 초능력을 가진 주인공들이
 자신들의 특별한 능력을 이용하여 사랑과 전쟁 속에서 자아를 찾아가는 과정을 그립니다.

이 드라마는 주인공들의 다양한 초능력을 통해 세상을 변화시키려는 이상을 추구하는 모습을 보여줍니다. 그러나 초능력을 가진 사람들은 사회적
으로 격리되고 혐오를 받기 때문에 자신들의 능력을 감추고 살아가야 하는 현실에 직면하게 됩니다. 이들은 자신들의 실체를 드러내는 데 어려움
을 겪으며, 당면한 문제들을 해결하기 위해 결집하게 됩니다.

드라마에서는 주인공들이 서로의 능력과 지식을 공유하여 사회적인 문제들에 대처하고, 사랑과 우정의 힘으로 서로를 지지해주는 모습을 보여줍 
니다. 그러나 이들의 능력이 공개되면 사회적인 혐오와 전쟁의 위협에 직면하게 됩니다. 이들은 자신들의 초능력을 숨기면서도 사회 문제들에 대
처하고, 사랑과 용기를 통해 세상을 변화시키려 합니다.

> 드라마 리뷰...
"초능력자들의 사랑과 전쟁"은 초능력을 가진 인간들의 내면적인 고민과 사회적인 갈등을 다루면서, 우리 사회에서 소외되고 억압되는 개인들의 
이야기를 담고 있습니다. 이 드라마는 초능력으로 인해 겪는 어려움과 고난을 통해 우리가 서로를 이해하고 지지해야 한다는 메시지를 전달합니 
다. 또한, 드라마는 강렬한 스토리와 뛰어난 연기력으로 시청자들에게 감동과 영감을 선사할 것으로 기대됩니다.

SequentialChain

SequentialChain은 개수에 제한없이 좀 더 다양한 순차 체인 적용이 가능합니다.

아래 그래프를 통해 그 과정을 확인할 수 있음

Leave a Comment