Step 03: 단순 Chat Loop
core 60 min

단순 Chat Loop

system + user 메시지를 LLM에 보내고 응답을 받는 기본 흐름을 구현합니다.

Execute this step

Run from step folder:
cd steps/03_simple_chat_loop && cargo run
Run from project root:
cargo run -p step03_simple_chat_loop

Step 3: 단순 Chat Loop

학습 목표

  • system + user → LLM → 응답 흐름 구현
  • Provider를 활용한 실제 API 호출
  • Ollama 등 로컬 LLM 연동 (API 키 불필요)

참조 소스

| 파일 | 내용 | |------|------| | crates/goose/src/providers/ollama.rs | Ollama (로컬 LLM) Provider |

핵심 개념

가장 기본적인 채팅 루프를 구현합니다:

  1. System 프롬프트 설정 - Agent의 역할과 지침 정의
  2. User 메시지 입력 - 사용자의 질문/요청
  3. Provider를 통해 LLM에 요청 - complete() 호출
  4. Assistant 응답 수신 및 표시 - 결과 출력
1let system = "You are a helpful assistant.";
2let user_msg = Message::user().with_text("Hello!");
3let response = provider.complete(model, system, &[user_msg], &[]).await?;
4println!("Assistant: {}", response.message.as_concat_text());

대화 루프 구조

1┌─────────────┐
2│   User      │ ─── 메시지 입력 ───▶ ┌──────────┐
3│   Input     │                       │ Provider │ ──▶ LLM API
4│             │ ◀── 응답 출력 ─────── │          │ ◀── 응답
5└─────────────┘                       └──────────┘

소스 코드

1//! Sample Step 3: 단순 Chat Loop
2
3fn main() {
4    println!("=== Step 3: 단순 Chat Loop ===\n");
5    println!("TODO: system + user -> LLM -> 응답");
6}

체크리스트

  • [ ] System prompt 설정
  • [ ] User message 생성
  • [ ] Provider.complete() 호출
  • [ ] 응답 메시지 출력

Did you find this helpful? Give it a cheer!