[๊ฐ์์๋ช ์ฐ๊ตฌํ ํฉ์ค์ ]
ChatGPT์ Bard ๋ฑ, ์์ฆ ๋ํํํ์ ๋ํ ์ธ์ด ๋ชจ๋ธ(LLM)์ด ์ฐํ์ฃฝ์ ๋ฐํ๋๊ณ ์๋ค. ํ์ง๋ง, LLM๋ง ์๋ค๋ฉด ํ์ตํ ๋ฐ์ดํฐ ์์์๋ง ์ ์ ํ ๋ฌธ์ฅ์ ์์ฑํด๋ผ ๊ฒ์ด๋ค. ๊ทธ๋์ Bard๋ ๊ตฌ๊ธ ๊ฒ์ ์์ง์ ์ถ๊ฐํ์ฌ ์ต๊ทผ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ๋ต๋ณ์ ์์ฑํ๋ ๊ฐ์ ์ ๊ฐ์ง๊ณ ์๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๋ ํ ์ ์์๊น? ๋ง์ฝ ํ์ฌ ChatGPT์ Bard๋ฅผ ๋ชจ๋ ์จ๋ณด๊ณ ์์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด, LangChain์ด๋ผ๋ ์คํ์์ค๋ฅผ ๋์ฌ๊ฒจ ๋ณผ ํ์๊ฐ ์๋ค. ์ด๋ฒ ํฌ์คํธ๋ LangChain์ ๊ธฐ๋ณธ ์์๋ค์ ์๊ฐํ๊ณ , ๊ฐ๋จํ ์ฝ๋๋ฅผ ์์๋ก ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ๊ฒ์ด๋ค.
1. Moduls
1.1. Models
- LangChain์ LLM์ ์ค์ ํ๋ ๋ชจ๋
- LLMs์ Chat Models์ด ๋ฐ๋ก ์์
- Chat Models๋ ๋ด๋ถ์ ์ผ๋ก LLMs๋ฅผ ์ฌ์ฉํ์ง๋ง ์ธํฐํ์ด์ค๋ง ์๋ก ๋ค๋ฆ
- ์ ์ถ๋ ฅ ํํ์ API๊ฐ ์๋ ๋ฉ์ธ์ง ํํ์ API
- ์คํธ๋ฆฌ๋ฐ ๋ต๋ณ ์์ฑ ๊ฐ๋ฅ – ๋งํฌ
- HuggingFace Hub & Local Pipeline (์์ฒด๋ชจ๋ธ) ์ฌ์ฉ ๊ฐ๋ฅ – ๋งํฌ
1.2. Prompts
- ๋ชจ๋ธ์ ๋ค์ด๊ฐ๋ ์ ๋ ฅ ์ค์
- PromptTemplate์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
1.3. Indexes
- Indexes๋ LLM์ด ๋ฐ์ดํฐ์ ์ ์ํธ ์์ฉํ ์ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํ ํ๋ ๋ฐฉ๋ฒ
- ํ ์คํธ ๋ฐ์ดํฐ ์์ ์ ์ํ ์ ํธ๋ฆฌํฐ ํจ์ ์ ๊ณต (Document Loaders, Text Splitters, Vectorstores, Retrievers)
- ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ DB ์ฐ๋, ๋ด๋ถ DB ๊ฒ์ ๋ฑ์ ํ์ฉ ๊ฐ๋ฅ
1.4. Memory
- ๊ธฐ๋ณธ์ ์ผ๋ก LangChain์ ๋ชจ๋ ๋ชจ๋์ ์๋ก ๋ ๋ฆฝ์ ์ด๋ฉฐ, ๊ฐ ๋ชจ๋๋ค์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ๋ก ์ ์ฅ X
- ์ด์ interaction์ ์ ์ฅํ๊ณ ๋จ๊ธฐ, ์ฅ๊ธฐ ๊ธฐ์ต๋ ฅ์ ๊ฐ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋ชจ๋
1.5. Chains
- ๋ชจ๋๋ค์ ์๋ก ์ด์ด์ฃผ๊ธฐ ์ํ ๋ชจ๋
- run() ํจ์๋ฅผ ํตํด chain ์คํ
- ์ฐ์์ ์ธ run() ํจ์ ์ฌ์ฉ์ผ๋ก ํ์ฉ ๊ฐ๋ฅ
- ์๋๋ LLMs์ Memory๋ฅผ Chain์ผ๋ก ์ฐ๊ฒฐํ ์ฝ๋
1.6. Agents
- ์ฌ์ ๊ฒฐ์ ๋ Chains ํธ์ถ์ด ์๋, ์ ์ฌ์ ์ผ๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ผ ํ์ํ Chains๋ฅผ acessํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ชจ๋
- Action Agents vs. Plan-and-Execute Agents
- Agents๋ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ๋ผ ํธ์ถํ Tools๋ฅผ ๊ฒฐ์ ๊ฐ๋ฅ
- Tools: Agent๊ฐ actions์ผ๋ก ์ทจํ ์ ์๋ ๊ฒ
- Toolkits: ์ ์ฆ์ผ์ด์ค ๊ธฐ๋ฐ ์ฌ์ ์ ์๋ Tools์ ๋ฌถ์
- Agent Executor: Agents์ Tools๋ฅผ Wrappingํ ๊ฒ, stop๋ ๋๊น์ง Agents๋ฅผ ์คํํ๋ ๋ฃจํ๋ฅผ ๋ด๋น
- (PromptTemplate, Language Model, Output Parser)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์ฑํ๋ค.
2. Example Code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from langchain.agents import AgentType, initialize_agent
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferWindowMemory
from langchain.tools import Tool
from langchain.utilities import GoogleSearchAPIWrapper
os.environ[
"OPENAI_API_KEY"] = ""
os.environ["GOOGLE_API_KEY"] = ""
os.environ["GOOGLE_CSE_ID"] = ""
llm = OpenAI(temperature=0)
search = GoogleSearchAPIWrapper()
tools = [
Tool(name="Google Search",
func=search.run,
description="Search Google for recent results.")
]
memory = ConversationBufferWindowMemory(memory_key="chat_history",
k=5,
return_messages=True)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
verbose=True,
memory=memory)
while True:
agent_chain.run(input('Instruction: '))
3. Execute Results
4. Todo
- ๋ชจ๋ ๋ชจ๋๋ค์ ์์ธ ๋ด์ฉ ๋ฐ ์ฐ์์ ๋ ๊ณต๋ถ
- ๋ํํ Agent์ ํน์ ์ฑ๊ฒฉ ๋ฐ์
- Inference ์๋ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ ๋ชจ์