πŸ€” LangChain Opentutorial 1μ£Όμ°¨ Model Serialization

opensource ν”„λ‘œμ νŠΈ

링크

langchain tutorial μž‘μ„±ν•˜λŠ” ν”„λ‘œμ νŠΈμ— ν•©λ₯˜ν•˜κ²Œ λ˜μ—ˆκ³ , μ΄λ²ˆμ£Όμ— 처음 μ½”λ“œλ₯Ό μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€. μ΄λ²ˆμ— μž‘μ—…ν•œ 건 Model Serialization μž…λ‹ˆλ‹€.

Serialization = 직렬화

langchain 객체 쀑에 Serializable 객체λ₯Ό μƒμ†ν•˜λŠ” 경우 langchain_core.load 의 ν•¨μˆ˜ dumpd dumps λ₯Ό μ‚¬μš©ν•΄μ„œ dictionary, string 으둜 λ³€ν™˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. load loads ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 각각 dictionary, string 을python langchain 객체둜 λ³€ν™˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ 라이브러리인 pickle 을 ν™œμš©ν•΄ .pkl 파일둜 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ‘ ν™•μΈν•˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ 좔상화 λ˜μ–΄μ„œ μ‚¬μš©ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ 객체듀(ChatOpenAI, PromptTemplate)은 λ‚΄λΆ€μ μœΌλ‘œ RunnableSerializable 을 μƒμ†ν•˜κ³  있고 Serialize ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•„μš”μ— 따라 νŒŒμΌμ‹œμŠ€ν…œ λ˜λŠ” S3등을 ν™œμš©ν•΄ λ³΅μž‘ν•˜κ²Œ κ΅¬μ„±λœ runnable을 κΈ°μ‘΄ μ½”λ“œμ™€ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜κ³  평가 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν™œμš© 방법

μ’€ 더 ꡬ체적으둜 μ„€λͺ…ν•˜μžλ©΄, 예λ₯Ό λ“€μ–΄ fastapi λ“±μ˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•΄ μ±—λ΄‡λ“±μ˜ 앱을 섀계 ν–ˆλ‹€κ³  κ°€μ • ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ„œλ²„μ„ΈνŒ… ν•˜λŠ” μ½”λ“œμ™€ langchain runnable 을 κ΅¬μ„±ν•˜λŠ” μ½”λ“œκ°€ ν•¨κ»˜ 있게 되면 배포할 λ•Œ μ„œλ²„κ΄€λ ¨ μ½”λ“œλ§Œ λ³€κ²½ ν•˜λ”λΌλ„ runnable μ½”λ“œκ°€ ν•¨κ»˜ 배포 될 것이고, runnable의 λ‹΅λ³€ 생성ꡬ쑰가 λ³€κ²½λ˜λ”λΌλ„ ν•¨κ»˜ 배포될 것 μž…λ‹ˆλ‹€.

μ΄λ•Œ 직렬화(serialization)을 μ‚¬μš©ν•˜κ²Œλ˜λ©΄ μ„œλ²„λŠ” μš”μ²­μ„ λ°›μ•„μ„œ μ²˜λ¦¬ν•˜κ³  μ‘λ‹΅ν•΄μ£ΌλŠ” λ³Έμ—°μ˜ 역할에 쒀더 집쀑 ν•  수 있고, runnable κ°μ²΄λŠ” 본질적인 λͺ©μ μΈ λ‹΅λ³€ 생성에 집쀑 ν•  수 있게 λ©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ ν•  λ•Œλ„ μ„œλ²„μ™€ runnable의 닡변생성 퀄리티λ₯Ό κ΅¬λΆ„ν•˜μ—¬ ν…ŒμŠ€νŠΈ ν•  수 있고, μ—¬λŸ¬λͺ¨λ‘œ 잘 ν™œμš©ν–ˆμ„λ•Œ μœ μš©ν•  것 κ°™μŠ΅λ‹ˆλ‹€.


μΆ”κ°€λ‘œ pythonμ—μ„œ serialize된 객체가 typescriptμ—μ„œλ„ ν˜Έν™˜λ˜λŠ”μ§€ 확인해봐야 ν•  것 κ°™μŠ΅λ‹ˆλ‹€.

jsλž‘ pythonμ΄λž‘ μ„œλ‘œ ν˜Έν™˜λ˜μ§€λŠ” μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

← Go home