LangChain 기본 구조(Model·Prompt·Output Parser)·LCEL 체인, Runnable·Memory 구성 및 기본 워크플로우 실습
LangChain을 쓰는 이유!
사용 방법은 통일.
모델만 다르게 불러오면 다른 코드를 바꾸지 않아도 됨.
HumanMessage -> 사용자가 하는 질문, 요청
SystemMessage -> 모델의 역할을 정함. 너는 @@이야.
ChatPromptTemplate.from_message -> 'system',( ), 'human', ( ) => 꼭 위에 ~Message 만들지 않아도 튜플로 적으면 됨.
템플릿의 invoke는 완성된 프롬프트를 만드는것. 모델을 부르는 것은 X.
프롬프트를 자료로 만들기 - YAML
프롬프트 이름 :
description: 명령
system: 너는 @@이야
human: 이름: 특징: 적기
StrOutputParser; parser -> 문자열로 만들어줌.
LCEL - 파이프 |로 부품 잇기
: prompt | model | parser
invoke : 입력
batch : 입력 여러개를 한번에 처리하는 메서드
stream : 조각으로 나누기
체인 잇기
변수 {draft}
앞 출력 -> 뒤 입력
Runnable ; 공통 규약
다리로 체인 잇기 :
to draft 로 체인을 이어줄 수 있음
-> invoke 한번만 써도 됨 등등 .. 의 이점
*문법: to_draft = RunnableLambda(lambda text: {'draft': text})
함수를 넣고 싶을 때: RunnableLambda(함수명)
두 체인을 동시에 묶을 때: RunnableParallel(키=체인(부품), 키=체인)
원본을 남기고 싶을 때: original=RunnablePassthrough(),
장기기억&단기기억