LangChain for LLM App Development
#DeepLearning.AI #Review
์ด ์ปจํ ์ธ ๋ DeepLearning.AI ์ ShortCourse ์ค ํ๋์ธ LangChain for LLM Application Development ๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ ์ ๋๋ค.
LangChain
LangChain ์ LLM ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์คํ์์ค ํ๋ ์์ํฌ ์ ๋๋ค
LangChain ์ 2๊ฐ์ง ์ธ์ด๋ฅผ ์ํ ํ๋ ์์ํฌ๋ฅผ ์ง์ํฉ๋๋ค
Python
JavaScript (TypeScript)
LangChain ์ ๋ค์ 5๊ฐ์ง์ ์ปดํฌ๋ํธ๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
Models
Large Language Models
Chat Models
Text Embedding Models
Prompts
Prompt Templates
Output Parsers
Example Selectors
Indexes
Document Loaders
Text Splitters
Vector Stores
Retrievers
Chains
Prompt + LLM + Output Parser
Application Specific Chains
Agents
Agent Types
Agent Toolkits
Models, Prompts and Output Parsers
Model ์ LLM API ์ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ฅ์น (์๋ฅผ ๋ค์ด, OpenAI Chat API ์ ์ฉ ํด๋์ค)
Prompt ๋ ์์ฃผ ์ฌ์ฉํ๋ Prompting ํฌ๋งท์ ์ฝ๋ ๋ด ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ฉฐ, ์์ฃผ ์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ Prompt ๋ค์ LangChain ์์ ์ ๊ณตํฉ๋๋ค
Output Parser ๊ฐ ํ์ํ ์ด์ ๋ LLM ์๊ฒ ํน์ ํ์์ ๋ฐํ๊ฐ์ ์์ฒญํ๋๋ผ๋, ์ค์ ๋ก ๋์์ค๋ ๋ฐ์ดํฐ๋ string ์ด๋ฏ๋ก ํ๋ก๊ทธ๋๋ฐ ์ฝ๋ ๋ด ์๋ฃ๊ตฌ์กฐ๋ก ๋ณํํ๋ parsing ์์ ์ด ํ์ํฉ๋๋ค
LangChain ์์ Output Parser ๊ด๋ จ ์ฝ๋ ์ค์๋ Prompt ๋ฅผ ์์ฑํ ๋ Output ํฌ๋งท์ ๋ํด ์ค๋ช ํ๋ ๊ฒ์ ๋์์ฃผ๋ ๋๊ตฌ๋ค์ด ์กด์ฌํฉ๋๋ค
LangChain: Memory
๋ํ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ผํ ์ ์ LLM์ 'stateless' ํ๋ค๋ ๊ฒ ์ ๋๋ค. LLM๊ณผ์ ๋ชจ๋ transaction์ ๋ ๋ฆฝ์ ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. OpenAI LLM API๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ด์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. LLM์๊ฒ ์ด์ ๋ํ๋ฅผ ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ค์ ์ง๋ฌธ์ ๋์ง๋ ์ด์ ๋ํ์ ๊ธฐ๋ก(history)์ ํจ๊ป ์ ๋ฌํ๋ ๊ฒ ์ ๋๋ค.

LangChain ํจํค์ง์๋ ์ด๋ฌํ Memory ์์๋ฅผ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฅ์น๋ค์ด ์์ต๋๋ค. ์ฐ์ ๋ํํ LLM ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ์ ์ธ Memory ๋ชจ๋๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ConversationBufferMemory
ConversationBufferWindowMemory
ConversationTokenBufferMemory
ConversationSummaryMemory
Converation Buffer Memory
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ ์ ๋๋ค. ๋ง ๊ทธ๋๋ก ๋ฒํผ์ ์ด์ ๊ธฐ๋ก๋ค์ ๋ด์ ๋ค์ ์ถ๋ ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ์ ์ ๋๋ค.

์ ๊ทธ๋ฆผ์์๋ ๋ณผ ์ ์๋ฏ์ด ์ด์ ๋ํ ๊ธฐ๋ก์ ๋ชจ๋ ์ ์ฅํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ Memory ๊ด๋ฆฌ๋ ์ด์ ๊ธฐ๋ก์ ๋ชจ๋ ํ์ฉํ ์ ์๋ค๋ ์ ์์ ์ฅ์ ์ด ์์ง๋ง, ๋ํ๊ฐ ๊ธธ์ด์ง์๋ก LLM์ด ์ฒ๋ฆฌํด์ผํ๋ ํ ํฐ์ ๊ฐ์๊ฐ ์ฆ๊ฐํ๋ ๋จ์ ์ด ์์ต๋๋ค. ์ฒ๋ฆฌํด์ผํ๋ ํ ํฐ์ ๊ฐ์๋ ๊ณง ๋น์ฉ ๋ฌธ์ ๋ก ๋๋์์ค๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ ์ฌ์ฉํ ํ์๊ฐ ์๋ Memory ๋ชจ๋ ์ ๋๋ค.
์๋๋ ์ค์ ์ฝ๋ ์์ ์ ๋๋ค.
Conversation Buffer Window Memory
์ด๋ฆ์์๋ ์ ์ ์๋ฏ์ด ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ ์ ๋๋ค. ํ ๊ฐ์ง ์ฐจ์ด์ ์ Window ์ ๋๋ค. ์๋ ์ฝ๋๋ ์ค์ Conversation Buffer Window Memory๋ฅผ ์์ฑํ๋ ์์ ์ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค.
์
๋ ฅ ๋งค๊ฐ๋ณ์๋ก k์ ์์ ์ ์ ๊ฐ์ ๋ฐ์ต๋๋ค. k๊ฐ ์๋ฏธํ๋ ๊ฒ์ window size ์
๋๋ค. ๋จ์ ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์ผ๋ก ์ง๋ชฉ๋ฐ๋ ๋นํจ์จ์ ์ธ ๋ํ ํ์คํ ๋ฆฌ ๋์ ์ ํํผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋ ์
๋๋ค. ๋จ์ํ ์ ๋ต์ผ๋ก, ์ด์ k ๊ฐ์ ๋ํ ์ด๋ ฅ๋ง ๋ค์ ๋ํ์ ํ์คํ ๋ฆฌ๋ก ์ฌ์ฉํ๋ ๊ฒ ์
๋๋ค.

์ ๊ทธ๋ฆผ์ ๋ค์ ๊ทน๋จ์ ์ธ ์์์ด๊ธด ํ์ง๋ง, window ์ฌ์ด์ฆ๊ฐ 0์ธ ๊ฒฝ์ฐ ์ด์ ๋ํ๊ธฐ๋ก์ ๋จ๊ธฐ์ง ์๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ง์ ๋ํ์์ ์ป์ ์ ์๋ ์ ๋ณด๋ฅผ ๋ค์ ๋ํ์์ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค. k ๊ฐ์ ์กฐ์ ํ์ฌ ํ ํฐ ๊ฐ์๋ฅผ ์ ์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์์ ๊ฒ ์
๋๋ค.
Convesation Token Buffer Memory
Buffer Windlow Memory์ ๋น์ทํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋๋ค. ์ด์ ์๋ ํ์คํ ๋ฆฌ์ ๊ฐ์๋ก ๋์ ๋๋ ํ์คํ ๋ฆฌ ํ ํฐ ์์ ์กฐ์ ํ์๋ค๋ฉด, ์ด๋ฒ ๋ฉ๋ชจ๋ฆฌ์์๋ ์ข ๋ ์ง๊ด์ ์ผ๋ก ํ ํฐ ๊ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Conversation Summary Buffer Memory
์ด์ ๋ํ ๊ธฐ๋ก์ ์ผ๋ถ๋ง ๋จ๊ธฐ๋ ๋ฐฉ์์ ๊ฒฐ๊ตญ ์์ค๋๋ ์ ๋ณด๊ฐ ์๊ธธ ์ ๋ฐ์ ์์ต๋๋ค. ํ์คํ ๋ฆฌ๋ฅผ ์ค์ด๋ ๊ฒ์ ์์ค๋๋ ์ ๋ณด๊ฐ ์๊ธฐ ๋ง๋ จ์ด๋ฉฐ, ์ด๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ํ ๊ธฐ๋ก์ ์์ฝํ์ฌ ์ ์ฅํ๊ณ ๋ค์ ์ฌ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๋ฅผ ์๊ฐํด๋ณผ ์ ์์ต๋๋ค. ์ด๊ฒ์ด Conversation Summary Buffer Memory ์ ๋๋ค.
์ด Memory์ ํน์ง์ ๊ธฐ์กด๊ณผ ๋ค๋ฅด๊ฒ ํ์คํ ๋ฆฌ ์ฒ๋ฆฌ ์์ ์ LLM์ด ์ฌ์ฉ๋๋ค๋ ์ ์ ๋๋ค. ์ถ๊ฐ์ ์ธ ํ ํฐ ํ์ฉ์ด ์์๋์ง๋ง, ๋จ์ํ๊ฒ ํ์คํ ๋ฆฌ๋ฅผ ๋์ ์์ผ ๋ฌด์๋ฏธํ๊ฒ ์ฌ์ฉ๋๋ ํ ํฐ๊ฐ์ ๋ณด๋ค๋ ํ์ ํ ์ ์ ๊ฒ ์ ๋๋ค. ์๋๋ ๊ฐ์ข์์ ์ ๊ณตํ๋ ์์ ์ ๋๋ค.
์๋๋ ์ค์ Summary Buffer ๋ก ์์ฝ๋ ํ๋กฌํํธ ํ ํ๋ฆฟ ์ ๋๋ค.
ํ์ฌ ๋ํ(Current conversation)์์ ์์คํ ๋ช ๋ น์ด๊ฐ ์ด์ ๋ํ์ ๋งฅ๋ฝ์ ์์ฝํ์ฌ ์ ๋ฌํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Last updated