Chains
•
체인은 LLM, Tools 또는 데이터 전처리 단계에 대한 호출 시퀀스를 의미
•
◦
LCEL은 님들의 커스텀 체인을 구성하는 데 베리 유용하지만, 오프 더 셸프(Off-the-shelf) 체인을 사용하는 것도 좋음.
오프 더 셸프(Off-the-shelf) : 기성품
◦
LangChain이 지원하는 오프 더 셸프(Off-the-shelf) 체인에는 기본적으로 두 가지 유형이 있다.
1.
LCEL로 구축된 체인.
•
이 경우 LangChain은 더 높은 수준의 생성자 메서드를 제공
•
그러나 내부적으로 이루어지는 모든 작업은 LCEL로 체인을 구성하는 것이다.
2.
[Legacy] 레거시 체인 클래스에서 서브클래싱하여 구축된 체인.
•
이러한 체인은 내부적으로 LCEL을 사용하지 않고 독립적인 클래스이다.
•
현재 랭체인에서는 모든 체인의 LCEL 버전을 생성하는 메서드를 만드는 작업을 진행 중이다.
•
해당 작업을 진행하는 이유는 다음과 같다.
1.
이러한 방식으로 구축된 체인은 체인의 내부를 수정하고 싶을 때 간단히 LCEL을 수정할 수 있기 때문에 좋다.
2.
기본적으로 스트리밍, 비동기, 일괄 처리를 지원
3.
각 단계에서 자동으로 통합 가시성을 확보
Legacy Chain 종류
•
위 링크로 접속해보면 여러 가지 레거시 체인들이 있는 표가 있다.
•
실무에서는 해당 표의 When to Use 열을 참고하여 각각의 용도에 맞춰서 사용하면 된다.
•
여기서 테이블 칼럼이 의미하는 것을 다음과 같다. 참고 바람!
◦
체인(Chain)
▪
이 체인의 생성자 함수, 이들은 모두 LCEL 런처블을 반환하는 메서드
▪
또한 API 문서로 연결되는 링크도 있다.
◦
함수 호출(Function Calling)
▪
OpenAI 함수 호출이 필요한지 여부
◦
기타 도구(Other Tools)
▪
이 체인에서 사용되는 기타 도구(있는 경우)
◦
사용 시기(When to Use)
▪
사용 시기: 이 체인의 사용 시기에 대한 설명
LLMChain - 제일 기본적인 체인
Prompt & Model
•
실습에서는 gpt-4o-mini 모델을 사용했습니다!
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_messages(
[("user", "Tell me a {adjective} joke")],
)
model = ChatOpenAI(model="gpt-4o-mini")
Python
복사
Chain
•
체인 생성
chain = prompt | model | StrOutputParser()
Python
복사
Run Chain
•
체인 실행 시켜보기
response = chain.invoke({"adjective": "funny"})
> print(response)
Why don't skeletons fight each other?
They don't have the guts!
Python
복사