Engram ๋์ ์ผ๋ก Hermes์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ๊ทน๋ณตํ ๋ค์ค ์ฌ์ฉ์ ์ปจํผ๋ฐ์ค ์์ด์ ํธ ์ค๊ณ
Building a Hermes Memory Plugin for a Voice-Powered Conference Agent with Weaviate Engram๐ง
AI ์์ฝ
Context
Hermes์ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์ ๋จ์ผ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ Markdown ํ์ผ ์ ์ฅ ๋ฐฉ์(Memory.md, User.md)์ผ๋ก ์ค๊ณ๋์ด ์๋ฐฑ ๋ช ์ ๋ฐฉ๋ฌธ์๋ฅผ ์๋ํด์ผ ํ๋ ์ปจํผ๋ฐ์ค ํ๊ฒฝ์ ๋ถ์ ํฉํจ. ํนํ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ์ฝ 1,300~2,200์ ์์ค์ ๋งค์ฐ ๋ฎ์ ์ ํ์ ๊ฐ์ ธ ๋ค์ ์ฌ์ฉ์์ ์ปจํ ์คํธ ์ ์ง์ ํ๊ณ๊ฐ ์กด์ฌํจ.
Technical Solution
- Hermes Plugin System์ ํ์ฉํ์ฌ ๊ธฐ๋ณธ ์ ์ฅ์ ๋์ Weaviate Engram์ Custom Memory Provider๋ก ์ฐ๊ฒฐํ ํ์ฅ ๊ตฌ์กฐ ์ค๊ณ
- ๋จ์ ์ ์ฌ ๋ฐฉ์์ด ์๋ ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฒ์ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๋ก์ง์ ํตํด ๋ฐ์ดํฐ ์ค๋ณต์ ๋ฐฉ์งํ๊ณ ์ ๋ณด ์ ํ๋๋ฅผ ์ ์งํ๋ ๋ฉ์ปค๋์ฆ ์ฑํ
- user_id ๊ธฐ๋ฐ์ ์ค์ฝํ ์ ๋ต์ ํตํด ๋ค์ ๋ฐฉ๋ฌธ์์ ๊ฐ์ธํ๋ ๊ธฐ์ต์ ๋ถ๋ฆฌํ๊ณ ๋ ๋ฆฝ์ ์ธ ์ปจํ ์คํธ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌํ
- Hermes CLI์ Real-time Voice Mode์ Messaging Gateway๋ฅผ ๊ฒฐํฉํ์ฌ ์์ฑ ์ธํฐํ์ด์ค ๋ฐ ๊ด๋ฆฌ์์ฉ ํ ๋ ๊ทธ๋จ ํต๋ก๋ฅผ ํ๋ณดํ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ ๊ตฌ์ฑ
- ์ธ์ ID ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ๊ด๋ฆฌ์๋ง ์ฌ์ฉ์ ์ธ์ฌ์ดํธ๋ฅผ ์กฐํํ ์ ์๋๋ก ๋ณด์ ๊ณ์ธต ๋ถ๋ฆฌ
์ค์ฒ ํฌ์ธํธ
1. ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ ์ค๊ณ ์ User-scoped Memory ๋ถ๋ฆฌ ์ ๋ต ์๋ฆฝ ์ฌ๋ถ ํ์ธ
2. ๋จ์ Append ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์ ๋ฐ์ํ ํ ํฐ ๋ญ๋น์ ์ค๋ณต ์ ๋ณด๋ฅผ ๋ฐฉ์งํ๋ ์ ๋ฐ์ดํธ ๋ก์ง ๊ฒํ
3. LLM ์์ด์ ํธ์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ก์ปฌ ํ์ผ์ด ์๋ ์ธ๋ถ Managed State Store(Engram ๋ฑ) ๋์ ๊ณ ๋ ค