[LangChain] LangChain ๊ธฐ์ดˆ

SHIN JAE MINยท2024๋…„ 9์›” 28์ผ

LLM

๋ชฉ๋ก ๋ณด๊ธฐ
1/8

๐Ÿ“Œ์˜ค๋Š˜์˜ KEY POINT !

LangChain / LangChain Libraries / LangChain Templates / LangServe / LangSmith

LangChain
โ–ช LLM ๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ

LangChain Libraries
โ–ช Python ๋ฐ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ LLM Chain(๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๊ฒฐํ•ฉ) ์ง€์›

LangChain Templates
โ–ช LLM Chain์„ ๋””๋ฒ„๊น…, ํ…Œ์ŠคํŠธ, ํ‰๊ฐ€ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ํ”Œ๋žซํผ

LangServe
โ–ช LLM Chain์„ REST API๋กœ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

LangSmith
โ–ช ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜ ์ œ๊ณต


๐Ÿ“– LangChain

โ–ช LLM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ๋„์›€์ด ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ํ˜์‹ ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ
โ†’ ํŠนํžˆ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋‹ค์–‘ํ•œ LLM ์ž‘์—…์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„

โœ ํ•ต์‹ฌ ๊ธฐ๋Šฅ 2๊ฐ€์ง€

1) ์ƒํ™ฉ ์ธ์‹ - LLM์„ ์†Œ์Šค(์ง€์นจ, ์˜ˆ์‹œ, ์ฝ˜ํ…์ธ  ๋“ฑ)์™€ ์—ฐ๊ฒฐ
2) ์ถ”๋ก (Reasoning) - LLM ๊ธฐ๋ฐ˜ ํŠน์ • ์ถ”๋ก  ์œ ๋„

๐Ÿ“– LangChain ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์„ฑ

โ–ช ๊ฐœ๋ฐœ์ž๋“ค์ด ๋‹ค์–‘ํ•œ LLM ์ž‘์—…์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„

โ‘  ๋žญ์ฒด์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(LangChain Libraries)
โ–ช ํŒŒ์ด์ฌ๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ†ตํ•ฉ
โ†’ ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ฒด์ธ๊ณผ ์—์ด์ „ํŠธ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„, ๊ทธ๋ฆฌ๊ณ  ์ฒด์ธ๊ณผ ์—์ด์ „ํŠธ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅ

โ‘ก ๋žญ์ฒด์ธ ํ…œํ”Œ๋ฆฟ(LangChain Templates)
โ–ช ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•œ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฐธ์กฐ ์•„ํ‚คํ…์ฒ˜ ๋ชจ์Œ
โ†’ ๊ฐœ๋ฐœ์ž๋“ค์ด ํŠน์ • ์ž‘์—…์— ๋งž์ถฐ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€

โ‘ข ๋žญ์„œ๋ธŒ(LangServe)
โ–ช ๋žญ์ฒด์ธ ์ฒด์ธ์„ REST API๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
โ†’ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Œ

โ‘ฃ ๋žญ์Šค๋ฏธ์Šค(LangSmith)
โ–ช ๊ฐœ๋ฐœ์ž ํ”Œ๋žซํผ์œผ๋กœ, LLM ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ตฌ์ถ•๋œ ์ฒด์ธ์„ ๋””๋ฒ„๊น…, ํ…Œ์ŠคํŠธ, ํ‰๊ฐ€, ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋žญ์ฒด์ธ๊ณผ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ์ง€์›

๐Ÿ“– LangChain ํŒจํ‚ค์ง€

โ–ช LangChain์„ ์„ค์น˜ํ•˜๋ฉด langchain-core, langchain-community, langsmith ๋“ฑ์ด ํ•จ๊ป˜ ์„ค์น˜๋˜์–ด ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰์— ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ํ•œ๋ฒˆ์— ์„ค์น˜๋จ

โ–ช ๋‹ค๋งŒ, ์ตœ์†Œํ•œ์˜ ๊ธฐ๋ณธ์ ์ธ ์š”๊ตฌ ์‚ฌํ•ญ๋งŒ ์ถฉ์กฑ๋˜๋Š” ๊ฒƒ์ด๊ณ , ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ๋ชจ๋ธ ์ œ๊ณต์ž์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๋“ฑ๊ณผ์˜ ํ†ตํ•ฉ์„ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์˜์กด์„ฑ ์„ค์น˜๊ฐ€ ํ•„์š”
โ†’ ์˜ˆ๋ฅผ ๋“ค๋ฉด, OpenAI์—์„œ ์ œ๊ณตํ•˜๋Š” LLM์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด langchain-openai ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•จ

โœ ํŒจํ‚ค์ง€ ์ฃผ์š” ๊ตฌ์„ฑ

โ–ช LangChain
โ†’ LLM์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ƒํ™ฉ ์ธ์ง€, ๊ธฐ๋Šฅ ์ฒด์ธ, ์—์ด์ „ํŠธ ๋ฐ ๊ฒ€์ƒ‰(Retrieval) ์ „๋žต
โ–ช Langchain-Core
โ†’ ๊ธฐ๋ณธ ์ถ”์ƒํ™” ๋ฐ ์–ธ์–ด
โ–ช LangChain-Community
โ†’ ์„œ๋“œ ํŒŒํ‹ฐ(ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ) ํ†ตํ•ฉ

โœ ํŒจํ‚ค์ง€ ์ฃผ์š” ๋ชจ๋“ˆ

โ–ช Chains
โ†’ LLM ๊ด€๋ จ ๋„๊ตฌ, ์ „์ฒ˜๋ฆฌ ๋“ฑ ๊ธฐ๋Šฅ ์ œ๊ณต, LCEL(LangChain Expression Language) ํ™œ์šฉ
โ–ช Agents
โ†’ ์—์ด์ „ํŠธ(์ž‘์—… ์ฃผ์ฒด)๊ฐ€ LLM์„ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ง€ ์„ ํƒ
โ–ช Retrieval
โ†’ ์–ธ์–ด ์ƒ์„ฑ์— ๋ฌธ์„œ ์ฐธ๊ณ , ๋ฌธ์„œ๋ฅผ ํ…์ŠคํŠธ ๋ฒกํ„ฐ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜์—ฌ ์ตœ์ ํ™”
โ–ช Model I/O(Input/Output)
โ†’ ๋ชจ๋ธ์˜ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ ๋ชจ๋“ˆ, ์ „์„ธ๊ณ„ ์–ธ์–ด ๊ด€๋ จ ๋ชจ๋ธ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก ๋ฐฉ์‹ ๊ธฐ๋Šฅ ์ œ๊ณต
โ–ช Memory
โ†’ ์–ธ์–ด ์ƒ์„ฑ์—์„œ ๊ณผ๊ฑฐ์˜ ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ
โ–ช Callbacks
โ†’ ๋กœ๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง, ์ŠคํŠธ๋ฆฌ๋ฐ(ChatGPT์™€ ๊ฐ™์ด ์‹ค์‹œ๊ฐ„ ๋‹ต๋ณ€ ์ƒ์„ฑ) ๋“ฑ LLM ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๋‹จ๊ณ„์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ

profile
Jam's Tech Log

0๊ฐœ์˜ ๋Œ“๊ธ€