모델에 결과 반환
도구 출력을 도구 역할 메시지로 형식화하여 모델이 읽고 대화를 계속할 수 있게 해보세요.
모델에 결과 반환은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
도구 결과 메시지
도구를 실행한 후 도구 메시지로 결과를 모델에 전달합니다:
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id, # MUST match the assistant's tool_call.id
'content': json.dumps(result)
})콘텐츠는 문자열이어야 합니다
OpenAI는 content가 문자열이기를 기대합니다. 객체는 json.dumps로 직렬화하세요:
# Bad — will error
messages.append({'role': 'tool', 'tool_call_id': id, 'content': {'temp': 18}})
# Good
messages.append({'role': 'tool', 'tool_call_id': id, 'content': '{"temp": 18}'})Anthropic 형식
Anthropic은 사용자 메시지 안에 콘텐츠 블록을 사용합니다:
messages.append({
'role': 'user',
'content': [{
'type': 'tool_result',
'tool_use_id': 'toolu_abc',
'content': json.dumps(result)
}]
})오류 반환
도구가 실패했다면 성공한 것처럼 가장하지 말고 오류를 반환하세요. 모델이 복구할 수 있습니다:
try:
result = run_tool(...)
content = json.dumps({'ok': True, 'data': result})
except Exception as e:
content = json.dumps({'ok': False, 'error': str(e)})
messages.append({'role': 'tool', 'tool_call_id': id, 'content': content})다중 결과 패턴
병렬 도구 호출의 경우 각 결과를 일치하는 ID와 함께 append합니다:
for tc in message.tool_calls:
result = dispatch(tc)
messages.append({
'role': 'tool',
'tool_call_id': tc.id,
'content': json.dumps(result)
})큰 출력: 요약하기
도구가 100KB의 HTML을 반환할 때 전부 모델에 보내면 토큰을 낭비하고 주의력을 분산시킵니다. 먼저 요약하거나 잘라내세요:
def truncate(text, max_chars=4000):
if len(text) <= max_chars:
return text
return text[:max_chars] + f'\n...[truncated, {len(text)-max_chars} more chars]'
sample = "x" * 4500
result = truncate(sample, max_chars=50)
print(result)
항상 동일한 스키마
결과가 성공 / 오류 / 찾을 수 없음처럼 달라지더라도 출력 스키마는 안정적으로 유지하세요. 형태가 일관되면 모델의 안정성이 높아집니다:
from typing import TypedDict, Literal, Optional, Any
class ToolResult(TypedDict):
status: Literal['ok', 'not_found', 'error']
data: Optional[Any]
error: Optional[str]
def make_result(status, data=None, error=None) -> ToolResult:
return {'status': status, 'data': data, 'error': error}
print(make_result('ok', data={'temp': 72}))
print(make_result('not_found', error='city not found'))메타데이터 힌트 포함하기
콘텐츠에 힌트를 포함해 모델이 결과를 해석하도록 도우세요:
content = json.dumps({
'data': rows,
'note': 'Returned 50 rows (most recent first). There may be more matches.'
})이진 데이터
큰 데이터 덩어리를 도구 메시지에 base64로 넣지 마세요. 대신 저장소에 저장하고 URL이나 ID를 반환하세요:
result = {
'image_path': '/tmp/chart-abc.png',
'thumbnail_url': 'https://...',
'caption': 'Sales by quarter, 2024'
}
for k, v in result.items():
print(f"{k}: {v}")
모델을 다시 루프에 넣기
모든 도구 결과를 append한 후 모델을 다시 호출합니다. 모델은 최종 답변을 생성하거나 더 많은 도구를 호출합니다:
class Msg:
def __init__(self, tool_calls=None, content=None):
self.tool_calls = tool_calls or []
self.content = content
class ToolCall:
def __init__(self, name, args):
self.name = name
self.args = args
def call_model(messages, tools):
if len(messages) < 4:
return Msg(tool_calls=[ToolCall('get_weather', {'city': 'Paris'})])
return Msg(content='It is sunny in Paris.')
messages = [{'role': 'user', 'content': 'Weather in Paris?'}]
tools = ['get_weather']
message = call_model(messages, tools)
while message.tool_calls:
for tc in message.tool_calls:
result = f'Result of {tc.name}({tc.args})'
messages.append({'role': 'tool', 'name': tc.name, 'content': result})
print('Tool call:', tc.name, '->', result)
message = call_model(messages, tools)
print('Final answer:', message.content)
도구 출력 감사
디버깅을 위해 모든 (tool_call_id, args, result)를 기록하세요. 에이전트가 이상한 동작을 할 때 가장 먼저 확인할 곳은 도구 결과 기록입니다.
도구 결과 형식
도구 메시지의 tool_call_id는 무엇을 가리키나요?
복습
이제 도구 호출 왕복 과정 전체를 다룰 수 있습니다. 다음 과정에서는 에이전트의 세 번째 기둥인 메모리를 배웁니다.
자주 묻는 질문
“모델에 결과 반환” 강의는 무료인가요?
네 — “모델에 결과 반환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“모델에 결과 반환”에서 뭘 배우나요?
도구 출력을 도구 역할 메시지로 형식화하여 모델이 읽고 대화를 계속할 수 있게 해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“모델에 결과 반환” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.