안녕하세요 오늘은 BESPIN GLOBAL SRE실 노예원님이 작성해주신 ‘[LLM] LLM 체인 만들기’ 대해 소개해드리도록 하겠습니다.
목차
- 기본 LLM 체인 (Prompt + LLM)
- 기본 LLM 체인의 구성 요소
- 일반적인 작동 방식
- 실습 예제
- 멀티 체인 (Multi-Chain)
- 순차적인 체인 연결
1. 기본 LLM 체인 (Prompt + LLM)
기본 LLM 체인(Prompt + LLM)은 LLM 기반 애플리케이션 개발에서 핵심적인 개념 중 하나입니다. 이러한 체인은 사용자의 입력(프롬프트)을 받아 LLM을 통해 적절한 응답이나 결과를 생성하는 구조를 말합니다. 이 과정은 대화형 AI, 자동 문서 생성, 데이터 분석 및 요약 등 다양한 용도로 활용될 수 있습니다.
1-1. 기본 LLM 체인의 구성 요소
- 프롬프트(Prompt): 사용자 또는 시스템에서 제공하는 입력으로, LLM에게 특정 작업을 수행하도록 요청하는 지시문입니다. 프롬프트는 질문, 명령, 문장 시작 부분 등 다양한 형태를 취할 수 있으며, LLM의 응답을 유도하는 데 중요한 역할을 합니다.
- LLM(Large Language Model): GPT, Gemini 등 대규모 언어 모델로, 대량의 텍스트 데이터에서 학습하여 언어를 이해하고 생성할 수 있는 인공지능 시스템입니다. LLM은 프롬프트를 바탕으로 적절한 응답을 생성하거나, 주어진 작업을 수행하는 데 사용됩니다.
1-2. 일반적인 작동 방식
- 프롬프트 생성: 사용자의 요구 사항이나 특정 작업을 정의하는 프롬프트를 생성합니다. 이 프롬프트는 LLM에게 전달되기 전에, 작업의 목적과 맥락을 명확히 전달하기 위해 최적화될 수 있습니다.
- LLM 처리: LLM은 제공된 프롬프트를 분석하고, 학습된 지식을 바탕으로 적절한 응답을 생성합니다. 이 과정에서 LLM은 내부적으로 다양한 언어 패턴과 내외부 지식을 활용하여, 요청된 작업을 수행하거나 정보를 제공합니다.
- 응답 반환:LLM에 의해 생성된 응답은 최종 사용자에게 필요한 형태로 변환되어 제공됩니다. 이 응답은 직접적인 답변, 생성된 텍스트, 요약된 정보 등 다양한 형태를 취할 수 있습니다.
1-3. 실습 예제
1-3-1. 환경구성
1) 라이브러리 설치

2) OpenAI 인증키 설정

1-3-2. 실습 (1)
OpenAI의 ChatOpenAI 함수를 사용하면 GPT-3.5, GPT-4 모델을 API로 접속할 수 있습니다.
다음 예제는 랭체인에서 GPT-4o mini 모델을 사용하여 LLM 모델 인스턴스를 생성하고, “지구의 자전 주기는?” 라는 프롬프트를 LLM 모델에 전달하는 과정을 보여줍니다. 실행 결과로 “지구의 자전 주기는?”에 대한 답변을 반환합니다.
이는 GPT 모델이 자연어 처리를 통해 질문의 의도를 이해하고, 학습된 데이터를 바탕으로 적절한 응답을 생성하기 때문입니다.

1-3-2. 실습 (2) – 프롬프트 템플릿 적용
langchain_core의 prompts 모듈에서 ChatPromptTemplate 클래스를 사용하여 천문학 전문가로서 질문에 답변하는 형식의 프롬프트 템플릿을 생성합니다. 이 템플릿을 사용하면, 입력으로 주어진 질문 {input}에 대해 천문학 전문가의 관점에서 답변을 생성하는 질문 프롬프트를 만들 수 있습니다.
다음과 같이 프롬프트, LLM, 문자열 출력 파서(StrOutputParser)를 연결하여 체인을 만들 수 있습니다. 이 코드의 실행 결과는 GPT-3.5 모델을 통해 생성된 “지구의 자전 주기는?”에 대한 답변입니다. StrOutputParser는 모델의 출력을 문자열 형태로 파싱하여 최종 결과를 반환합니다.

2. 멀티 체인 (Multi-Chain)
여러 개의 체인을 연결하거나 복합적으로 작용하는 것은 멀티 체인(Multi-Chain) 구조를 통해 이루어집니다. 이러한 구조는 각기 다른 목적을 가진 여러 체인을 조합하여, 입력 데이터를 다양한 방식으로 처리하고 최종적인 결과를 도출할 수 있도록 합니다. 복잡한 데이터 처리, 의사 결정, AI 기반 작업 흐름을 설계할 때 특히 유용합니다.
2-1. 순차적인 체인 연결
다음 예제를 통해서 2개의 체인(chain1, chain2)를 정의하고, 순차적으로 체인을 연결하여 수행하는 작업을 보겠습니다.
여기서 첫 번째 체인(chain1)은 한국어 단어를 영어로 번역하는 작업을 수행합니다. ChatPromptTemplate.from_template를 사용하여 프롬프트를 정의하고, ChatOpenAI 인스턴스로 GPT 모델을 사용하며, StrOutputParser()를 통해 모델의 출력을 문자열로 파싱합니다.
이 체인은 입력받은 “미래”라는 단어를 영어로 번역하라는 요청을 GPT-3.5-turbo 모델에 전달하고, 모델이 생성한 번역 결과를 출력합니다. 체인을 실행하는 invoke 메소드는 입력으로 딕셔너리(dictionary) 객체를 받으며, 이 딕셔너리의 키는 프롬프트 템플릿에서 정의된 변수명({korean_word})과 일치해야 합니다.

chain1에서 출력한 값(“미래”라는 단어의 영어 번역)을 입력값으로 받아서, 이 번역된 단어를 english_word 변수에 저장합니다. 다음으로, 이 변수를 사용하여 두 번째 체인(chain2)의 입력으로 제공하고, 영어 단어의 뜻을 한국어로 설명하는 작업을 수행합니다. 최종 출력은 StrOutputParser()를 통해 모델의 출력을 문자열로 표시됩니다.

여기까지 ‘[LLM] LLM 체인 만들기’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다.
Written by 노 예원 / SRE실
BESPIN GLOBAL