올라마로 시작하는 AI 에이전트 개발 - 장별 명령 모음 PowerShell에서 한 줄씩 복사해 실행합니다. 프로젝트 명령은 support_project 폴더에서 실행합니다. ==== 프롤로그 · 내 컴퓨터의 AI를 내 도구로 만들기 ==== ==== 1장. 올라마를 설치하고 첫 대화를 남기기 ==== [1.3 기본 모델을 준비하고 첫 질문 보내기] ollama pull qwen3:4b ollama list ==== 2장. 모델과 질문을 목적에 맞게 고르기 ==== [2.2 두 모델에 같은 짧은 요청 보내기] ollama pull llama3.2:3b ==== 3장. 글·회의 메모·PDF를 실제 문서로 바꾸기 ==== ==== 4장. 반복 업무 도우미의 작업 순서 익히기 ==== ==== 5장. 예제를 실행하며 필요한 파이썬 배우기 ==== [5.1 프로젝트 폴더를 열고 첫 파일 실행하기] winget install --id=astral-sh.uv -e cd C:\ollama-book\support_project uv run --frozen python ch05/start/read_order.py [5.2 문자열·목록·딕셔너리로 주문 표현하기] uv run --frozen python scratch.py [5.4 JSON 파일을 읽어 조회 프로그램 완성하기] uv run --frozen python ch05/complete/read_order.py Q-271 uv run --frozen python ch05/complete/read_order.py Q-272 uv run --frozen python ch05/complete/read_order.py Q-273 uv run --frozen python ch05/complete/read_order.py Q-999 uv run --frozen python ch05/complete/read_order.py Q-271 --data no-such-file.json uv run --frozen python ch05/complete/read_order.py Q-271 --data shared/orders_practice.json ==== 6장. 파이썬에서 올라마를 호출하고 결과 저장하기 ==== [6.1 SDK로 한 번 요청하고 응답 읽기] ollama list uv run --frozen --extra sdk python -m ch06.start.ask_once [6.2 대화 기록과 역할 전달하기] uv run --frozen --extra sdk python -m ch06.complete.conversation [6.3 정해진 항목으로 응답을 받고 파싱하기] uv run --frozen --extra sdk python -m ch06.complete.reply_one uv run --frozen --extra sdk python -m ch06.complete.reply_one shared/inquiries/B01.txt uv run --frozen --extra sdk python -m ch06.complete.reply_one shared/inquiries/B05.txt --output-dir output/practice [6.4 문의 파일 묶음 처리·저장·실패 분리하기] uv run --frozen --extra sdk python -m ch06.complete.batch_reply uv run --frozen --extra sdk python -m ch06.complete.reply_one shared/inquiries/B03.txt ==== 7장. 랭체인으로 모델과 작업 연결하기 ==== [7.1 기존 SDK 코드와 공통 역할 대응하기] uv run --frozen --extra chains python -m ch07.start.chat_once [7.2 자료와 요청문을 재사용 가능한 구성으로 나누기] uv run --frozen --extra chains python scratch_prompt.py [7.4 모델·자료·실행 파일 나누기] uv run --frozen --extra chains python -m ch07.complete.reply_one uv run --frozen --extra chains python -m ch07.complete.reply_one shared/inquiries/B04.txt ==== 8장. 내 문서를 검색하는 기능 만들기 ==== [8.2 문서를 작은 단위로 나누기] uv run --frozen --extra rag python -m ch08.start.preview_chunks [8.3 로컬 임베딩과 검색 저장소 만들기] ollama pull embeddinggemma:300m uv run --frozen --extra rag python -m ch08.complete.build_index [8.4 질문과 관련된 문장 찾아보기] uv run --frozen --extra rag python -m ch08.complete.search "S-4 노트의 규격과 크기를 알려 주세요." uv run --frozen --extra rag python -m ch08.complete.search "아직 발송하지 않은 주문의 주소를 바꾸고 싶습니다." ==== 9장. 검색한 근거로 답하는 RAG 완성하기 ==== [9.1 질문·검색 결과·답변 요청 연결하기] uv run --frozen --extra rag python -m ch09.start.answer_from_search "S-4 노트의 크기를 알려 주세요." [9.2 문서 이름과 위치를 답에 남기기] uv run --frozen --extra rag python -m ch09.complete.answer "S-4 노트의 규격과 크기를 알려 주세요." [9.3 자료가 없거나 서로 다를 때 처리하기] uv run --frozen --extra rag python -m ch09.complete.answer "주말 배송 운영 시간과 추가 요금을 알려 주세요." uv run --frozen --extra rag python -m ch08.complete.search "기본 배송비 무료 기준 금액" --include-archived [9.4 문서가 바뀌면 검색 자료 갱신하기] uv run --frozen --extra rag python -m ch08.complete.build_index uv run --frozen --extra rag python -m ch08.complete.build_index --reset ==== 10장. 도구를 고르는 AI 에이전트 만들기 ==== [10.2 모델의 도구 이름과 입력값 읽기] uv run --frozen --extra rag python -m ch10.start.choose_tool "상품 합계 49,000원의 기본 배송비를 알려 주세요." [10.3 도구를 실행하고 결과로 답변 완성하기] uv run --frozen --extra rag python -m ch10.complete.run_agent "상품 합계 49,000원의 기본 배송비를 알려 주세요." uv run --frozen --extra rag python -m ch10.complete.run_agent "주문 Q-271은 발송됐나요?" [10.4 랭체인 연결·누락 입력·종료 다루기] uv run --frozen --extra rag python -m ch10.complete.run_agent "상품 합계 50,000원의 기본 배송비를 알려 주세요." --backend langchain uv run --frozen --extra rag python -m ch10.complete.run_agent "주문번호를 아직 모르는데 환불 금액을 알려 주세요." uv run --frozen --extra rag python -m ch10.complete.run_agent "주문 Q-999의 발송 상태를 알려 주세요." uv run --frozen --extra rag python -m ch10.complete.run_agent "상품 합계 49,000원의 기본 배송비를 알려 주세요." --max-steps 1 uv run --frozen --extra rag python -m ch10.complete.run_agent "주문 Q-272의 발송 상태를 조회하고, 발송 전 배송지 변경 요청을 접수할 수 있는지도 문서에서 찾아 주세요." ==== 11장. 랭그래프로 분기와 사람 확인 넣기 ==== [11.1 질문과 초안을 작업 상태로 묶기] uv run --frozen --extra agents python -m ch11.start.branch_once "상품 합계 49,000원의 기본 배송비를 알려 주세요." [11.2 정보가 부족하면 멈췄다가 이어 가기] uv run --frozen --extra agents python -m ch11.complete.run_workflow start "기본 배송비를 계산해 주세요." --thread-id amount-01 uv run --frozen --extra agents python -m ch11.complete.run_workflow resume amount-01 --input "상품 합계는 50,000원입니다." [11.3 사람이 답변을 승인·수정·반려하기] uv run --frozen --extra agents python -m ch11.complete.run_workflow start "상품 합계 49,000원의 기본 배송비를 알려 주세요." --thread-id shipping-01 uv run --frozen --extra agents python -m ch11.complete.run_workflow resume shipping-01 --approve uv run --frozen --extra agents python -m ch11.complete.run_workflow start "주문 Q-271은 발송됐나요?" --thread-id order-01 uv run --frozen --extra agents python -m ch11.complete.run_workflow resume order-01 --edit "결제는 확인되었습니다. 현재 자료에는 발송 기록과 예상 배송일이 없어 담당자 확인 후 안내하겠습니다." uv run --frozen --extra agents python -m ch11.complete.run_workflow start "상품 합계 49,000원의 기본 배송비를 알려 주세요." --thread-id reject-01 uv run --frozen --extra agents python -m ch11.complete.run_workflow resume reject-01 --reject [11.4 저장한 작업을 읽고 안전하게 재개하기] uv run --frozen --extra agents python -m ch11.complete.run_workflow show shipping-01 ==== 12장. MCP로 도구 연결을 확장하기 ==== [12.1 도구를 제공하는 쪽과 사용하는 쪽 나누기] uv run --frozen --extra agents python -m ch08.complete.build_index [12.3 도구 목록을 읽고 한 번 호출하기] uv run --frozen --extra agents python -m ch12.start.list_tools uv run --frozen --extra agents python -m ch12.complete.call_tool shipping 49000 uv run --frozen --extra agents python -m ch12.complete.call_tool shipping 50000 uv run --frozen --extra agents python -m ch12.complete.call_tool order Q-271 uv run --frozen --extra agents python -m ch12.complete.call_tool order Q-999 uv run --frozen --extra agents python -m ch12.complete.call_tool search "S-4 노트의 규격" [12.4 모델의 선택과 사람 확인 흐름에 연결하기] uv run --frozen --extra agents python -m ch12.complete.run_agent "상품 합계 49,000원의 기본 배송비를 알려 주세요." uv run --frozen --extra agents python -m ch11.complete.run_workflow start "상품 합계 50,000원의 기본 배송비를 알려 주세요." --thread-id mcp-01 --engine mcp uv run --frozen --extra agents python -m ch11.complete.run_workflow show mcp-01 uv run --frozen --extra agents python -m ch11.complete.run_workflow resume mcp-01 --approve ==== 13장. 화면에서 사용하는 고객지원 앱 완성하기 ==== [13.1 문의를 입력하는 첫 화면 만들기] uv run --frozen --extra ui python -m ch08.complete.build_index uv run --frozen --extra ui streamlit run ch13/start/app.py uv run --frozen --extra ui streamlit run ch13/start/app.py --server.port 8502 [13.2 문의·초안·근거를 한 화면에 연결하기] uv run --frozen --extra ui streamlit run ch13/complete/app.py ==== 14장. 오류를 고치고 내 자료로 확장하기 ==== [14.1 막힌 위치부터 찾기] uv run --frozen --extra ui python -m ch14.complete.diagnose uv run --frozen --extra ui python -m ch08.complete.build_index uv run --frozen --extra ui python -m ch14.complete.diagnose --offline [14.2 모델과 검색 자료의 문제 나누기] ollama list ollama pull qwen3:4b ollama pull embeddinggemma:300m uv run --frozen --extra ui python -m ch08.start.preview_chunks [14.3 새 문서를 더해 검색 범위 넓히기] uv run --frozen --extra ui python -m ch14.start.preview_document extension_examples/care_guide.md uv run --frozen --extra ui python -m ch14.complete.add_document extension_examples/care_guide.md --source-id care --title "노트 보관 안내" --version 2026-10-30 uv run --frozen --extra ui python -m ch08.complete.build_index uv run --frozen --extra ui python -m ch08.complete.search "노트 보관 안내" uv run --frozen --extra ui python -m ch09.complete.answer "노트는 어떻게 보관해야 하나요?" [14.4 모델·규칙·도구를 바꿀 때의 순서] uv run --frozen --extra ui python -m ch08.complete.build_index --reset uv run --frozen --extra rag python -m ch10.complete.run_agent "상품 합계 49,000원의 기본 배송비를 알려 주세요." uv run --frozen --extra rag python -m ch10.complete.run_agent "상품 합계 50,000원의 기본 배송비를 알려 주세요." ==== 부록 ==== [A. 프로젝트 빠르게 시작하기] cd C:\ollama-book\support_project ollama pull qwen3:4b ollama pull embeddinggemma:300m uv run --frozen --extra ui python -m ch08.complete.build_index uv run --frozen --extra ui python -m ch14.complete.diagnose uv run --frozen --extra ui streamlit run ch13/complete/app.py uv run --frozen python ch05/complete/read_order.py Q-271 uv run --frozen --extra ui python -m ch06.complete.reply_one uv run --frozen --extra ui python -m ch07.complete.reply_one uv run --frozen --extra ui python -m ch08.complete.search "S-4 노트의 규격" uv run --frozen --extra ui python -m ch09.complete.answer "S-4 노트의 크기를 알려 주세요." uv run --frozen --extra ui python -m ch10.complete.run_agent "상품 합계 49,000원의 기본 배송비를 알려 주세요." uv run --frozen --extra ui python -m ch12.start.list_tools uv run --frozen --extra ui python -m ch12.complete.call_tool order Q-271