← Hub ← 05 07 →
06
Chapter 06 · Workflow

툴을
줄 세운다.
End-to-End.

툴 A → 툴 B → 툴 C → 결과.
코드로 순서를 박아둔 워크플로우.
한 시나리오는 완벽하다. 시나리오가 바뀌면 다시 짜야 한다.

·
정의

워크플로우 =
툴의 순서.

사용자 LLM 툴 A LLM 툴 B 툴 C → 결과

사람이 하던 업무를 LLM·툴의 직렬 호출로 재현.
이 챕터에선 우리가 직접 def workflow(): 로 순서를 적는다.

·
Workflow 1 · RAG → DB

청크만으로는
부족하다.

"임베디드 경험자" retrieve_from_rag 후보 ID 추출 LLM 1명 선정 execute_sql 전체 이력서 LLM 요약

RAG가 반환하는 건 청크 조각. 사람 단위로 보려면 resume_id 로 DB를 한 번 더.
툴 둘을 엮어야 비로소 '검색 + 조회'가 완성된다.

·
Code · Workflow 1

함수 하나에
네 단계를 박는다.

def workflow_1(user_prompt):
    # 1. RAG 검색
    rag_results = retrieve_from_rag(user_prompt)

    # 2. LLM이 적합한 후보 1명 선정 (JSON 출력)
    selected = generate_response(
        system_prompt=recommend_resume_system_prompt,
        user_prompt=f"{user_prompt}\n[검색결과]{rag_results}",
    )
    resume_id = int(json.loads(selected)["resume_ID"])

    # 3. DB에서 전체 이력서 조회
    resume = execute_sql(f"SELECT * FROM resume WHERE ID = {resume_id}")

    # 4. LLM이 요약
    summary = generate_response(
        system_prompt=resume_summary_system_prompt,
        user_prompt=f"{user_prompt}\n[이력서]{resume[0][...]}",
    )

단계 사이마다 LLM 응답을 다음 툴의 입력으로 변환.
json.loads() 로 LLM의 JSON 출력을 파이썬 객체로.

·
Workflow 2 · 네 개 툴

평가부터 저장·발송까지
한 번에.

이력서 ID 입력 SQL 생성 execute_sql get_confluence LLM 평가 JSON 변환 save_excel HTML 보고서 send_email 📬 메일 도착
·
Code · 9-단계 골격

아홉 단계.
그러나 직선적.

def workflow_2(user_prompt):
    sql_query     = generate_response(sql_gen_prompt, user_prompt)              # 1. SQL 생성
    resume        = execute_sql(sql_query)                                       # 2. 이력서
    jp            = execute_sql("SELECT ... FROM job_posting")                # 3. 공고
    eval_criteria = get_confluence_page_content(CRITERIA_PAGE_ID)                # 4. 기준표

    eval_result   = generate_response(eval_prompt, f"{resume}{jp}{eval_criteria}")  # 5. 평가
    json_response = generate_response(json_prompt, eval_result)                  # 6. JSON

    save_excel(json_response)                                                  # 7. 저장
    report        = generate_response(report_prompt, eval_result)                # 8. 보고서
    send_email(report)                                                         # 9. 발송

아홉 개 호출이 한 줄씩. 각 단계의 입출력이 다음 단계 입력에 정확히 들어가도록 박혀 있다.
— 이게 '고정' 워크플로우의 의미.

·
한계

잘 돈다. 대신
시나리오가 바뀌면
다시 짜야 한다.

구분
고정 워크플로우
우리가 원하는 Agent
순서 결정
개발자가 코드로 박음
LLM이 요청 보고 결정
변경 대응
결과 바뀌면 코드 수정
프롬프트만 바꾸면 됨
코드량
시나리오마다 다른 함수
하나의 코드로 모든 요청
본질
End-to-End지만 Agent 아님
Agent의 출발선
Chapter 06 · 마무리

결정 권한을
LLM에게.

툴 순서를 사람이 박는 대신 LLM이 정하게 만들면?
다음 챕터에서 처음으로 LLM에게 '어떤 툴을 부를지' 묻는다.

Next · Chapter 07
Decision · 자율 툴 선택