Step 03: 단순 Chat Loop
0 studying now
core 60 min
단순 Chat Loop
system + user 메시지를 LLM에 보내고 응답을 받는 기본 흐름을 구현합니다.
Execute this step
Run from step folder:
cd steps/03_simple_chat_loop && cargo runRun from project root:
cargo run -p step03_simple_chat_loopStep 3: 단순 Chat Loop
학습 목표
- system + user → LLM → 응답 흐름 구현
- Provider를 활용한 실제 API 호출
- Ollama 등 로컬 LLM 연동 (API 키 불필요)
참조 소스
| 파일 | 내용 |
|------|------|
| crates/goose/src/providers/ollama.rs | Ollama (로컬 LLM) Provider |
핵심 개념
가장 기본적인 채팅 루프를 구현합니다:
- System 프롬프트 설정 - Agent의 역할과 지침 정의
- User 메시지 입력 - 사용자의 질문/요청
- Provider를 통해 LLM에 요청 - complete() 호출
- 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() 호출
- [ ] 응답 메시지 출력