본 내용은 RAG 시스템 구축을 위한 랭체인 실전 가이드 교재 및 강의 자료, 실습 자료를 사용했음을 알립니다.
- 강의 : [모두의AI] Langchain 강의
- 실습 : Kane0002/Langchain-RAG
프롬프트 템플릿-LLM(모델)-출력 파서
3단 결합from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
#프롬프트 템플릿 설정
prompt = ChatPromptTemplate.from_template("tell me a short joke about {topic}")
#LLM 호출
model = ChatOpenAI(model="gpt-4o-mini")
#출력 파서 설정
output_parser = StrOutputParser()
#LCEL로 프롬프트템플릿-LLM-출력 파서 연결하기
chain = prompt | model | output_parser
#invoke함수로 chain 실행하기
chain.invoke({"topic": "ice cream"})
기대 효과
- 모듈 간 의존성 줄어듦
|
: 파이프 오퍼레이터 기호를 통해 모듈 연결 ➡️ 구분 복잡성을 최대한 제거
from langchain.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
#Chain 선언
model = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
chain = prompt | model
#Chain의 stream()함수를 통해 스트리밍 기능 추가
for s in chain.stream({"topic": "bears"}):
print(s.content, end="", flush=True)
batch()
활용 시 쉽게 구현 가능%%time
model = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("다음 한글 문장을 프랑스어로 번역해줘 {sentence}")
chain = prompt | model
chain.batch([
{"sentence": "그녀는 매일 아침 책을 읽습니다."},
{"sentence": "오늘 날씨가 참 좋네요."},
{"sentence": "저녁에 친구들과 영화를 볼 거예요."},
{"sentence": "그 학생은 매우 성실하게 공부합니다."},
{"sentence": "커피 한 잔이 지금 딱 필요해요."}
])
%%time
model = ChatOpenAI(model = 'gpt-4o-mini')
prompt = ChatPromptTemplate.from_template("다음 한글 문장을 프랑스어로 번역해줘 {sentence}")
chain = prompt | model
chain.invoke({"sentence": "그녀는 매일 아침 책을 읽습니다."})
실행 시간(Wall time) : 5개 문장을 한꺼번에 수행할 경우와 1개 문장을 수행한 경우가 비슷함!