Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

챗봇 응답 추적 조회(Get Session Trace) (V2)

Agent가 응답을 생성하면서 거친 컨텍스트 검색과 도구 호출을 조회합니다. status가 COMPLETE가 될 때까지 이 엔드포인트를 다시 조회하여 진행 상태를 확인합니다. 이 상태는 응답 생성의 종료를 나타내며 모든 도구 호출이 성공했다는 뜻은 아닙니다.

대화 결과의 sessionTraceId를 경로에 지정합니다. 대화 내용 조회의 각 교환 결과에도 이 식별자가 들어 있습니다.

이 엔드포인트는 미리보기 기능이며 언제든 변경되거나 제거될 수 있습니다. 사용하려면 preview=true를 지정합니다.

HTTP 요청

GET /api/v2/aipAgents/agents/{agentRid}/sessions/{sessionRid}/sessionTraces/{sessionTraceId}

작업 식별자는 v2.getSessionTrace입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:aip-agents-read 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
agentRidstring필수AIP Chatbot Studio에서 만든 챗봇의 Agent RID입니다.ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1
sessionRidstring필수대화 세션의 RID입니다.ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6
sessionTraceIdstring필수추적의 고유 식별자입니다.12345678-1234-5678-1234-123456789abc

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
previewboolean선택미리보기 기능 사용을 활성화합니다.true

요청 본문

요청 본문을 사용하지 않습니다.

응답

응답은 SessionTrace입니다. contexts는 생성이 끝나야 채워지므로 IN_PROGRESS 단계에서 이 필드가 없다는 이유로 컨텍스트 설정이 없다고 판단하지 않습니다. 도구 그룹은 호출 요청 순서로 반환하지만, 이 순서만으로 그룹 내부의 병렬 실행이나 완료 순서를 추정하지 않습니다.

toolMetadata.type은 도구 종류를, output.type은 success 또는 failure를 나타냅니다. 도구 입력값과 성공 출력값은 다시 type: string 또는 type: rid로 구분합니다.

이름자료형필수 여부의미와 조건예시 값
idstring필수추적의 고유 식별자입니다.12345678-1234-5678-1234-123456789abc
statusenum필수Agent가 최종 응답 생성을 마쳤는지를 나타냅니다. COMPLETE가 될 때까지 getSessionTrace로 진행 상태를 조회합니다. 허용값: IN_PROGRESS, COMPLETE.IN_PROGRESS
contextsobject선택클라이언트가 제공했거나 Agent가 자동 검색한 추가 컨텍스트를 유형별로 묶습니다. 추가 컨텍스트를 제공하지 않았고 자동 검색도 구성하지 않았다면 비어 있습니다. 객체가 존재하면서 내부 목록이 비어 있으면 검색을 시도했으나 컨텍스트를 찾지 못했다는 뜻입니다. 응답 생성이 끝난 뒤에만 이 필드를 채웁니다.
toolCallGroupslist<ToolCallGroup>선택같은 시점에 시작하도록 요청한 도구 호출을 그룹으로 묶습니다. 그룹 목록은 Agent가 호출을 요청한 순서로 반환합니다.

contexts의 구조

이름자료형필수 여부의미와 조건예시 값
objectContextslist<ObjectContext>선택사용자 메시지와 관련하여 Agent 프롬프트에 포함한 객체 컨텍스트입니다.
functionRetrievedContextslist<FunctionRetrievedContext>선택함수를 실행하여 얻은 뒤 Agent 프롬프트에 추가한 컨텍스트입니다.
objectContexts의 구조

배열 항목은 ObjectContext이며 자료형은 object입니다.

사용자 메시지에 대한 추가 컨텍스트로 프롬프트에 포함할 객체 인스턴스 정보입니다.

이름자료형필수 여부의미와 조건예시 값
objectRidslist<ObjectRid>선택프롬프트에 포함할 관련 객체 인스턴스의 RID 목록입니다.
propertyTypeRidslist<PropertyTypeRid>선택해당 객체에서 프롬프트에 포함할 속성 유형의 RID 목록입니다.
objectRids의 구조

배열 항목은 ObjectRid이며 자료형은 string입니다.

객체의 고유 리소스 식별자이며 다른 Foundry API와 연계할 때 사용합니다.

propertyTypeRids의 구조

배열 항목은 PropertyTypeRid이며 자료형은 string입니다.

속성의 고유 리소스 식별자입니다.

functionRetrievedContexts의 구조

배열 항목은 FunctionRetrievedContext이며 자료형은 object입니다.

Agent 프롬프트에 추가하기 위해 함수를 실행하여 얻은 컨텍스트입니다.

이름자료형필수 여부의미와 조건예시 값
functionRidstring필수함수의 고유 리소스 식별자이며 다른 Foundry API와 연계할 때 사용합니다.ri.function-registry.main.function.8cb2d957-f0e6-4e0c-81de-e701bd54b18c
functionVersionstring필수함수 버전은 <major>.<minor>.<patch>-<tag> 형식이며 -<tag>는 생략할 수 있습니다. 예: 1.2.3, 1.2.3-rc1.1.2.3
retrievedPromptstring필수컨텍스트 검색 함수가 반환한 문자열입니다.

toolCallGroups의 구조

배열 항목은 ToolCallGroup이며 자료형은 object입니다.

응답 생성 과정의 같은 시점에 시작하도록 요청한 도구 호출 목록입니다.

이름자료형필수 여부의미와 조건예시 값
toolCallslist<ToolCall>선택
toolCalls의 구조

배열 항목은 ToolCall이며 자료형은 object입니다.

도구 호출과 그 입력 및 출력입니다.

이름자료형필수 여부의미와 조건예시 값
toolMetadataobject필수호출한 도구의 이름과 유형입니다.응답 예시 참조
inputobject필수도구 호출의 입력 매개변수입니다.응답 예시 참조
outputunion<success, failure>선택해당 도구 호출이 진행 중이면 비어 있습니다.
toolMetadata의 구조
이름자료형필수 여부의미와 조건예시 값
namestring필수Agent에 구성한 도구 이름입니다.Object Query Tool
typeenum필수호출한 도구의 유형입니다. 허용값: FUNCTION, ACTION, ONTOLOGY_SEMANTIC_SEARCH, OBJECT_QUERY, UPDATE_APPLICATION_VARIABLE, REQUEST_CLARIFICATION, OBJECT_QUERY_WITH_SQL, CODE_EXECUTION.FUNCTION
input의 구조
이름자료형필수 여부의미와 조건예시 값
thoughtstring선택Agent가 해당 도구를 선택한 이유에 관해 제공한 추가 메시지입니다.I need to find the customer with the name 'Titan Technologies'.
inputsmap<ToolInputName, ToolInputValue>선택
inputs의 구조

맵의 키는 ToolInputName(string), 값은 ToolInputValue(union<string, rid>)입니다.

키: 도구 입력 매개변수의 이름입니다.

문자열 또는 리소스 식별자(RID) 형태의 도구 입력값입니다.

분기 string

도구에 전달한 문자열 입력값입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: string.string
valuestring필수Titan Technologies
분기 rid

도구에 전달한 RID 입력값입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: rid.rid
ridstring필수ri.object-set.main.temporary-object-set.8b12d4a9-4cf5-43c4-a612-77e5fc015e02
output의 구조
분기 success

도구 호출이 성공했을 때의 출력입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: success.success
outputunion<string, rid>필수문자열 또는 리소스 식별자(RID) 형태의 도구 출력값입니다.
output의 구조
분기 string

도구가 반환한 문자열입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: string.string
valuestring필수Titan Technologies
분기 rid

도구가 반환한 RID입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: rid.rid
ridstring필수ri.object-set.main.temporary-object-set.8b12d4a9-4cf5-43c4-a612-77e5fc015e02
분기 failure

도구 호출이 실패했을 때의 출력입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수분기를 구분하는 type 값입니다. 허용값: failure.failure
correctionMessagestring필수호출 실패 시 도구가 Agent에 반환한 수정 안내입니다. Agent가 도구 입력을 고치는 데 사용할 수 있습니다.The order ID must be a string.

가상의 주문 조회에 응답하는 중에 기록한 추적 예시입니다.

{
  "toolCallGroups": [
    {
      "toolCalls": [
        {
          "toolMetadata": {
            "name": "Object Query Tool",
            "type": "FUNCTION"
          },
          "input": {
            "thought": "I need to find the customer with the name 'Titan Technologies'."
          }
        }
      ]
    }
  ],
  "id": "12345678-1234-5678-1234-123456789abc",
  "status": "IN_PROGRESS"
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
SessionTraceNotFoundNOT_FOUND404지정한 세션 추적을 찾을 수 없습니다.sessionTraceId, agentRid, sessionRid
SessionNotFoundNOT_FOUND404지정한 세션을 찾을 수 없습니다.agentRid, sessionRid
AgentNotFoundNOT_FOUND404지정한 Agent를 찾을 수 없습니다.agentRid

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 예시 식별자와 매개변수 값은 실제 작업 대상에 맞게 바꿉니다.

cURL

curl \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/aipAgents/agents/ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1/sessions/ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6/sessionTraces/12345678-1234-5678-1234-123456789abc?preview=true"

Python

Requests 라이브러리가 설치된 Python 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "authorization": "Bearer {}".format(TOKEN)
}

response = requests.get('https://{}/api/v2/aipAgents/agents/ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1/sessions/ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6/sessionTraces/12345678-1234-5678-1234-123456789abc?preview=true'.format(HOSTNAME), headers=headers)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 GetSessionTraceExample.java 파일에서 사용합니다.

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

public class GetSessionTraceExample {
    public static void main(String[] args) throws Exception {
        String HOSTNAME = System.getenv("FOUNDRY_HOST");
        String TOKEN = System.getenv("FOUNDRY_TOKEN");

        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpGet request = new HttpGet("https://" + HOSTNAME + "/api/v2/aipAgents/agents/ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1/sessions/ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6/sessionTraces/12345678-1234-5678-1234-123456789abc?preview=true");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/aipAgents/agents/ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1/sessions/ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6/sessionTraces/12345678-1234-5678-1234-123456789abc?preview=true`, {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${TOKEN}`,
    }
}).then((response) => {
    console.log(response)
});

PowerShell

$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

$headers = @{
    "authorization" = "Bearer $TOKEN"
}

$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/aipAgents/agents/ri.aip-agents..agent.732cd5b4-7ca7-4219-aabb-6e976faf63b1/sessions/ri.aip-agents..session.292db3b2-b653-4de6-971c-7e97a7b881d6/sessionTraces/12345678-1234-5678-1234-123456789abc?preview=true" `
	-Headers $headers

$response.content