개요로 돌아가기

기본 LLM 상호작용

AI 에이전트의 세계로 들어가는 첫걸음 로컬 언어 모델을 로드하고 상호작용하는 방법 알아보기

로컬 LLM이란 무엇인가?

로컬 LLM은 인터넷이나 외부 API 없이 컴퓨터에서 완전히 실행되는 AI 언어 모델입니다. 여러분의 기기를 떠나지 않는 자신만의 AI 비서가 있다고 생각하시면 됩니다.

LLM이 응답을 생성하는 방법

LLM은 전체 문장을 한 번에 생성하지 않습니다. 응답을 점진적으로 구축하면서 토큰(단어 조각)을 하나씩 예측합니다.

토큰이란 무엇인가? (초보자를 위한 설명)

토큰은 모델이 처리하는 텍스트의 일부입니다. 다음과 같이 생각할 수 있습니다.

단순한 단어: “Hello” = 1 토큰 “world” = 1 토큰 “Hello world” = 2 토큰

복잡한 단어: “programming” = 1 토큰 “unprogrammed” = 2-3 토큰 “antidisestablishmentarianism” = 4+ 토큰

핵심 통찰: 한국말로는 “형태소” 정도의 단위 토큰이 정확히 단어와 일치하는 것은 아닙니다. 일반적인 단어는 보통 1토큰이지만, 희귀하거나 긴 단어는 여러 토큰으로 분할됩니다. 모델은 단어 단위가 아닌 토큰 단위로 텍스트를 처리합니다.

컨텍스트 윈도우: 모델의 메모리

시스템 프롬프트 (있는 경우)

사용자: “node-llama에 대해 아세요?”

AI: “예, 익숙합니다…”

(추가 대화를 위한 공간)
제한된 크기 (예: 2048, 4096, 또는 8192 토큰)

제한된 크기

최대 용량이 있습니다 (예: 4096 토큰)

가득 찼을 때

이전 메시지는 제거되어야 합니다

영향

이전의 모든 메시지가 다음 응답에 영향을 미칩니다

일반적인 초보자 실수

실수 1: 리소스 해제(Dispose)를 잊는 것

❌ 나쁨:

const session = new LlamaChatSession(…);

await session.prompt(“Hello”);

// 메모리 누수! 리소스 정리 안 됨

✅ 좋음:

const session = new LlamaChatSession(…);

await session.prompt(“Hello”);

session.dispose(); // 항상 정리하세요!

실수 2: 호출 간에 메모리를 기대하는 것

❌ 잘못된 기대:

await session.prompt(“제 이름은 앨리스입니다”);

await session.prompt(“내 이름이 뭐예요?”);

// 예상: “앨리스” | 현실: 모델은 기억하지 못합니다!

✅ 올바른 이해:

// 각 프롬프트는 독립적입니다

// 컨텍스트를 유지하려면 전체 대화 기록을 전달해야 합니다

// (나중 예제에서 배울 내용입니다)

실수 3: 모호한 프롬프트 사용

❌ 너무 모호함:

“node-llama-cpp”

// 모델이 무엇을 원하는지 모름

✅ 명확하고 구체적임:

“node-llama-cpp가 무엇이며 어떻게 작동하는지 설명해 주세요?”

// 모델이 요청을 이해함

AI 에이전트를 위한 핵심 개념

1. 상태 비저장 처리 (Stateless Processing)

컨텍스트를 유지하지 않는 한 각 프롬프트는 독립적입니다. 모델은 다른 스크립트 실행 사이에 메모리가 없습니다. “에이전트”를 구축하려면 컨텍스트를 활성 상태로 유지하고 대화 기록을 유지해야 합니다.

2. 프롬프트 엔지니어링

질문을 구성하는 방식이 응답에 영향을 미칩니다:

❌ 나쁨: “node-llama-cpp”

✅ 더 나음: “node-llama-cpp에 대해 알고 있나요”

✅ 최고: “node-llama-cpp가 무엇인지, 어떻게 작동하는지 설명해 주세요”

3. 리소스 관리

LLM은 상당한 리소스를 소비합니다. 모델은 기가바이트의 RAM/VRAM을 필요로 하고, 추론에는 시간이 걸리며, 메모리 누수를 방지하려면 적절하게 정리해야 합니다.

에이전트에게 이것이 중요한 이유

🧠 Agents need LLMs to “think”

The model processes information and generates responses

💾 에이전트는 컨텍스트가 필요함

상호작용 전반에 걸쳐 상태를 유지하기 위해

🔧 에이전트는 구조가 필요함

나중 예제에서는 도구, 메모리 및 추론 루프를 추가합니다

개요로 돌아가기 다음: OpenAI API