Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

챗봇 대화 내용 조회(Get Content) (V2)

호출자와 Agent 사이의 세션에서 사용자 메시지, 응답 및 응답에 사용한 컨텍스트를 조회합니다. exchanges는 첫 대화부터 시간순으로 반환합니다. 세션 목록을 최근 갱신순으로 정렬하는 동작과 구분합니다.

스트리밍 응답을 모두 받은 뒤에는 이 API로 최종 대화 결과와 변수 변경값을 가져옵니다. result.sessionTraceId로 응답 생성 과정을 조회할 수 있습니다.

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

HTTP 요청

GET /api/v2/aipAgents/agents/{agentRid}/sessions/{sessionRid}/content

작업 식별자는 v2.getContent입니다. 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

쿼리 매개변수

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

요청 본문

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

응답

응답은 Content입니다. 각 result.parameterUpdates의 type은 string 또는 objectSet이며, 객체 집합 변경값의 value는 객체 집합 RID입니다. 토큰 사용량이 생략되면 사용량을 알 수 없는 것이므로 0으로 처리하지 않습니다.

이름자료형필수 여부의미와 조건예시 값
exchangeslist<SessionExchange>선택세션의 대화 이력입니다. 각 항목은 사용자 메시지와 Agent 응답으로 이루어지며, 첫 대화 교환부터 시간순으로 반환합니다.

exchanges의 구조

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

세션에서 사용자와 Agent가 주고받은 한 차례의 대화입니다.

이름자료형필수 여부의미와 조건예시 값
userInputobject필수대화를 시작한 사용자 메시지입니다.응답 예시 참조
contextsobject선택Agent 프롬프트에 포함한 추가 컨텍스트입니다. 클라이언트가 사용자 입력과 함께 제공한 컨텍스트와, Agent에 구성한 데이터 소스에서 자동으로 검색한 관련 컨텍스트가 들어갈 수 있습니다. 추가 컨텍스트를 포함하지 않았다면 비어 있습니다.응답 예시 참조
resultobject필수해당 대화 교환의 최종 결과입니다.응답 예시 참조
userInput의 구조
이름자료형필수 여부의미와 조건예시 값
textstring필수사용자 메시지의 텍스트입니다.What is the status of my order?
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필수컨텍스트 검색 함수가 반환한 문자열입니다.
result의 구조
이름자료형필수 여부의미와 조건예시 값
agentMarkdownResponsestring필수Agent가 생성한 최종 Markdown 응답입니다. 취소한 대화에서는 interruptedOutput에 따라 클라이언트가 제공한 응답일 수 있습니다.The status of your order is **In Transit**.
parameterUpdatesmap<ParameterId, ParameterValueUpdate>선택이번 대화에서 Agent가 생성한 애플리케이션 변수 변경값입니다. AIP Chatbot Studio에서 접근 모드를 READ_WRITE로 설정한 변수에만 변경값을 생성할 수 있습니다.
totalTokensUsedinteger선택결과 계산에 사용한 전체 토큰 수입니다. 세션의 모델이 토큰 사용량 정보를 지원하지 않으면 이 필드를 생략합니다.6448
interruptedOutputboolean필수대화를 취소했다면 true입니다. 이때 응답이 있으면 Agent가 생성한 값이 아니라 클라이언트가 취소 요청에 제공한 값입니다.false
sessionTraceIdstring필수세션 추적의 고유 식별자입니다. 추적에는 컨텍스트 검색, 도구 호출 등 Agent가 응답을 만들기 위해 거친 단계가 기록됩니다.12345678-1234-5678-1234-123456789abc
parameterUpdates의 구조

맵의 키는 ParameterId(string), 값은 ParameterValueUpdate(union<string, objectSet>)입니다.

키: AIP Chatbot Studio에서 구성한 애플리케이션 상태 변수의 고유 식별자입니다.

Agent가 생성한 애플리케이션 변수 변경값입니다. StringParameter는 변경한 문자열, ObjectSetParameter는 변경한 객체 집합의 RID를 반환합니다.

분기 string

StringParameter 애플리케이션 변수의 문자열 값입니다.

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

가상 주문 문의 대화의 응답 예시입니다.

{
  "exchanges": [
    {
      "result": {
        "totalTokensUsed": 6448,
        "agentMarkdownResponse": "The status of your order is **In Transit**.",
        "sessionTraceId": "12345678-1234-5678-1234-123456789abc",
        "interruptedOutput": false
      },
      "userInput": {
        "text": "What is the status of my order?"
      },
      "contexts": {
        "functionRetrievedContexts": [
          {
            "functionVersion": "1.2.3",
            "functionRid": "ri.function-registry.main.function.8cb2d957-f0e6-4e0c-81de-e701bd54b18c",
            "retrievedPrompt": "The example order for Titan Technologies is in transit."
          }
        ],
        "objectContexts": [
          {
            "objectRids": [
              "ri.phonograph2-objects.main.object.48668bf6-8878-48d2-b8f8-f0017593feb5"
            ],
            "propertyTypeRids": [
              "ri.ontology.main.property.7899aeb4-a389-4f2e-a0fd-e7193a4f6cb1"
            ]
          }
        ]
      }
    }
  ]
}

개별 오류

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

요청 예제

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/content?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/content?preview=true'.format(HOSTNAME), headers=headers)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 GetContentExample.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 GetContentExample {
    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/content?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/content?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/content?preview=true" `
	-Headers $headers

$response.content