핵심 요약

Function calling은 모델이 실행할 함수의 structured arguments를 반환하고, 실제 함수 실행은 application code가 담당하는 패턴입니다. Tool calling은 더 넓은 개념입니다. 모델이 custom function, search, file retrieval, application action 같은 tool을 사용할 수 있는 workflow를 말합니다. 핵심은 같습니다. 모델은 어떤 tool이 필요한지 판단할 수 있지만, 실행과 검증은 code가 맡아야 합니다.

Model, tool, structured data, final output으로 구성된 AI tool calling과 function calling workflow

이미지는 두 가지 실무 흐름을 보여줍니다. 하나는 여러 tool로 분기한 뒤 결과를 합치는 path입니다. 다른 하나는 특정 function에 structured data를 보내고 검증된 결과를 받는 path입니다. 둘 다 중요한 action 전에는 validation이 필요합니다.

왜 중요한가

Plain chat은 설명에 유용합니다. Tool calling은 action에 유용합니다. 모델이 file을 검색하고, API를 호출하고, ticket을 만들고, record를 수정하고, check를 실행할 수 있으면 workflow는 강력해집니다. 동시에 위험도 커집니다.

사람들이 AI tool calling, function calling, OpenAI tools를 검색하는 이유는 모델을 실제 system에 연결하고 싶기 때문입니다. 가장 큰 문제는 문법이 아닙니다. 모델이 무엇을 할 수 있고, application이 무엇을 통제해야 하는지 정하는 것이 핵심입니다.

이 글은 2026년 5월 23일 기준 OpenAI tools와 function calling 문서를 확인해 작성했습니다.

기본 사고방식

아래처럼 나누어 생각합니다.

Model:
  request를 읽는다
  tool이 필요한지 판단한다
  structured arguments를 제안한다
  tool result를 바탕으로 답한다

Application code:
  사용할 수 있는 tool을 정의한다
  arguments를 검증한다
  tool을 실행한다
  error를 처리한다
  decision을 log로 남긴다
  side effect를 보호한다

모델을 security layer로 두면 안 됩니다. 모델은 action을 요청할 수 있습니다. 그 action이 허용되는지는 code가 결정해야 합니다.

Function Calling을 쉽게 설명하면

Function calling은 보통 아래 흐름입니다.

  1. Function schema를 정의합니다.
  2. 모델이 user request를 받습니다.
  3. 모델이 schema에 맞는 arguments를 반환합니다.
  4. Application이 arguments를 검증합니다.
  5. Application이 function을 실행합니다.
  6. 모델이 function result를 사용해 final answer를 만듭니다.

예시 function:

get_weather(city, date)

User request:

내일 서울에 비가 올까?

모델은 날씨를 지어내면 안 됩니다. Weather function call을 요청해야 합니다. Application은 weather service를 호출하고, 그 결과를 모델 또는 사용자에게 전달해야 합니다.

Tool Calling을 쉽게 설명하면

Tool calling은 더 넓습니다. Tool은 function일 수도 있고, built-in capability나 application action일 수도 있습니다.

예시:

  • internal documentation 검색
  • file retrieval
  • calendar API 호출
  • draft email 생성
  • Markdown file 검증
  • 안전한 test command 실행
  • customer record 조회

이 방식으로 AI workflow는 단순 답변 생성을 넘어섭니다. 하지만 모든 tool에는 boundary가 필요합니다.

좋은 Tool 설계

좋은 tool은 작고, type이 분명하고, 검증하기 쉽습니다.

더 나은 예:

search_docs(query, product_area)
get_invoice(invoice_id)
create_draft_reply(ticket_id, body)
validate_post_front_matter(file_path)

위험한 예:

run_shell(command)
query_database(sql)
send_email(to, subject, body)
update_any_record(table, id, fields)

넓은 tool은 demo를 쉽게 만듭니다. 하지만 실수 비용도 크게 만듭니다. 처음에는 좁은 tool로 시작하고, logging과 review가 작동한 뒤 확장해야 합니다.

Validation 규칙

Tool 실행 전에 arguments를 검증합니다.

Checklist:

[ ] 이 user에게 허용된 tool인가?
[ ] required arguments가 모두 있는가?
[ ] ID, path, date format이 유효한가?
[ ] 요청한 resource가 허용된 scope 안에 있는가?
[ ] read-only action인가, side effect가 있는 action인가?
[ ] 위험한 action은 human approval이 필요한가?
[ ] 안전하게 retry할 수 있는가?

File path라면 resolved path가 workspace 안에 있는지 확인합니다. Account data라면 permission을 확인합니다. Message라면 바로 보내지 말고 draft를 만듭니다. Database write라면 preview나 transaction을 선호합니다.

안전한 Workflow 예시

AI assistant가 support reply draft를 만든다고 가정합니다.

1. User가 ticket을 선택한다.
2. Model이 ticket detail과 knowledge base search가 필요하다고 판단한다.
3. App이 get_ticket(ticket_id)를 호출한다.
4. App이 search_knowledge_base(query)를 호출한다.
5. Model이 반환된 source만 사용해 reply draft를 만든다.
6. App이 source ID가 cited되었는지 확인한다.
7. 사람이 draft를 검토한다.
8. 답변 전송은 사람만 한다.

Tool workflow는 속도를 높입니다. Review gate는 customer experience를 보호합니다.

흔한 실수

  • 모델에게 모든 것을 할 수 있는 tool 하나를 줍니다.
  • Argument validation 없이 tool call을 실행합니다.
  • Review gate 없이 production write를 허용합니다.
  • Tool result가 항상 맞다고 가정합니다.
  • Tool call과 output을 log로 남기지 않습니다.
  • 숨은 conversation state가 tool behavior를 바꾸게 둡니다.
  • code에 있어야 할 business rule을 모델에게 맡깁니다.

관련 글

자주 묻는 질문

이 글은 언제 먼저 적용하면 좋나요?

새 도구를 바로 도입하기 전, 반복 업무와 검증 기준이 이미 있는지 확인할 때 먼저 적용하면 좋습니다.

초보자가 가장 먼저 확인할 부분은 무엇인가요?

처음에는 모델 성능보다 입력 데이터, 검증 기준, 실패 시 복구 방법을 먼저 정하세요. AI workflow는 자동화보다 검증 설계가 먼저입니다.

더 찾아볼 때 어떤 키워드를 쓰면 좋나요?

추가 검색할 때는 “AI tool calling과 function calling 차이: 개발자가 알아야 할 실전 기준” 같은 핵심 문구와 evaluation, workflow, guardrail, structured output, agent 같은 실무 키워드를 조합해 보세요.

참고 자료

  • OpenAI tools guide: https://developers.openai.com/api/docs/guides/tools
  • OpenAI function calling guide: https://platform.openai.com/docs/guides/function-calling
  • OpenAI Responses API reference: https://platform.openai.com/docs/api-reference/responses

Leave a comment