챗봇 세션 로그
챗봇에 보낸 메시지 하나가 실행 한 건입니다. 실행마다 고유 trace 식별자가 부여되며 관련 로그를 연결합니다. 구조화 이벤트를 Foundry 스트리밍 데이터셋으로 내보내어 감시하고 분석할 수 있습니다. 로그 내보내기 기능과 해당 관리 권한이 필요하며 이벤트 유형과 스키마는 변경될 수 있습니다.
보안과 보존
로그에는 사용자 식별자, 프롬프트, 애플리케이션 변수, 검색 문맥과 도구 입출력이 포함될 수 있습니다. 내보내기 전에 관측 목적과 보존 기간을 정하고 필요한 담당자만 출력 데이터셋에 접근하게 합니다. 로그 구성에서 Apply markings로 출력 스트리밍 데이터셋에 보안 표지를 적용합니다. 사용자 식별자를 실제 사용자에게 연결할 수 있다는 점을 고려하여 접근과 보존을 관리합니다.
공통 필드
| 필드 | 자료형 | 의미 |
|---|---|---|
traceId | String | 같은 실행의 모든 로그를 연결하는 Foundry 추적 식별자입니다. 함수 및 언어 모델 사용 로그에도 공유됩니다. |
uid | String | 메시지를 보낸 사용자 식별자입니다. |
owning_rid | String | 전체 호출을 시작한 원래 실행 리소스입니다. 챗봇 A가 함수를 거쳐 챗봇 B를 호출해도 관련 로그의 값은 A의 RID입니다. |
챗봇 데이터는 event_name과 이벤트별 payload로 구성합니다. 모든 payload의 session_rid는 같은 대화를 묶습니다.
이벤트와 페이로드
session_metadata는 실행 시작에 한 번 기록합니다. agent_rid, agent_version, session_rid, caller_identifier가 모두 String이며 각각 챗봇 RID, 버전, 세션 RID와 호출자를 나타냅니다.
user_request에는 해석이 끝난 요청 문맥을 기록합니다.
| 필드 | 자료형 | 의미 |
|---|---|---|
session_rid | String | 세션 식별자. |
user_query | UserQuery | 텍스트와 미디어를 포함할 수 있는 사용자 메시지. |
contexts_from_profile | List<Context> | 챗봇에 구성한 온톨로지, 문서, 함수 기반, 사용자 정의 문서 문맥의 검색 결과. |
contexts_from_user_input | List<Context> | 사용자 입력에서 해석한 검색 문맥. |
application_variables | List<ApplicationVariable> | 요청 시점 변수의 식별자, 이름, 값과 프롬프트 가시성. |
node_id | String | 실행 노드 식별자. |
parent_node_id | 선택적 String | 이어서 실행한 이전 세션 노드 식별자. |
system_chat_message, user_chat_message, assistant_chat_message는 모델에 전달한 시스템 프롬프트, 사용자 메시지, 모델 응답을 기록합니다. 공통으로 session_rid: String과 텍스트, 미디어 참조 또는 도구 호출을 포함하는 content: List<Content>가 있습니다. native_tools: List<NativeTool>는 자체 도구 호출 모드의 system_chat_message에만 존재합니다. 프롬프트 기반 도구 정의는 content 안에 들어갑니다.
tool_call에는 session_rid: String, tool_name: String, 입력 이름과 값의 맵인 parsed_tool_input: Map<String, String>이 있습니다.
tool_call_result에는 session_rid: String, tool_name: String, 선택적 tool_call_id: String, 밀리초 실행 시간 duration_milliseconds: Long, result: ToolResult가 있습니다. 성공 결과는 LLM에 반환한 llm_value: String과 갱신한 변수 이름 및 새 값의 variable_updates 목록을 담습니다. 실패 결과는 error_message: String과 reason: String을 담습니다.
final_response는 session_rid와 response: FinalResponse를 기록합니다. Chatbot response는 텍스트와 미디어를 포함한 콘텐츠 목록이며, Client tool call은 직접 답하는 대신 클라이언트 동작에 처리를 넘겼다는 뜻입니다. execution_error는 session_rid: String과 error_name: String으로 실행 오류를 기록합니다.
조사 예시
대화를 재구성하려면 owning_rid로 시작 챗봇을 고르고 session_rid로 한 대화를 한정합니다. user_request.user_query에서 질문을, final_response.response에서 응답을 가져옵니다.
도구 성능은 tool_call_result에서 도구별 성공 및 실패 수와 시간을 비교합니다. duration_milliseconds로 정렬하면 느린 호출을 찾을 수 있습니다. 같은 traceId에서 동일 도구의 실패 뒤에 다시 호출과 결과가 이어지면 재시도를 조사할 수 있습니다. 반복 호출 자체가 항상 재시도라는 뜻은 아니므로 실패와 입력을 함께 확인합니다.
아래는 user_request 로그의 축약된 구조 예시입니다.
{
"time": "2024-01-15T09:30:00.000Z",
"uid": "<USER_ID>",
"traceId": "<TRACE_ID>",
"content": {
"event_name": "user_request",
"payload": {
"session_rid": "ri.aip-agents..session.<SESSION_ID>",
"user_query": {
"content": [
{
"text": {
"content": "Summarize the key points from the latest press conference transcript."
}
}
]
}
}
}
}