메인 콘텐츠로 건너뛰기

API Overview


class CrossProjectRefError

클라이언트 측 다이제스트 계산 중 내부 ID로 확인할 수 없는 다른 프로젝트에 대한 ref를 만나면 발생합니다.

class FlushStatus

현재 flush 오퍼레이션에 대한 상태 정보입니다.

class NoInternalProjectIDError

아직 내부 프로젝트 ID가 확인되지 않아 클라이언트 측 다이제스트 계산을 진행할 수 없을 때 발생합니다.

class PendingJobCounts

각 유형의 대기 중인 작업 수입니다.

class WeaveClient

방법 __init__

__init__(
    entity: 'str',
    project: 'str',
    server: 'TraceServerClientInterface',
    ensure_project_exists: 'bool' = True
)

속성 num_outstanding_jobs

모든 executor와 서버에 걸쳐 대기 중인 작업의 총 개수를 반환합니다. 이 속성은 메인 스레드를 차단하지 않고도 백그라운드 작업의 진행 상황을 확인하는 데 사용할 수 있습니다. 반환값:
  • int: 대기 중인 작업의 총 개수

방법 add_cost

add_cost(
    llm_id: 'str',
    prompt_token_cost: 'float',
    completion_token_cost: 'float',
    effective_date: 'datetime | None' = None,
    prompt_token_cost_unit: 'str | None' = 'USD',
    completion_token_cost_unit: 'str | None' = 'USD',
    provider_id: 'str | None' = 'default'
) → CostCreateRes
현재 프로젝트에 비용을 추가합니다. 예시:
client.add_cost(llm_id="my_expensive_custom_model", prompt_token_cost=1, completion_token_cost=2)
client.add_cost(llm_id="my_expensive_custom_model", prompt_token_cost=500, completion_token_cost=1000, effective_date=datetime(1998, 10, 3))
인수:
  • llm_id: LLM의 ID입니다. 예: “gpt-4o-mini-2024-07-18”
  • prompt_token_cost: 프롬프트 토큰당 비용입니다. 예: .0005
  • completion_token_cost: completion 토큰당 비용입니다. 예: .0015
  • effective_date: 기본값은 현재 날짜입니다. datetime.datetime 객체입니다.
  • provider_id: LLM 제공자입니다. 기본값은 “default”입니다. 예: “openai”
  • prompt_token_cost_unit: 프롬프트 토큰 비용의 단위입니다. 기본값은 “USD”입니다. (현재는 사용되지 않지만, 향후 비용의 통화 유형(예: “tokens” 또는 “time”)을 지정하는 데 사용될 예정입니다.)
  • completion_token_cost_unit: completion 토큰 비용의 단위입니다. 기본값은 “USD”입니다. (현재는 사용되지 않지만, 향후 비용의 통화 유형(예: “tokens” 또는 “time”)을 지정하는 데 사용될 예정입니다.) 반환값: CostCreateRes 객체입니다. ids라는 튜플 목록 필드가 하나 있으며, 각 튜플에는 llm_id와 생성된 비용 객체의 ID가 포함됩니다.

방법 add_tags

add_tags(obj_ref: 'ObjectRef | str', tags: 'list[str]') → None
객체 버전에 태그를 추가합니다. 인수:

방법 clear_wandb_run_context

clear_wandb_run_context() → None
wandb run 컨텍스트 재정의를 초기화합니다. 이 작업을 호출한 후에는 call이 run_id 및 step 정보에 대해 전역 wandb.run(사용 가능한 경우)으로 대체됩니다.
  • obj_ref: 객체 버전에 대한 레퍼런스이며, ObjectRef 또는 weave /// URI 문자열입니다.
  • tags: 추가할 태그 문자열 목록입니다. 예시:
client = weave.init("my-project")
client.set_wandb_run_context(run_id="my-run-id", step=5)
# ... 일부 calls 수행 ...
client.clear_wandb_run_context()
# 이제 calls는 다시 전역 wandb.run을 사용합니다

방법 create_call

create_call(
    op: 'str | Op',
    inputs: 'dict[str, Any]',
    parent: 'Call | None' = None,
    attributes: 'dict[str, Any] | None' = None,
    display_name: 'str | Callable[[Call], str] | None' = None,
    use_stack: 'bool' = True,
    _call_id_override: 'str | None' = None,
    started_at: 'datetime | None' = None
) → Call
call을 생성하고 기록한 뒤 런타임 스택에 푸시합니다. 인수:
  • op: call을 생성하는 오퍼레이션 또는 익명 오퍼레이션의 이름입니다.
  • inputs: 오퍼레이션의 입력값입니다.
  • parent: 부모 call입니다. parent가 제공되지 않으면 현재 run이 부모로 사용됩니다.
  • display_name: call의 표시 이름입니다. 기본값은 None입니다.
  • attributes: call의 속성입니다. 기본값은 None입니다.
  • use_stack: call을 런타임 스택에 푸시할지 여부입니다. 기본값은 True입니다.
  • started_at: call 시작 시간을 재정의합니다. None이면 현재 시간을 사용합니다. 반환값: 생성된 Call 객체입니다.

방법 delete_all_object_versions

delete_all_object_versions(object_name: 'str') → int
객체의 모든 버전을 삭제합니다. 인수:
  • object_name: 삭제할 버전이 속한 객체의 이름입니다. 반환값: 삭제된 버전의 수입니다.

방법 delete_all_op_versions

delete_all_op_versions(op_name: 'str') → int
op의 모든 버전을 삭제합니다. 인수:
  • op_name: 버전을 삭제할 op의 이름입니다. 반환값: 삭제된 버전의 개수입니다.

방법 delete_call

delete_call(call: 'Call') → None

방법 delete_calls

delete_calls(call_ids: 'list[str]') → None
ID에 해당하는 calls를 삭제합니다. call을 삭제하면 해당 call의 모든 하위 call도 함께 삭제됩니다. 인수:

방법 delete_object_version

delete_object_version(object: 'ObjectRef') → None

방법 delete_object_versions

delete_object_versions(object_name: 'str', digests: 'list[str]') → int
객체의 특정 버전을 삭제합니다.
  • call_ids: 삭제할 call ID 목록입니다. 예: [“2F0193e107-8fcf-7630-b576-977cc3062e2e”] 인수:
  • object_name: 버전을 삭제할 객체 이름입니다.
  • digests: 삭제할 다이제스트 목록입니다. “latest” 또는 “v0” 같은 별칭을 포함할 수 있습니다. 반환값: 삭제된 버전의 수입니다.

방법 delete_op_version

delete_op_version(op: 'OpRef') → None

방법 fail_call

fail_call(call: 'Call', exception: 'BaseException') → None
예외를 사용해 call을 실패 처리합니다. 이는 finish_call을 간편하게 사용하기 위한 편의 방법입니다.

방법 finish

finish(
    use_progress_bar: 'bool' = True,
    callback: 'Callable[[FlushStatus], None] | None' = None
) → None
모든 백그라운드 작업을 플러시해 처리되도록 합니다. 이 메서드는 현재 큐에 들어 있는 모든 작업이 처리될 때까지 대기하며, 대기 중인 작업의 상태를 보여 주는 진행률 표시줄을 표시합니다. 또한 메인 스레드가 실행되는 동안에도 병렬 처리가 이루어지도록 하며, 데이터가 서버에 업로드되기 전에 사용자 코드가 완료되는 경우 성능이 향상될 수 있습니다. 인수:

방법 finish_call

finish_call(
    call: 'Call',
    output: 'Any' = None,
    exception: 'BaseException | None' = None,
    op: 'Op | None' = None,
    ended_at: 'datetime | None' = None
) → None
call을 완료하고 결과를 저장합니다. call.summary에 있는 값은 데이터베이스에 기록되기 전에 계산된 summary 통계(예: 사용량 및 상태 개수)와 깊게 병합됩니다.

방법 flush

flush() → None
백그라운드 비동기 작업을 플러시합니다. 여러 번 호출해도 안전합니다.

방법 get

get(ref: 'ObjectRef', objectify: 'bool' = True) → Any

방법 get_aliases

get_aliases(obj_ref: 'ObjectRef | str') → list[str]
객체 버전의 별칭을 조회합니다.
  • use_progress_bar: flush 중 진행률 표시줄을 표시할지 여부입니다. 진행률 표시줄이 제대로 렌더링되지 않는 환경(예: CI 환경)에서는 False로 설정하세요.
  • callback: 상태 업데이트를 받는 선택적 콜백 함수입니다. use_progress_bar 설정보다 우선합니다. 인수:
  • obj_ref: 객체 버전에 대한 레퍼런스이며, ObjectRef 또는 weave /// URI 문자열입니다. 반환값: 별칭 문자열 목록입니다. 객체 버전이 최신 버전이면 가상 “latest” 별칭이 포함됩니다.

방법 get_call

get_call(
    call_id: 'str',
    include_costs: 'bool' = False,
    include_feedback: 'bool' = False,
    columns: 'list[str] | None' = None
) → WeaveObject
ID로 단일 Call을 조회합니다. 인수:
  • call_id: 조회할 call의 ID입니다.
  • include_costs: true이면 비용 정보가 summary.weave에 포함됩니다.
  • include_feedback: true이면 피드백 정보가 summary.weave.feedback에 포함됩니다.
  • columns: 응답에 포함할 컬럼 목록입니다. None이면 모든 컬럼이 포함됩니다. 더 적은 컬럼을 지정하면 성능이 더 좋아질 수 있습니다. 일부 컬럼은 항상 포함됩니다: id, project_id, trace_id, op_name, started_at 반환값: Call 객체입니다.

방법 get_calls

get_calls(
    filter: 'CallsFilterLike | None' = None,
    limit: 'int | None' = None,
    offset: 'int | None' = None,
    sort_by: 'list[SortByLike] | None' = None,
    query: 'QueryLike | None' = None,
    include_costs: 'bool' = False,
    include_feedback: 'bool' = False,
    include_storage_size: 'bool' = False,
    include_total_storage_size: 'bool' = False,
    columns: 'list[str] | None' = None,
    expand_columns: 'list[str] | None' = None,
    return_expanded_column_values: 'bool' = True,
    scored_by: 'str | list[str] | None' = None,
    page_size: 'int' = 1000
) → CallsIter
이 프로젝트의 트레이스된 call(오퍼레이션) 목록을 조회합니다. 이 메서드는 트레이스 데이터 쿼리를 위한 강력하고 유연한 인터페이스를 제공합니다. 페이지네이션, 필터링, 정렬, 필드 프로젝션, 스코어링 메타데이터를 지원하며, 맞춤형 트레이스 UI나 분석 도구를 구현하는 데 사용할 수 있습니다. 성능 팁: 결과 크기를 줄이려면 columns를 지정하고 filter 또는 query를 사용하세요. 인수:
  • filter: op_name, parent_ids 등의 필드를 기준으로 결과 범위를 좁히는 상위 수준 필터입니다.
  • limit: 반환할 최대 call 수입니다.
  • offset: 결과를 반환하기 전에 건너뛸 call 수입니다(페이지네이션에 사용).
  • sort_by: 결과를 정렬할 필드 목록입니다(예: started_at desc).
  • query: 고급 필터링을 위한 Mongo 스타일 표현식입니다. 모든 Mongo Operator가 지원되는 것은 아닙니다.
  • include_costs: True이면 summary.weave에 token/비용 정보를 포함합니다.
  • include_feedback: True이면 summary.weave.feedback에 피드백을 포함합니다.
  • include_storage_size: True이면 call의 저장소 크기를 포함합니다.
  • include_total_storage_size: True이면 트레이스의 전체 저장소 크기를 포함합니다.
  • columns: call별로 반환할 필드 목록입니다. 이를 줄이면 성능이 크게 향상될 수 있습니다. (id, trace_id, op_name, started_at 등의 일부 필드는 항상 포함됩니다.)
  • scored_by: 하나 이상의 scorer(이름 또는 ref URI)를 기준으로 필터링합니다. 여러 scorer는 AND 조건으로 결합됩니다.
  • page_size: 페이지당 가져올 call 수입니다. 큰 쿼리에서는 성능을 위해 이 값을 조정하세요.
반환값:
  • CallsIter: Call 객체에 대한 반복자입니다. 슬라이싱, 반복, .to_pandas()를 지원합니다.
예시:
calls = client.get_calls(
     filter=CallsFilter(op_names=["my_op"]),
     columns=["inputs", "output", "summary"],
     limit=100,
)
for call in calls:
     print(call.inputs, call.output)

방법 get_evaluation

get_evaluation(uri: 'str') → Evaluation
URI로 특정 Evaluation 객체를 조회합니다. Evaluation URI는 일반적으로 다음 형식을 따릅니다: weave:///entity/project/object/Evaluation:version “알기 쉬운” 이름으로도 evaluation을 조회할 수 있습니다: get_evaluation(“Evaluation:v1”) 인수:
  • uri (str): 조회할 evaluation의 고유 리소스 식별자입니다.
반환값:
  • Evaluation: 지정한 URI에 해당하는 Evaluation 객체입니다.
예외:
  • TypeError: 해당 URI의 객체가 Evaluation 인스턴스가 아닌 경우입니다.
  • ValueError: URI가 올바르지 않거나 객체를 찾을 수 없는 경우입니다.
예시:
client = weave.init("my-project")
evaluation = client.get_evaluation("weave:///entity/project/object/my-eval:v1")
print(evaluation.name)

방법 get_evaluations

get_evaluations() → list[Evaluation]
현재 프로젝트의 모든 Evaluation 객체를 조회합니다. 반환값:
  • list[Evaluation]: 현재 프로젝트에 있는 모든 Evaluation 객체의 목록입니다. evaluations를 찾지 못했거나 모든 변환이 실패한 경우에는 빈 목록이 반환됩니다.
예시:
client = weave.init("my-project")
evaluations = client.get_evaluations()
print(f"Found {len(evaluations)} evaluations")
for eval in evaluations:
     print(f"Evaluation: {eval.name}")

방법 get_feedback

get_feedback(
    query: 'Query | str | None' = None,
    reaction: 'str | None' = None,
    offset: 'int' = 0,
    limit: 'int' = 100
) → FeedbackQuery
프로젝트의 피드백을 쿼리합니다. 예시:
# 특정 피드백 객체를 가져옵니다.
# 이 경우에도 컬렉션이 반환되며, 항목이 0개 또는 1개 포함될 수 있습니다.
client.get_feedback("1B4082A3-4EDA-4BEB-BFEB-2D16ED59AA07")

# 특정 reaction을 가진 모든 피드백 객체를 조회합니다.
client.get_feedback(reaction="👍", limit=10)

# mongo 스타일 쿼리를 사용하여 특정 피드백 유형을 가진
# 모든 피드백 객체를 조회합니다.
from weave.trace_server.interface.query import Query

query = Query(
    **{
        "$expr": {
            "$eq": [
                {"$getField": "feedback_type"},
                {"$literal": "wandb.reaction.1"},
            ],
        }
    }
)
client.get_feedback(query=query)
인수:
  • query: Mongo 스타일의 쿼리 표현식입니다. 편의를 위해 피드백 UUID 문자열도 사용할 수 있습니다.
  • reaction: 편의를 위해 특정 반응 이모지로 필터링합니다.
  • offset: 피드백 객체를 가져오기 시작할 오프셋입니다.
  • limit: 가져올 피드백 객체의 최대 개수입니다. 반환값: FeedbackQuery 객체입니다.

방법 get_tags

get_tags(obj_ref: 'ObjectRef | str') → list[str]
객체 버전의 태그를 조회합니다. 인수:
  • obj_ref: 객체 버전을 가리키는 레퍼런스로, ObjectRef 또는 weave /// URI 문자열입니다. 반환값: 태그 문자열 목록입니다. 객체 버전에 태그가 없으면 빈 목록을 반환합니다.

방법 get_tags_and_aliases

get_tags_and_aliases(obj_ref: 'ObjectRef | str') → tuple[list[str], list[str]]
단일 Call로 객체 버전의 태그와 별칭를 모두 조회합니다. 인수:
  • obj_ref: ObjectRef 또는 weave /// URI 문자열로 지정한 객체 버전의 레퍼런스입니다. 반환값: (태그, 별칭) 튜플입니다. 각 항목은 문자열 목록입니다. 객체 버전에 태그 또는 별칭가 없으면 빈 목록을 반환합니다.

방법 list_aliases

list_aliases() → list[str]
프로젝트의 모든 고유한 별칭를 나열합니다. 반환값: 프로젝트의 모든 별칭 문자열 목록입니다.

방법 list_tags

list_tags() → list[str]
프로젝트의 모든 고유한 태그를 모두 나열합니다. 반환값: 프로젝트의 모든 태그 문자열 목록입니다.

방법 purge_costs

purge_costs(ids: 'list[str] | str') → None
현재 프로젝트의 비용을 삭제합니다. 예시:
client.purge_costs([ids])
client.purge_costs(ids)
인수:

방법 query_costs

query_costs(
    query: 'Query | str | None' = None,
    llm_ids: 'list[str] | None' = None,
    offset: 'int' = 0,
    limit: 'int' = 100
) → list[CostQueryOutput]
프로젝트의 비용을 쿼리합니다.
  • ids: 제거할 비용 ID입니다. 단일 ID 또는 ID 목록일 수 있습니다. 예시:
# 특정 비용 객체를 가져옵니다.
# 이 경우에도 collection이 반환되며, 항목이 0개 또는 1개 포함될 것으로 예상됩니다.
client.query_costs("1B4082A3-4EDA-4BEB-BFEB-2D16ED59AA07")

# 특정 반응을 가진 모든 비용 객체를 찾습니다.
client.query_costs(llm_ids=["gpt-4o-mini-2024-07-18"], limit=10)
인수:
  • query: Mongo 스타일 쿼리 표현식입니다. 편의를 위해 cost UUID 문자열도 받을 수 있습니다.
  • llm_ids: 편의를 위해 llm_ids 집합을 기준으로 필터링합니다.
  • offset: cost 객체를 가져오기 시작할 오프셋입니다.
  • limit: 가져올 cost 객체의 최대 개수입니다. 반환값: CostQuery 객체입니다.

방법 remove_aliases

remove_aliases(obj_ref: 'ObjectRef | str', alias: 'str | list[str]') → None
객체에서 하나 이상의 별칭를 제거합니다. 인수:

방법 remove_tags

remove_tags(obj_ref: 'ObjectRef | str', tags: 'list[str]') → None
객체 버전에서 태그를 제거합니다.
  • obj_ref: 객체를 가리키는 레퍼런스입니다. ObjectRef 또는 weave /// URI 문자열일 수 있습니다(별칭은 객체 범위에 한정되므로 digest는 사용하지 않음).
  • alias: 제거할 별칭 이름 또는 별칭 이름 목록입니다. 인수:

방법 save

save(val: 'Any', name: 'str', branch: 'str' = 'latest') → Any
직접 호출하지 말고 weave.publish()를 대신 사용하세요.
  • obj_ref: 객체 버전에 대한 레퍼런스입니다. ObjectRef 또는 weave /// URI 문자열일 수 있습니다.
  • tags: 제거할 태그 문자열 목록입니다. 인수:
  • val: 저장할 객체입니다.
  • name: 객체를 저장할 때 사용할 이름입니다.
  • branch: 객체를 저장할 브랜치입니다. 기본값은 “latest”입니다. 반환값: 저장된 객체를 역직렬화한 결과입니다.

방법 set_aliases

set_aliases(obj_ref: 'ObjectRef | str', alias: 'str | list[str]') → None
객체 버전에 하나 이상의 alias를 설정합니다. 인수:

방법 set_wandb_run_context

set_wandb_run_context(run_id: 'str', step: 'int | None' = None) → None
이 클라이언트가 생성한 call에 대해 wandb run_id와 step을 재정의합니다. 이렇게 하면 전역 wandb.run 심볼에 바인딩되지 않은 특정 WandB run에 Weave call을 연결할 수 있습니다.
  • obj_ref: 객체 버전에 대한 레퍼런스이며, ObjectRef 또는 weave /// URI 문자열입니다.
  • alias: 설정할 alias 이름 또는 alias 이름 목록입니다(예: “프로덕션”). 인수:
  • run_id: run ID입니다(entity/프로젝트 접두사 제외). 클라이언트가 entity/프로젝트 접두사를 자동으로 추가합니다.
  • step: call에 사용할 step 번호입니다. None이면 step은 설정되지 않습니다. 예시:
client = weave.init("my-project")
client.set_wandb_run_context(run_id="my-run-id", step=5)
# 이제 모든 calls가 step 5에서 entity/project/my-run-id와 연결됩니다

# 또는 step 없이
client.set_wandb_run_context(run_id="my-run-id")
# Calls가 step 없이 entity/project/my-run-id와 연결됩니다

함수 get_obj_name

get_obj_name(val: 'Any') → str

함수 get_parallelism_settings

get_parallelism_settings() → tuple[int | None, int | None]

함수 map_to_refs

map_to_refs(obj: 'Any') → Any

print_call_link(call: 'Call') → None

함수 redact_sensitive_keys

redact_sensitive_keys(obj: 'Any') → Any

함수 sanitize_object_name

sanitize_object_name(name: 'str') → str