실무 Multi-Agent 오케스트레이션 2장 · 개발 환경 구성과 LLM API 호출 9 / 9 ← 이전목차다음 → TechLead Cro

2장. 개발 환경 구성과 LLM API 호출

실습문제와 해답

코드를 조금 고쳐 보며 2장 내용을 손에 익힙니다. 먼저 스스로 해 본 뒤 해답을 펼쳐 보세요. 해답은 새 파일로 만들어 실행합니다.


문제 1 — 답할 수 있는 질문과 없는 질문

새 파일 ex02_two_questions.py를 만들어, 아래 두 질문을 차례로 보내고 답을 비교하세요.

  1. "주문한 상품이 언제 도착하는지 어떻게 확인하나요?"
  2. "제 주문 HR20260701001 은 지금 어디에 있나요?"
  • 힌트: 질문을 리스트에 담고 for로 반복합니다. 답변은 사람이 검토할 수 있도록 전체를 출력합니다.
  • 기대 결과: 1번은 길게 답하고, 2번은 답하지 못한다고 말하거나 지어냅니다.
해답 보기
from config import MODEL, get_client, print_usage

client = get_client()

questions = [
    "주문한 상품이 언제 도착하는지 어떻게 확인하나요?",
    "제 주문 HR20260701001 은 지금 어디에 있나요?",
]
for q in questions:
    print(f"\n고객 문의: {q}")
    response = client.models.generate_content(model=MODEL, contents=q)
    print("모델 답변:", response.text)
    print_usage(response)
$ python ex02_two_questions.py

실행 결과 (문장은 실행마다 다릅니다)

고객 문의: 주문한 상품이 언제 도착하는지 어떻게 확인하나요?
모델 답변: 주문하신 상품의 배송 조회는 보통 다음과 같은 방법으로 확인할 수 있습니다.
(중략)
  [토큰] 입력 15 + 출력 382 = 총 397

고객 문의: 제 주문 HR20260701001 은 지금 어디에 있나요?
모델 답변: 죄송합니다만, 저는 고객님의 개인 주문 정보나 배송 조회 시스템에 접근할 수 있는 권한이 없습니다.
(중략)
  [토큰] 입력 22 + 출력 67 = 총 89

해설 — 2번 질문의 답은 하루마켓 주문 데이터(data/orders.csv)에만 있습니다. 모델은 그 파일을 볼 방법이 없습니다. 이번 실행에서는 "접근할 수 없다"고 정직하게 답했지만, 모델이나 질문에 따라 그럴듯한 배송 상태를 지어내기도 합니다. 5장에서 주문 조회 도구를 붙이면 이 질문에 실제 데이터로 답합니다.


문제 2 — 같은 모델의 반복 호출 비교

새 파일 ex02_repeat_calls.py를 만들어, 같은 질문을 gemini-3.8-flash에 두 번 보내고 걸린 시간과 토큰 수를 출력하세요.

  • 힌트: time.time()을 호출 전후에 찍어 빼면 걸린 시간이 나옵니다. 토큰 수는 response.usage_metadata에 있습니다.
  • 같은 모델로 두 번 반복합니다.
해답 보기
import time

from config import MODEL, get_client

client = get_client()
question = "배송 조회 방법을 두 문장으로 알려주세요."

for attempt in range(1, 3):
    model = MODEL
    start = time.time()
    response = client.models.generate_content(model=model, contents=question)
    elapsed = time.time() - start
    u = response.usage_metadata
    print(f"\n[{model} / {attempt}회] {elapsed:.1f}초 · 입력 {u.prompt_token_count} / 출력 {u.candidates_token_count} 토큰")
    print(response.text.strip())
$ python ex02_repeat_calls.py

확인할 내용 — 두 호출의 전체 답변, 소요 시간과 토큰 수를 비교합니다. 같은 모델과 질문도 응답과 사용량은 달라질 수 있습니다. 수치는 직접 실행한 값으로 기록하세요.


문제 3 — 환경설정의 모델 확인하기

.env 파일의 GEMINI_MODEL 값을 gemini-3.8-flash로 설정하고 저장한 뒤, python config.py와 python lesson02_first_call.py를 다시 실행하세요. 이 설정을 이후 모든 장에서 유지합니다.

해답 보기

.env에서 이 줄만 바꿉니다.

GEMINI_MODEL=gemini-3.8-flash
$ python config.py
기본 모델     : gemini-3.8-flash

lesson02_first_call.py는 한 글자도 고치지 않았는데 설정한 모델로 실행됩니다. 코드가 모델 이름을 직접 적지 않고 config.py의 MODEL을 쓰기 때문입니다.

해설 — 모델 설정은 .env 한 곳에서 관리합니다. 이후 모든 장도 gemini-3.8-flash를 사용합니다.

← 이전 절정리와 체크리스트3장 →왜 프롬프트 설계가 필요한가 — 답은 하는데, 우리 상담원이 아니다
오명운 · macro@prag-ai.com