๐ ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๐ ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ (Manage your agent's memory)
๊ฒฐ๊ตญ ์์ด์ ํธ๋ ๋จ์ํ ๊ตฌ์ฑ ์์๋ก ์ ์ํ ์ ์์ด์: ๋๊ตฌ์ ํ๋กฌํํธ๊ฐ ์๊ณ , ๊ฐ์ฅ ์ค์ํ๊ฒ๋ ๊ณํยท์คํยท์ค๋ฅ์ ๊ธฐ๋ก์ ๊ทธ๋ฆฐ ๊ณผ๊ฑฐ ๋จ๊ณ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋๋ค.
์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ (Replay)
๊ณผ๊ฑฐ ์์ด์ ํธ ์คํ์ ๊ฒ์ฌํ๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํด์. ๊ณ์ธก ๊ฐ์ด๋์์ ๊ฐ์กฐํ๋ฏ ํน์ ๋จ๊ณ๋ฅผ ํ๋/์ถ์ํ ์ ์๋ ๋ฉ์ง UI์ ์คํ์ ํ์ํ๋๋ก ๊ณ์ธกํ ์ ์์ด์. agent.replay()๋ฅผ ์ธ ์๋ ์์ต๋๋ค.
์์ด์ ํธ๊ฐ ์คํ๋ ๋ค:
from smolagents import InferenceClientModel, CodeAgent
agent = CodeAgent(tools=[], model=InferenceClientModel(), verbosity_level=0)
result = agent.run("What's the 20th Fibonacci number?")
๋ง์ง๋ง ์คํ์ ์ฌ์ํ๋ ค๋ฉด:
agent.replay()
์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
agent.memory.get_full_steps()๋ก ์ ์ฒด ๋จ๊ณ๋ฅผ ๋์
๋๋ฆฌ๋ก ๊ฐ์ ธ์ฌ ์ ์์ด์. ์คํ
์ฝ๋ฐฑ์ ์ฌ์ฉํด ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ๋ฐ๊ฟ ์๋ ์์ต๋๋ค. ์คํ
์ฝ๋ฐฑ์ ์ธ์์์ agent ์์ฒด์ ์ ๊ทผํ ์ ์์ด, ์์์ ๊ฐ์กฐํ ๋๋ก ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์คํ
์ด๋ ์ ๊ทผํ๊ณ ํ์ํ๋ฉด ๋ฐ๊ฟ ์ ์์ด์. ์๋ฅผ ๋ค์ด ์น ๋ธ๋ผ์ฐ์ ์์ด์ ํธ๊ฐ ์ํํ๋ ๊ฐ ๋จ๊ณ์ ์คํฌ๋ฆฐ์ท์ ๊ด์ฐฐํ๊ณ ์๋ค๊ณ ํด๋ณด์ฃ .
์ฐธ๊ณ : ์ด ์ฝ๋๋ ๊ฐ๊ฒฐํจ์ ์ํด ์ผ๋ถ import์ ๊ฐ์ฒด ์ ์๊ฐ ์ ๊ฑฐ๋ ๋ถ์์ ํ ์ฝ๋์ ๋๋ค. ์ ์ฒด ๋์ ์ฝ๋๋ ์๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณด์ธ์.
CodeAgent(
tools=[WebSearchTool(), go_back, close_popups, search_item_ctrl_f],
model=model,
additional_authorized_imports=["helium"],
step_callbacks=[update_screenshot],
max_steps=20,
verbosity_level=2,
)
์ ์ฒด ๋์ ์์๋ ๋น์ ์น ๋ธ๋ผ์ฐ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์์ด์ ํธ๋ฅผ ํ ๋จ๊ณ์ฉ ์คํํ๊ธฐ
๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋ ๋๊ตฌ ํธ์ถ์ด ์์ ๋ ์ ์ฉํด์. ์์ด์ ํธ๋ฅผ ๋จ๊ณ๋ณ๋ก ์คํํ๋ฉด ๊ฐ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐฑ์ ํ ์ ์์ต๋๋ค.
from smolagents import InferenceClientModel, CodeAgent, ActionStep, TaskStep
agent = CodeAgent(tools=[], model=InferenceClientModel(), verbosity_level=1)
agent.python_executor.send_tools({**agent.tools})
print(agent.memory.system_prompt)
task = "What is the 20th Fibonacci number?"