Checkpoint ๋ฐ Message Queue ๋์ ์ ํตํ LLM ์คํธ๋ฆฌ๋ฐ ์ ์ด ์ต์ ํ
๐ SoloEngine v0.3.0 Release โ Checkpoint Mechanism & Message Queue
AI ์์ฝ
Context
LLM ์คํธ๋ฆฌ๋ฐ ์ค ์ฌ์ฉ์ ์ ๋ ฅ ์ฐจ๋จ ๋ฐ ์ํ ๋๊ธฐํ ์ง์ฐ์ผ๋ก ์ธํ UX ์ ํ ๋ฐ์. ๊ธฐ์กด์ ๋ณต์กํ WebSocket ํธ๋ค๋ฌ ๋ก์ง๊ณผ ํํธํ๋ Tool Call ํฌ๋งท์ผ๋ก ์ธํด ์์คํ ์ ์ง๋ณด์ ๋น์ฉ ์ฆ๊ฐ ๋ฐ ๋ฐํ์ ์ค๋ฅ ๋น๋๊ฐ ๋์ ์ํ์.
Technical Solution
- ReActCore ๋ด 3๋จ๊ณ Checkpoint(content_ended, before_tool_calls, after_tool_calls) ์ค๊ณ๋ฅผ ํตํ ์คํ ํ๋ฆ์ ์ ๋ฐ ์ ์ด ๋ฐ ์ํ ๋๊ธฐํ ๊ตฌํ
- async enqueue/drain ๊ธฐ๋ฐ์ MessageQueue ํด๋์ค ๋์ ์ผ๋ก LLM ์คํ ์ค์ผ๋ก ์ ์ ๋๋ ๋ฉ์์ง์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐ ์์ฐจ์ ์๋ ์ ์ก ๊ตฌ์กฐ ์ค๊ณ
- WebSocket ํธ๋ค๋ฌ๋ฅผ ๋จ์ ์ ์ก ๊ณ์ธต์ผ๋ก ์ถ์ํํ๊ณ RunContext๊ฐ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์์ ํ๋ ๊ตฌ์กฐ๋ก ๋ฆฌํฉํ ๋งํ์ฌ ์ฑ ์ ๋ถ๋ฆฌ
- ToolUseBlock์ OpenAI ํ์ค์ธ tool_calls ๋ฆฌ์คํธ ๊ธฐ๋ฐ์ ToolCallsBlock์ผ๋ก ํตํฉํ์ฌ ๋ด๋ถ ๋ฐ์ดํฐ ํฌ๋งท ์ผ์ํ
- tiktoken ๊ธฐ๋ฐ์ ์ฒญํฌ ๋จ์ ์ค์๊ฐ ํ ํฐ ์ถ์ ๋ฐ API ์ต์ข ๊ฐ ๋ฎ์ด์ฐ๊ธฐ ๋ก์ง์ ํตํ ์ ๋ฐํ ์ฌ์ฉ๋ ํธ๋ํน ๊ตฌํ
- aclose() ํธ์ถ ์ CancelledError๋ฅผ ์ ์ ์ข ๋ฃ๋ก ์ฒ๋ฆฌํ๋ ์์ธ ํธ๋ค๋ง ์ต์ ํ๋ก ๋ถํ์ํ ์๋ฌ ์ ํ ๋ฐฉ์ง
์ค์ฒ ํฌ์ธํธ
- LLM ์คํธ๋ฆฌ๋ฐ ์ธํฐํ์ด์ค ์ค๊ณ ์ ์ฌ์ฉ์ ์ ๋ ฅ ์ฐจ๋จ ๋์ Message Queue ๋์ ๊ฒํ - ์ํ ๋ณํ๊ฐ ์ฆ์ AI ์์ด์ ํธ ํ๋ฆ์ ๋ช ์์ Checkpoint๋ฅผ ์ค์ ํ์ฌ ์ธํฐ์ ํฐ ์ง์ ํ๋ณด - WebSocket ์๋ฒ ์ค๊ณ ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ณ ๋จ์ Transport Layer๋ก ์ ์งํ๋ ์ ๋ต ์ ์ฉ - API ์๋ต ์ง์ฐ ์ tiktoken๊ณผ ๊ฐ์ ๋ก์ปฌ ์ธ์ฝ๋๋ฅผ ํ์ฉํ ์ค์๊ฐ ์ถ์ ์น ์ ๊ณต์ผ๋ก UX ๊ฐ์