LCEL 이전의 전통적 chain 은 클래스 중심이며, 확장과 조합이 어렵다는 한계가 있었습니다.
1
2
3
4
5
chain=LLMChain(llm=model,prompt=prompt...)
반면 LCEL 방식은 표현식 중심이며, 함수형 파이프라인을 지향합니다. 따라서 중간 단계 삽입이 쉽고, 각 부분별로의 수정도 쉬운 편입니다.
1
chain=prompt|model|parser
4. 구성 요소
Prompt : 요청할 때 사용되는 프롬프트를 의미합니다.
LLM(model) : 추론에 사용할 LLM 모델(또는 모델과 연결하는 클라이언트)입니다.
Parser : 모델의 답변을 원하는 형식에 맞게 출력하는 역할을 담당합니다.
5. 실습
가장 기본적인 Prompt, LLM(model), Parser 로 예시를 들어보겠습니다.
각각의 구성요소들은 이어지는 다음 포스팅들에서 자세히 다뤄볼 예정입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fromlangchain_openaiimportChatOpenAIfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplateos.environ["OPENAI_API_KEY"]="MyAPIKey"system_template="당신은 {story}에 나오는 {character_a} 역할입니다. 그 캐릭터에 맞게 사용자와 대화하세요."human_template="안녕? 저는 {character_b}입니다. 오늘 시간 괜찮으시면 {activity} 같이 할까요?"prompt=ChatPromptTemplate([("system",system_template),("user",human_template)])model=ChatOpenAI(model="gpt-4o-mini")parser=StrOutputParser()chain=prompt|model|parserresult=chain.invoke({"story":"어벤져스","character_a":"타노스","character_b":"아이언맨","activity":"등산"})print(result)
Comments