URL로 필터된 뷰 만들기

URL로 필터된 뷰 만들기

Confident AI 페이지 URL에 필터를 직접 적어 넣으면, 테스트 런·테스트 케이스·트레이스 등 어떤 리스트든 이미 필터가 적용된 채로 열 수 있어요. 누구와도 공유할 수 있죠.

출처: 문서

본문

개요

Confident AI에서는 트레이스, 테스트 런, 테스트 케이스 등 다양한 리스트를 필터할 수 있어요. 이 필터들은 URL 파라미터에 적용되므로 누구와도 공유할 수 있어요. JSON으로 필터를 직접 만들고 URL로 변환할 수도 있습니다.

이 가이드는 그 JSON을 작성하는 방법, 여러 필터를 조합하는 방법, 여러분 언어로 링크를 인코딩하는 방법을 보여줘요 — 마지막에는 필터할 수 있는 모든 것의 레퍼런스가 이어집니다.

필터 만들기

페이지 URL에서 시작하기

필터할 페이지의 URL로 시작해요. 모든 리스트에서 형태는 같아요:

https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs
https://app.confident-ai.com/project/YOUR_PROJECT_ID/observatory/traces

여기에 쿼리 파라미터 두 개를 추가할 거예요:

  • filters — JSON으로 된 필터. 압축돼 있어요(3단계에서 방법을 보여줘요).
  • operator — AND 또는 OR. 여러 필터 그룹이 어떻게 결합되는지 나타내요.

필터를 JSON으로 작성하기

필터는 그룹 단위로 정리돼요. 각 그룹은 operator와 조건 리스트를 갖고, 각 조건은 category(무엇을 필터하는지), condition, value를 담은 단일 필터예요:

[
  {
    "operator": "AND",
    "filters": [
      { "category": "Metadata", "key": "environment", "condition": "Is", "value": "production" }
    ]
  }
]
  • 그룹 안의 조건은 그 그룹의 operator로 결합돼요.
  • 그룹들은 최상위 operator 쿼리 파라미터로 결합돼요.

Metadata, Hyperparameter, Metric, Criteria, Classifier 필터를 제외한 모든 필터는 key를 category와 같은 텍스트로 설정하세요. 그 다섯 종류는 key가 필터 대상의 특정 이름(메타데이터 키, 하이퍼파라미터, 메트릭, 크라이테리아, 클래스파이어 이름)이에요.

아래 필터 레퍼런스에 각 페이지의 모든 속성에 대한 정확한 category, condition, value가 나열돼 있어요.

인코딩해서 URL에 추가하기

Confident AI는 filters 값을 lz-string 라이브러리로 압축된 문자열로 저장해요. JSON을 compressToEncodedURIComponent로 압축한 뒤, 결과를 filters로 추가하고(이미 URL에 안전해요) operator를 설정하면 돼요:

https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=COMPRESSED_STRING&operator=AND

JavaScript

npm install lz-string
import LZString from "lz-string";

const filters = [
  {
    operator: "AND",
    filters: [
      { category: "Metadata", key: "environment", condition: "Is", value: "production" },
    ],
  },
];

const encoded = LZString.compressToEncodedURIComponent(JSON.stringify(filters));
const url = `https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=${encoded}&operator=AND`;

Python

pip install lzstring
import json
import lzstring

filters = [
    {
        "operator": "AND",
        "filters": [
            {"category": "Metadata", "key": "environment", "condition": "Is", "value": "production"},
        ],
    },
]

encoded = lzstring.LZString().compressToEncodedURIComponent(json.dumps(filters))
url = f"https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters={encoded}&operator=AND"

Rust

lz-str 크레이트를 사용해요:

let json = r#"[{"operator":"AND","filters":[{"category":"Metadata","key":"environment","condition":"Is","value":"production"}]}]"#;
let encoded = lz_str::compress_to_encoded_uri_component(json);
let url = format!("https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters={encoded}&operator=AND");

Ruby

lz_string 같은 커뮤니티 포트를 사용해요:

json = '[{"operator":"AND","filters":[{"category":"Metadata","key":"environment","condition":"Is","value":"production"}]}]'
encoded = LZString.compress_to_encoded_uri_component(json)
url = "https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=#{encoded}&operator=AND"

Elixir

elixir-lz-string 같은 커뮤니티 포트를 사용해요:

json = ~s([{"operator":"AND","filters":[{"category":"Metadata","key":"environment","condition":"Is","value":"production"}]}])
encoded = LzString.compress_to_encoded_uri_component(json)
url = "https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=#{encoded}&operator=AND"

Java

lz-string4java 같은 커뮤니티 포트를 사용해요:

String json = "[{\"operator\":\"AND\",\"filters\":[{\"category\":\"Metadata\",\"key\":\"environment\",\"condition\":\"Is\",\"value\":\"production\"}]}]";
String encoded = LZString.compressToEncodedURIComponent(json);
String url = "https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=" + encoded + "&operator=AND";

C#

lz-string-csharp 같은 커뮤니티 포트를 사용해요:

string json = "[{\"operator\":\"AND\",\"filters\":[{\"category\":\"Metadata\",\"key\":\"environment\",\"condition\":\"Is\",\"value\":\"production\"}]}]";
string encoded = LZString.compressToEncodedURIComponent(json);
string url = $"https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters={encoded}&operator=AND";

PHP

lz-string-php 같은 커뮤니티 포트를 사용해요:

$json = json_encode([
    ["operator" => "AND", "filters" => [
        ["category" => "Metadata", "key" => "environment", "condition" => "Is", "value" => "production"],
    ]],
]);
$encoded = LZString::compressToEncodedURIComponent($json);
$url = "https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters={$encoded}&operator=AND";

Go

go-lz-string 같은 커뮤니티 포트를 사용해요:

input := `[{"operator":"AND","filters":[{"category":"Metadata","key":"environment","condition":"Is","value":"production"}]}]`
encoded, _ := golzstring.CompressToEncodedURIComponent(input)
url := "https://app.confident-ai.com/project/YOUR_PROJECT_ID/test-runs?filters=" + encoded + "&operator=AND"

JavaScript의 lz-string 이 참조 구현이고, 나머지는 그것을 따르는 커뮤니티 포트예요. 설치 단계와 메서드 이름이 조금씩 다르니, 여러분 언어의 연결된 저장소를 확인하세요.

완료 ✅. 링크를 열면 필터가 적용된 페이지가 로드돼요.

필터 레퍼런스

각 필터의 category, condition, value를 아래에 있는 그대로 복사하세요 — 실제 속성이나 값과 일치하지 않는 것은 적용되지 않아요.

필터할 수 있는 속성은 페이지마다 달라요 — 각 페이지의 전체 세트가 아래에 있어요. 표에서 쓰이는 줄임말 두 가지:

  • 숫자 조건 — Is less than, Is equal or less than, Is greater than, Is equal or greater than, Is equal to, Does not equal.
  • 태그 조건 — Contains, Contains only, Does not contain.
  • 그 외에는 행에 달리 표시되지 않는 한 Is / Is not을 써요.

대부분의 속성은 category를 key로 사용해요. 일부는 커스텀 key 를 쓰는데, 그게 필터 대상 이름이에요: Metadata(메타데이터 키), Hyperparameter(하이퍼파라미터 이름), Metric Status / Metric Score(메트릭 이름), Criteria(크라이테리아 이름), Classifier(시그널 이름).

테스트 런

Property category Conditions value
Test run ID Test Run ID Is, Is not the test run's ID
Identifier Identifier Is, Is not the run identifier
Test file Test File Is, Is not the test file name
Dataset Dataset Is, Is not the dataset alias
Status Status Is, Is not COMPLETED, IN_PROGRESS, ERRORED, or CANCELLED
Official Official Is, Is not Official or Not official
Evals mode Evals Mode Is, Is not End-to-End or Component-Level
Tests passed Tests Passed numeric conditions a whole number
Tests failed Tests Failed numeric conditions a whole number
Pass rate Pass Rate numeric conditions a percentage, e.g. 90
Fail rate Fail Rate numeric conditions a percentage, e.g. 10
Tags Tags tag conditions one or more tags, e.g. ["prod", "smoke"]
Trace attached Trace Is, Is not Set or Not Set
Annotations attached Annotations Is, Is not Set or Not Set
Annotation name Annotation Name Is, Is not the annotation's name
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value
Hyperparameter (key: hyperparameter name) Hyperparameter Is, Is not the hyperparameter value
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

테스트 케이스

Property category Conditions value
Test case ID Test Case ID Is, Is not the test case's ID
Name Name Is, Is not the test case name
Tags Tags tag conditions one or more tags, e.g. ["billing"]
Trace attached Trace Is, Is not Set or Not Set
Trace ID Trace Uuid Is, Is not the trace ID
Trace name Trace Name Is, Is not the trace name
Trace status Trace Status Is, Is not Passing or Failing
Trace tags Trace Tags tag conditions one or more tags
Span name Span Name Is, Is not the span name
Span type Span Type Is, Is not LLM, AGENT, RETRIEVER, TOOL, or SPAN
Span status Span Status Is, Is not Passing or Failing
Model Model Is, Is not the model name
Embedder Embedder Is, Is not the embedder name
Chunk size Chunk Size Is, Is not a number
Top-K Top-K Is, Is not a number
Annotation name Annotation Name Is, Is not the annotation's name
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

트레이스

Property category Conditions value
Trace ID Trace Uuid Is, Is not a trace ID
Name (trace name) Name Is, Is not a trace name
Thread ID Thread Id Is, Is not a thread ID
User ID User Id Is, Is not an end-user ID
Tags Tags Contains, Contains only, Does not contain one or more tags
Tools called Tools Called tag conditions one or more tool names
Metrics status (overall) Metrics Status Is, Is not Passing or Failing
Error status Error Status Is, Is not Passing or Failing
Environment Environment Is, Is not production, development, staging, or testing
Metric name (which metrics ran) Metric Name Contains, Contains only, Does not contain one or more metric names
Review flag Review flag Is, Is not Flagged or Not flagged
Annotation name Annotation Name Is, Is not an annotation name
Annotator Annotator Is, Is not an annotator (by email)
End user End User Is, Is not an end-user ID
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Annotation date Annotation Date Is between a date range
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value
Classifier (key: signal name) Classifier Is, Is not the classifier value
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

스팬

일부 속성은 특정 스팬 타입에만 적용돼요(행에 표시돼 있어요).

Property category Conditions value
Span ID Span Uuid Is, Is not a span ID
Name (span name) Name Is, Is not a span name
Trace ID Trace Uuid Is, Is not a trace ID
Integration Integration Is, Is not an integration
Metrics status (overall) Metrics Status Is, Is not Passing or Failing
Error status Error Status Is, Is not Passing or Failing
Model (LLM spans) Model Is, Is not a model name
Provider (LLM spans) Provider Is, Is not a provider
Prompt alias (LLM spans) Prompt Alias Is, Is not a prompt alias
Prompt version (LLM spans) Prompt Version Is, Is not a prompt version
Prompt label (LLM spans) Prompt Label Is, Is not a prompt label
Prompt commit hash (LLM spans) Prompt Commit Hash Is, Is not a commit hash
Embedder (retriever spans) Embedder Is, Is not an embedder
Chunk size (retriever spans) Chunk Size Is, Is not a number
Top-K (retriever spans) Top-K Is, Is not a number
Environment Environment Is, Is not production, development, staging, or testing
Metric name (which metrics ran) Metric Name Contains, Contains only, Does not contain one or more metric names
Annotation name Annotation Name Is, Is not an annotation name
Annotator Annotator Is, Is not an annotator (by email)
End user End User Is, Is not an end-user ID
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Annotation date Annotation Date Is between a date range
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

스레드

Property category Conditions value
Thread ID Thread Id Is, Is not a thread ID
User ID User Id Is, Is not an end-user ID
Metrics status (overall) Metrics Status Is, Is not Passing or Failing
Tags Tags Contains, Contains only, Does not contain one or more tags
Environment Environment Is, Is not production, development, staging, or testing
Metric name (which metrics ran) Metric Name Contains, Contains only, Does not contain one or more metric names
Trace count Trace Count numeric conditions a number
Annotation name Annotation Name Is, Is not an annotation name
Annotator Annotator Is, Is not an annotator (by email)
End user End User Is, Is not an end-user ID
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected outcome Expected Outcome Is, Is not Set or Not Set
Annotation date Annotation Date Is between a date range
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value
Classifier (key: signal name) Classifier Is, Is not the classifier value
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

사용자

Property category Conditions value
Thread ID Thread Id Is, Is not a thread ID
Tags Tags tag conditions one or more tags
Model Model Is, Is not a model name
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Metric status (key: metric name) Metric Status Is, Is not Passing or Failing
Metric score (key: metric name) Metric Score numeric conditions a number 0–1
Metadata (key: metadata key) Metadata Is, Is not the metadata value

데이터셋

Property category Conditions value
Golden ID Golden ID Is, Is not a golden ID
Ingestion task Ingestion Task Is, Is not an ingestion-task name
Finalized Finalized Is, Is not True or False
Tags Tags tag conditions one or more tags
Assigned to Assigned to Is, Is not a project member (by email)
Requested review from Requested review from Is, Is not a project member (by email)

휴먼 어노테이션

Property category Conditions value
Annotation type Annotation Type Is, Is not Thumbs Up/Down or Star Rating
Annotator Annotator Is, Is not an annotator (by name / email)
End user End User Is, Is not an end-user ID
Explanation Explanation Is, Is not Set or Not Set
Expected output Expected Output Is, Is not Set or Not Set
Annotation date Annotation Date Is between a date range
Star rating Star Rating Is, Is not a number 1–5
Thumbs rating Thumbs Rating Is, Is not 1 (up) or 0 (down)
Criteria (key: criteria name) Criteria Is, Is not a star rating 1–5, or thumbs 1/0

리스크 프로필

Property category Conditions value
Assessment ID Assessment ID Is, Is not an assessment ID
Identifier Identifier Is, Is not an identifier
Framework Framework Is, Is not a framework name
Status Status Is, Is not COMPLETED, IN_PROGRESS, ERRORED, or CANCELLED
Official Official Is, Is not Official or Not official
Risk category Risk Category Is, Is not a risk category
Attack method Attack Method Is, Is not an attack method
Tests passed Tests Passed numeric conditions a whole number
Tests failed Tests Failed numeric conditions a whole number
Pass rate Pass Rate numeric conditions a percentage
Fail rate Fail Rate numeric conditions a percentage
Vulnerability Vulnerability Is, Is not a vulnerability
Vulnerability type Vulnerability Type Is, Is not a vulnerability type

레드티밍 테스트 케이스

Property category Conditions value
Test case ID Test Case ID Is, Is not a test-case ID
Vulnerability Vulnerability Is, Is not a vulnerability
Vulnerability type Vulnerability Type Is, Is not a vulnerability type
Attack method Attack Method Is, Is not an attack method
Risk category Risk Category Is, Is not a risk category
Status Status Is, Is not Passing, Failing, or Errored

예시

아래 각 예시는 filters JSON이에요 — 압축하고(3단계) URL에 추가하면 돼요.

메타데이터 값으로 필터하기. 테스트 케이스가 environment: production을 담은 테스트 런:

[
  {
    "operator": "AND",
    "filters": [
      { "category": "Metadata", "key": "environment", "condition": "Is", "value": "production" }
    ]
  }
]

하이퍼파라미터로 필터하기. model 하이퍼파라미터에 gpt-4o 값을 쓴 테스트 런 — ID 없이 이름과 값만:

[
  {
    "operator": "AND",
    "filters": [
      { "category": "Hyperparameter", "key": "model", "condition": "Is", "value": "gpt-4o" }
    ]
  }
]

한 그룹에서 조건 결합하기. 테스트 케이스가 environment: production을 담은 완료 런 — 둘 다 성립해야 하므로 그룹 operator가 AND예요:

[
  {
    "operator": "AND",
    "filters": [
      { "category": "Metadata", "key": "environment", "condition": "Is", "value": "production" },
      { "category": "Status", "key": "Status", "condition": "Is", "value": "COMPLETED" }
    ]
  }
]

OR로 그룹 결합하기. 공식이 또는 Answer Relevancy 메트릭이 통과한 런 — 두 그룹이 최상위 operator=OR로 이어져요:

[
  {
    "operator": "AND",
    "filters": [
      { "category": "Official", "key": "Official", "condition": "Is", "value": "Official" }
    ]
  },
  {
    "operator": "AND",
    "filters": [
      { "category": "Metric Status", "key": "Answer Relevancy", "condition": "Is", "value": "Passing" }
    ]
  }
]

다음 단계

필터된 링크는 필터하는 런을 만드는 워크플로와 잘 어울려요.

트레이스에서 테스트 런 만들기

앱의 트레이스를 평가된 테스트 케이스로 테스트 런에 흘려보내요 — 이 링크로 필터하고 공유하는 런이에요.

이해관계자용 리포트 생성하기

필터된 뷰를 반복되는 큐레이션 리포트로 바꿔서, 일정에 맞춰 이해관계자에게 도달하게 해요.

더 알아보기