AI Agents · 강의

도구 호출 및 입력/출력 기록

단계마다 도구 이름, 입력 인수, 출력, 지연 시간, 오류, 상위 스팬 ID를 기록하는 방법을 알아보세요.

레슨 2/413개 단계

도구 호출 및 입력/출력 기록은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

단계별로 기록할 내용

각 span에 다음을 기록하십시오:

  • 단계 이름(LLM 호출, 도구 호출, 검색)
  • 입력(메시지, 도구 인수, query)
  • 출력(응답, 도구 결과)
  • 메타데이터(모델, 지연 시간, 토큰 수, 비용)
  • 실패한 경우 오류 정보

직접 작성한 스팬 도우미

프레임워크가 없다면 다음과 같은 최소 도우미를 사용할 수 있습니다:

from contextlib import contextmanager
import time, uuid

@contextmanager
def span(name, trace_id, parent_id=None):
    span_id = str(uuid.uuid4())
    start = time.time()
    record = {'trace_id': trace_id, 'span_id': span_id, 'parent_id': parent_id, 'name': name, 'start': start}
    try:
        yield record
    except Exception as e:
        record['error'] = str(e)
        raise
    finally:
        record['duration_ms'] = (time.time() - start) * 1000
        save_span(record)

Using It

trace_id = str(uuid.uuid4())
with span('llm_call_planner', trace_id) as s:
    s['model'] = 'gpt-4o-mini'
    s['messages_in'] = messages
    response = client.chat.completions.create(model='gpt-4o-mini', messages=messages)
    s['response'] = response.choices[0].message.content
    s['tokens_in'] = response.usage.prompt_tokens
    s['tokens_out'] = response.usage.completion_tokens

스팬 중첩

부모 ID를 전달하여 스팬이 트리를 형성하게 하십시오:

with span('agent_step', trace_id) as parent:
    with span('llm_call', trace_id, parent_id=parent['span_id']):
        ...
    with span('tool_call:search', trace_id, parent_id=parent['span_id']):
        ...

도구 호출 기록

도구 호출에는 특히 다음을 기록하십시오:

  • 도구 이름
  • 인수(JSON)
  • 결과(JSON, 필요하면 잘라냄)
  • 지연 시간
  • 오류(있는 경우)

큰 페이로드 자르기

일부 도구 결과는 매우 큽니다(HTML 200KB). 저장하기 전에 잘라내십시오:

def safe_payload(obj, max_chars=8000):
    s = json.dumps(obj)
    return s if len(s) <= max_chars else s[:max_chars] + '...[truncated]'

PII 마스킹

저장하기 전에 개인 정보를 제거합니다:

import re
EMAIL_RE = re.compile(r'[\w\.-]+@[\w\.-]+')

def redact(text):
    return EMAIL_RE.sub('[email]', text)

print(redact("Contact me at alice@example.com for details."))

구조화된 로그 출력

각 스팬마다 JSON 레코드 하나를 출력하여 ELK, Loki, Datadog 또는 BigQuery로 전달합니다:

import json
import sys

def save_span(record):
    print(json.dumps(record), file=sys.stderr, flush=True)

demo_record = {'span': 'call_llm', 'duration_ms': 120, 'ok': True}
save_span(demo_record)
print("Logged span:", json.dumps(demo_record))

사용자 세션과 연결

나중에 사용자별로 트레이스를 필터링할 수 있도록 모든 스팬에 세션 ID와 사용자 ID를 포함합니다.

샘플링

대량의 에이전트에서는 다음과 같이 샘플링합니다:

import random

def should_trace(user_id):
    return random.random() < 0.10  # 10% of traces
# Always trace errors and slow runs.

random.seed(42)
sampled = sum(should_trace(i) for i in range(1000))
print(f"Traced {sampled} out of 1000 calls (~10% target)")

트레이스에서 재생

새 프롬프트로 트레이스를 다시 실행하여 개선 사항을 테스트할 수 있도록 전체 입력(메시지, 도구, 인수)을 저장합니다. 이것이 평가 주도 개발의 기반입니다.

큰 페이로드를 잘라낼까요?

로그에서 큰 도구 출력을 잘라내는 이유는 무엇일까요?

정리

모든 단계, 모든 입력, 모든 출력이 구조화되고 중첩되며 샘플링됩니다. 이것이 관측 가능성의 다른 모든 요소를 만드는 원재료입니다.

무료로 시작

AI 튜터와 함께 AI Agents을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
60
레슨
239

자주 묻는 질문

“도구 호출 및 입력/출력 기록” 강의는 무료인가요?

네 — “도구 호출 및 입력/출력 기록” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

“도구 호출 및 입력/출력 기록”에서 뭘 배우나요?

단계마다 도구 이름, 입력 인수, 출력, 지연 시간, 오류, 상위 스팬 ID를 기록하는 방법을 알아보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Agents을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“도구 호출 및 입력/출력 기록” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 에이전트에 추적이 필요한 이유
  2. 도구 호출 및 입력/출력 기록
  3. 단계별 지연 시간 및 비용
  4. 에이전트 실행 시각화(Langfuse, LangSmith)
← AI Agents(으)로 돌아가기