안녕하세요. 8기 랭체인방 정정민입니다.
오늘은 chat model에 관한 공부를 진행했고
중간 과정을 공유드리겠습니다.
호출
다양한 문서나 코드를 보면 아래와 같은 방식으로 chat model을 사용합니다.
result = chat.generate(message)
혹은
results = chat(message)
혹은
results = chat.invoke([message])
혹은
results = chat.batch([message]) 뭐가 맞을까요?
결론은 모두 맞습니다. 그리고 모두 작동합니다.
다만 langchain이 업데이트 되면서 호출 방법이 업데이트 됩니다.
어떤게 가장 최신이죠?
지금은 Langchain 모든 모듈은 LCEL 표현 방식을 사용하도록 권장됩니다.
따라서 invoke와 batch 방식이 가장 최신입니다.
구조는 어떻게 구성되나요?
아래와 같은 구조를 갖고 있습니다.
결국 근본은 generate 함수입니다.
다른 method 들은 내부적으로 generate 함수를 호출하고 있죠
왜 이렇게 쓰나요?
모든 Langchain 사용 과정을 본건 아니지만
LCEL이라는 통일된 형태로 모든 정보를 사용하기 위함으로 보입니다.
invoke의 결과물은 LCEL로 사용할 수 있는 모듈로 casting을 진행합니다. (코드)
즉, pipeline 과정에서 수월히 쓰기 위함이죠
1차 결론
LCEL는 앞으로(이미??) Langchain에 근본이 되는 구조로 보입니다.
빨리 공부해서 숙지해야겠네요.
잘 와닿지는 않아도 invoke, batch, steam을 써보기로!
대화하기
chatGPT가 단순 LLM보다 큰 의미를 갖는 이유는 대화가 가능성이 한 몫 할겁니다.
Langchain도 이것한 가능한 모델을 제공해 대화가 가능하게 합니다.
chat = ChatOpenAI(openai_api_key=OPENAI_API_KEY)