API Overview
class Agent
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonemodel_name:<class 'str'>temperature:<class 'float'>system_message:<class 'str'>tools:list[typing.Any]
방법 step
state: 환경의 현재 상태입니다.action: 수행할 동작입니다. 반환값: 환경의 새 상태입니다.
class AgentState
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonehistory:list[typing.Any]
class AnnotationSpec
name:str | Nonedescription:str | Nonefield_schema:dict[str, typing.Any]unique_among_creators:<class 'bool'>op_scope:list[str] | None
클래스 메서드 preprocess_field_schema
클래스 메서드 validate_field_schema
방법 value_is_valid
-
payload: 스키마를 기준으로 검증할 데이터 반환값: -
bool: 검증에 성공하면 True, 그렇지 않으면 False
class Audio
format: 오디오 형식(현재 ‘wav’ 또는 ‘mp3’ 지원)data: 바이트 형식의 원시 오디오 데이터
-
data: 오디오 데이터(바이트 또는 base64로 인코딩된 문자열) -
format: 오디오 형식(‘wav’ 또는 ‘mp3’) -
validate_base64: 입력 데이터에 대해 base64 디코딩을 시도할지 여부 예외: -
ValueError: 오디오 데이터가 비어 있거나 형식이 지원되지 않는 경우
방법 __init__
방법 export
클래스 메서드 from_data
-
path: 오디오 파일을 저장할 경로 매개변수: -
data: 바이트 또는 base64로 인코딩된 문자열 형태의 오디오 데이터 -
format: 오디오 형식 (‘wav’ 또는 ‘mp3’) 반환값: -
Audio: 새로운 Audio 인스턴스
ValueError: 형식이 지원되지 않는 경우
클래스 메서드 from_path
-
path:.wav또는.mp3확장자를 가진 오디오 파일 경로 반환값: -
Audio: 파일에서 로드된 새 Audio 인스턴스
ValueError: 파일이 존재하지 않거나 지원하지 않는 확장자인 경우
class ClassifierMonitor
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonesampling_rate:<class 'float'>scorers:list[flow.scorer.Scorer]op_names:list[typing.Union[typing.Literal['genai.turn_ended'], str]]query:trace_server.interface.query.Query | Noneis_traced:<class 'bool'>active:<class 'bool'>scorer_debounce_config:flow.monitor.ScorerDebounceConfig | Noneprompt_header:str | Noneprompt_footer:str | None
방법 activate
방법 deactivate
클래스 메서드 from_obj
방법 get_prompt_header
방법 model_post_init
op_names를 정규화합니다.
게시에는 객체별 훅이 없으므로, 단순히 weave.publish(monitor)만 호출하는 경우(activate() 없음)까지 처리할 수 있도록 여기서 짧은 이름을 확장합니다. 게시하는 쪽은 일반적으로 weave.init를 이미 호출했기 때문에, 모니터를 생성할 때 클라이언트가 설정되어 있습니다.
단위 테스트, 검사, 워커에서 저장된 모니터를 역직렬화하는 경우처럼, 여러 사용 사례에서는 클라이언트 없이 생성이 수행됩니다. get_weave_client()에 대한 가드가 있어 클라이언트 없이도 생성할 수 있습니다. 이 경우에는 정규화가 일어나지 않지만, 저장된 모니터에는 이미 전체 ref가 들어 있으므로 괜찮습니다.
예외적인 경우로, 모니터가 정규화되지 않은 상태로 SDK를 통해 생성될 수 있습니다. 예를 들어 사용자가 모니터를 생성한 뒤 weave.init를 호출하고, 그다음 게시하는 경우입니다. 이런 사용 사례에서는 activate() 또는 deactivate()를 호출하는 것이 우회 방법이 될 수 있습니다.
class Content
- from_path()
- from_bytes()
- from_text()
- from_url()
- from_base64()
- from_data_url()
방법 __init__
Content.from_path()와 같은 클래스 메서드를 사용하세요.
Pydantic 필드:
data:<class 'bytes'>size:<class 'int'>mimetype:<class 'str'>digest:<class 'str'>filename:<class 'str'>content_type:typing.Literal['bytes', 'text', 'base64', 'file', 'url', 'data_url', 'data_url:base64', 'data_url:encoding', 'data_url:encoding:base64']input_type:<class 'str'>encoding:<class 'str'>metadata:dict[str, typing.Any] | Noneextension:str | None
속성 art
속성 ref
방법 as_string
encoding 속성을 사용해 디코딩합니다. base64인 경우, 데이터를 먼저 base64 바이트로 다시 인코딩한 다음 ASCII 문자열로 디코딩합니다.
반환값:
str.
클래스 메서드 from_base64
클래스 메서드 from_bytes
클래스 메서드 from_data_url
클래스 메서드 from_path
클래스 메서드 from_text
클래스 메서드 from_url
클래스 메서드 model_validate
클래스 메서드 model_validate_json
방법 open
bool: 파일을 성공적으로 열었으면 True, 그렇지 않으면 False입니다.
방법 save
방법 serialize_data
방법 to_data_url
-
dest: 파일이 복사될 대상 경로입니다(string 또는 pathlib.Path). 대상 경로는 파일 또는 디렉터리일 수 있습니다.dest에 파일 확장자(예:.txt)가 없으면 대상 경로는 디렉터리로 간주됩니다. 매개변수: -
use_base64: True이면 데이터는 base64로 인코딩됩니다. 그렇지 않으면 퍼센트 인코딩됩니다. 기본값은 True입니다. 반환값: 데이터 URL 문자열입니다.
class Conversation
continue_parent_trace는 이 대화가 생성하는 turn의 트레이스 격리 여부를 제어합니다. 기본값 False는 각 turn이 자체 OTel 트레이스를 시작한다는 의미입니다(독립형 Agents 탭 뷰에 적합한 선택). 애플리케이션에 에이전트 호출을 포함해야 하는 외부 트레이스(예: fastapi-instrumented request)가 있는 경우에는 True로 설정하세요.
Pydantic 필드:
conversation_id:<class 'str'>conversation_name:<class 'str'>agent_name:<class 'str'>model:<class 'str'>agent_id:<class 'str'>agent_description:<class 'str'>agent_version:<class 'str'>include_content:<class 'bool'>continue_parent_trace:<class 'bool'>attributes:dict[str, typing.Any]
방법 end
방법 model_post_init
방법 start_turn
get_current_turn()를 통해 turn이 표시되도록 _current_turn contextvar를 설정합니다. agent_name / model / agent_id / agent_description / agent_version는 비워 두면 각각 대화의 기본값을 사용하며, continue_parent_trace는 상속됩니다. 이들 값은 나중에 turn.record(...)를 통해 재정의할 수 있습니다.
system_instructions(에이전트의 system 프롬프트)는 turn의 invoke_agent span에 포함되며, start_llm과 마찬가지로 반환된 Turn에 대한 속성 부여를 통해 나중에 설정할 수도 있습니다.
class Dataset
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonerows:trace.table.Table | trace.vals.WeaveTable
방법 add_rows
rows: 데이터셋에 추가할 행입니다. 반환값: 업데이트된 데이터셋입니다.
클래스 메서드 convert_to_table
클래스 메서드 from_calls
클래스 메서드 from_hf
클래스 메서드 from_obj
클래스 메서드 from_pandas
방법 select
indices: 선택할 행을 지정하는 정수 인덱스의 이터러블입니다. 반환값: 선택한 행만 포함하는 새 데이터셋 객체입니다.
방법 to_hf
방법 to_pandas
class EasyPrompt
방법 __init__
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonedata:<class 'list'>config:<class 'dict'>requirements:<class 'dict'>
속성 as_str
속성 is_bound
속성 메시지
속성 플레이스홀더
속성 system_message
속성 system_prompt
속성 unbound_placeholders
방법 append
방법 as_dict
방법 as_pydantic_dict
방법 bind
방법 bind_rows
방법 config_table
방법 configure
방법 dump
방법 dump_file
방법 format
클래스 메서드 from_obj
클래스 메서드 load
클래스 방법 load_file
방법 messages_table
방법 print
방법 publish
방법 require
방법 run
방법 validate_requirement
방법 validate_requirements
방법 values_table
class Evaluation
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonedataset:<class 'dataset.dataset.Dataset'>scorers:list[typing.Annotated[trace.op_protocol.Op | flow.scorer.Scorer, BeforeValidator(func=<function cast_to_scorer at 0x7f136d430d60>, json_schema_input_type=PydanticUndefined)]] | Nonepreprocess_model_input:collections.abc.Callable[[dict], dict] | Nonetrials:<class 'int'>metadata:dict[str, typing.Any] | Noneevaluation_name:str | collections.abc.Callable[trace.call.Call, str] | None
방법 evaluate
클래스 방법 from_obj
방법 get_eval_results
방법 get_evaluate_calls
CallsIter: 평가 run을 나타내는 Call 객체의 이터레이터입니다.
ValueError: 평가에 ref가 없는 경우(아직 저장되거나 run되지 않은 경우)
방법 get_score_calls
dict[str, list[Call]]: 트레이스 ID를 scorer Call 객체 목록에 매핑한 딕셔너리입니다. 각 트레이스 ID는 하나의 evaluation run을 나타내며, 목록에는 해당 run 동안 실행된 모든 scorer call이 포함됩니다.
방법 get_scores
dict[str, dict[str, list[Any]]]: 다음과 같은 중첩 딕셔너리 구조입니다.- 첫 번째 수준의 키는 트레이스 ID(평가 run)입니다.
- 두 번째 수준의 키는 scorer 이름입니다.
- 값은 해당 run 및 scorer에 대한 scorer 출력 목록입니다.
방법 model_post_init
방법 predict_and_score
방법 summarize
class EvaluationLogger
log_prediction 방법으로 로깅되면 자동으로 시작되고, log_summary 방법이 호출되면 종료됩니다.
예측을 로깅할 때마다 ScoreLogger 객체가 반환됩니다. 이 객체를 사용해 해당 예측의 점수와 메타데이터를 로깅할 수 있습니다. 자세한 내용은 ScoreLogger 클래스를 참조하세요.
기본 사용법 - 입력과 출력을 직접 전달해 예측을 로깅합니다:
방법 __init__
속성 attributes
속성 ui_url
방법 fail
방법 finish
방법 log_example
inputs: 예측을 위한 입력 데이터output: 출력 값scores: scorer 이름을 점수 값에 매핑한 사전 예시:
방법 log_prediction
inputs: 예측용 입력 데이터output: 출력값입니다. 기본값은 None입니다. 나중에 pred.output으로 설정할 수 있습니다. 반환값: 점수를 로깅하고 필요에 따라 예측을 완료하는 데 사용하는 ScoreLogger입니다.
pred = ev.log_prediction({'q': ’…’}, output=“answer”) pred.log_score(“correctness”, 0.9) pred.finish()
with ev.log_prediction({'q': ’…’}) as pred: response = model(…) pred.output = response pred.log_score(“correctness”, 0.9) # 종료 시 finish()가 자동으로 호출됩니다
방법 log_summary
방법 set_view
weave.views 아래의 evaluation 기본 call 요약에 뷰를 연결합니다.
제공된 콘텐츠를 프로젝트의 객체로 저장하고, evaluation의 evaluate call에 대해 그 레퍼런스 URI를 summary.weave.views.<name> 아래에 기록합니다. 문자열 입력은 제공된 확장자 또는 MIME 유형을 사용해 Content.from_text로 텍스트 콘텐츠로 래핑됩니다.
인수:
name: 표시할 뷰 이름입니다.summary.weave.views아래에서 키로 사용됩니다.content: 직렬화할weave.Content인스턴스 또는 문자열입니다.extension: 문자열 콘텐츠 입력에 사용할 선택적 파일 확장자입니다.mimetype: 문자열 콘텐츠 입력에 사용할 선택적 MIME 유형입니다.metadata: 새로 생성된Content에 첨부할 선택적 메타데이터입니다.encoding: 문자열 콘텐츠 입력에 대한 텍스트 인코딩입니다. 반환값: 없음
import weave
ev = weave.EvaluationLogger() ev.set_view(“report”, ”# Report”, extension=“md”)
class File
방법 __init__
속성 filename
-
path: 파일 경로(string 또는 pathlib.Path) -
mimetype: 파일의 선택 사항인 MIME 유형 - 지정하지 않으면 확장자를 기준으로 추론됩니다 반환값: -
str: 디렉터리 경로를 제외한 파일 이름입니다.
방법 open
bool: 파일을 성공적으로 열었으면 True, 그렇지 않으면 False입니다.
방법 save
class LLM
-
dest: 파일이 복사될 대상 경로입니다(string또는pathlib.Path). 대상 경로는 파일이나 디렉터리일 수 있습니다. Pydantic 필드: -
model:<class 'str'> -
provider_name:<class 'str'> -
response_id:<class 'str'> -
response_model:<class 'str'> -
output_type:<class 'str'> -
system_instructions:list[str] -
usage:<class 'conversation.types.Usage'> -
reasoning:<class 'conversation.types.Reasoning'> -
finish_reasons:list[str] -
input_messages:list[conversation.types.Message] -
output_messages:list[conversation.types.Message] -
media_attachments:list[conversation.types.MediaAttachment] -
request_temperature:float | None -
request_max_tokens:int | None -
request_top_p:float | None -
request_frequency_penalty:float | None -
request_presence_penalty:float | None -
request_seed:int | None -
request_stop_sequences:list[str] -
request_choice_count:int | None -
started_at:datetime.datetime | None -
ended_at:datetime.datetime | None
방법 add_event
set_attributes로 이 데이터를 기록하세요. OpenTelemetry는 Span Event API(Span.add_event)를 단계적으로 사용 중단하고 있습니다. add_event는 계속 작동하며 기존 span 이벤트 데이터도 계속 유효합니다. 자세한 내용은 https://opentelemetry.io/blog/2026/deprecating-span-events/를 참조하세요.
Content 객체를 생성하고, 이를 게시해 weave:// ref를 얻은 뒤 해당 ref만 저장합니다. content, uri 또는 file_id 중 정확히 하나만 제공해야 합니다.
게시 작업(미디어 업로드)은 전용 백그라운드 스레드에서 실행되므로 호출자를 차단하지 않고 call이 즉시 반환됩니다. 각 첨부마다 스레드 하나가 디스패치되므로 여러 업로드가 병렬로 진행됩니다. 플레이스홀더 MediaAttachment는 동기적으로 추가되며, 업로드가 완료되면 해당 ref가 채워집니다. span이 emit되기 전에 ref가 채워지는 것은 보장됩니다(build 경로는 _await_uploads를 통해 진행 중인 업로드를 기다립니다).
방법 attach_media_url
attach_media보다 더 편리합니다. data: URL은 바이트로 파싱되어 게시되며, 일반 URI는 가져와서 게시됩니다. 빈 URL은 무시됩니다. 체이닝할 수 있도록 self를 반환합니다.
방법 end
방법 model_post_init
방법 output
방법 record
input_messages, output_messages, usage, response_id 등)에 값을 설정해 채팅 span을 구성합니다. record(...)는 이를 하나의 키워드 Call로 묶어 기록하는 코드를 간결하게 유지합니다.
명시적으로 전달된 필드(non-None)만 적용되며, 기존 값은 유지됩니다. reasoning은 Reasoning 인스턴스 또는 일반 string을 받을 수 있으며(자동으로 래핑됨), 체이닝할 수 있도록 self를 반환합니다.
방법 set_attributes
dict를 전달하세요. 키가 하나만 있는 경우에는 span.set_attributes({"weave.tag": "value"})를 사용합니다. OTel의 Span.set_attributes와 동일한 방식입니다.
span 시작과 종료 사이, 즉 with 블록 내부에서 호출해야 합니다. 이 구간을 벗어나 호출하면 아무 작업도 수행하지 않으며 경고를 기록합니다. batch ingest의 경우 객체에 선언된 필드를 직접 채운 뒤 log_turn / log_conversation에 전달하세요.
방법 think
class LogResult
log_* Call 결과입니다.
Pydantic 필드:
conversation_id:<class 'str'>trace_ids:list[str]root_span_ids:list[str]span_count:<class 'int'>
class Markdown
markup(str): Markdown이 포함된 문자열입니다.code_theme(str, optional): 코드 블록에 사용할 Pygments 테마입니다. 기본값은 “monokai”입니다. 코드 테마는 https://pygments.org/styles/ 를 참조하세요.justify(JustifyMethod, optional): 단락의 정렬 값입니다. 기본값은 None입니다.style(Union[str, Style], optional): Markdown에 적용할 선택적 스타일입니다.hyperlinks(bool, optional): 하이퍼링크를 활성화합니다. 기본값은True입니다.
방법 __init__
class MediaAttachment
weave:// 콘텐츠 ref URI를 포함합니다. 원시 바이트, data-URL, 일반 HTTP URI는 여기에 저장되기 전에 LLM.attach_media에 의해 게시된 Content 객체로 변환됩니다.
-
inline_code_lexer: (str, optional): 인라인 코드 강조가 활성화된 경우 사용할 렉서입니다. 기본값은 None입니다. -
inline_code_theme: (Optional[str], optional): 인라인 코드 강조에 사용할 Pygments 테마이며, 강조를 사용하지 않으려면 None으로 설정합니다. 기본값은 None입니다. Pydantic 필드: -
ref:<class 'str'> -
modality:<class 'str'> -
mime_type:<class 'str'>
class Message
-
Flat(이전 버전과의 호환성을 위한 방식으로, 일반 텍스트에 사용하기 편리):
Message(role="assistant", content="Hi there") -
명시적 parts(더 풍부한 표현 지원 — 도구 Call, 추론+텍스트 혼합, 인라인 미디어):
Message(role="assistant", parts=[TextPart(content="Let me check"), ToolCallPart(id="c1", name="get_weather", arguments='{...}')])
parts가 비어 있지 않으면 이것이 표준 표현입니다. 비어 있으면 serializer가 flat 필드에서 단일 TextPart(또는 role="tool"인 경우 ToolCallResponsePart)를 생성합니다.
Pydantic 필드:
role:typing.Literal['user', 'assistant', 'system', 'tool']content:<class 'str'>tool_call_id:<class 'str'>tool_name:<class 'str'>parts:list[typing.Annotated[conversation.types.TextPart | conversation.types.ReasoningPart | conversation.types.ToolCallPart | conversation.types.ToolCallResponsePart | conversation.types.BlobPart | conversation.types.UriPart | conversation.types.FilePart, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]
클래스 메서드 assistant
tool_calls를 전달하세요. 둘 다 있으면 텍스트가 앞부분의 TextPart로 출력되고, 이어서 각 ToolCallPart가 따라와 채팅 뷰에 인라인으로 렌더링됩니다.
클래스 메서드 system
클래스 메서드 tool_result
output은 string, dict, list, scalar 또는 None일 수 있으며, 내부적으로 ToolCallResponsePart는 string이 아닌 값을 JSON으로 인코딩합니다.
클래스 메서드 user
class MessagesPrompt
방법 __init__
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonemessages:list[dict]
방법 format
방법 format_message
클래스 메서드 from_obj
class Model
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | None
방법 get_infer_method
class Monitor
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonesampling_rate:<class 'float'>scorers:list[flow.scorer.Scorer]op_names:list[typing.Union[typing.Literal['genai.turn_ended'], str]]query:trace_server.interface.query.Query | Noneis_traced:<class 'bool'>active:<class 'bool'>scorer_debounce_config:flow.monitor.ScorerDebounceConfig | None
방법 activate
방법 deactivate
클래스 메서드 from_obj
방법 model_post_init
op_names를 정규화합니다.
Publishing에는 객체별 훅이 없으므로, weave.publish(monitor)를 단독으로 호출하는 경우(activate() 없음)까지 처리할 수 있도록 여기에서 짧은 이름을 확장합니다. publish를 수행하는 사용자는 일반적으로 weave.init를 이미 호출했으므로 monitor가 생성될 때 클라이언트가 설정되어 있습니다.
단위 테스트, 검사, 워커에서 저장된 monitor를 역직렬화하는 경우처럼 클라이언트 없이 생성하는 사용 사례도 여럿 있습니다. get_weave_client()에 가드가 있으므로 클라이언트 없이도 생성할 수 있습니다. 이 경우에는 정규화가 수행되지 않지만, 저장된 monitor에는 이미 전체 ref가 들어 있으므로 괜찮습니다.
SDK를 사용할 때 정규화 없이 monitor가 생성될 수 있는 예외적인 경우가 하나 있습니다. 사용자가 monitor를 생성한 다음 weave.init를 호출하고, 그 후 이를 publish하는 경우입니다. 이런 사용 사례에서는 activate() 또는 deactivate()를 호출하는 것이 우회 방법이 될 수 있습니다.
class Object
name(str | None): 객체를 사람이 읽기 쉬운 형태로 식별하는 이름입니다.description(str | None): 객체가 나타내는 내용을 설명합니다.ref(ObjectRef | None): Weave 시스템 내 객체에 대한 참조입니다.
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | None
클래스 메서드 from_uri
uri(str): 객체를 가리키는 Weave URI입니다.objectify(bool): 결과를 객체로 변환할지 여부입니다. 기본값은 True입니다.
Self: URI로부터 생성된 클래스 인스턴스입니다.
NotImplementedError: 클래스가 역직렬화에 필요한 메서드를 구현하지 않은 경우 발생합니다.
클래스 메서드 handle_relocatable_object
v(Any): 검증할 값입니다.handler(ValidatorFunctionWrapHandler): 표준 pydantic 검증 핸들러입니다.info(ValidationInfo): 검증 컨텍스트 정보입니다.
Any: 검증된 객체 인스턴스입니다.
ObjectRef를 전달하는 경우
WeaveObject가 전달된 경우
class ObjectRef
방법 __init__
속성 digest
속성 extra
속성 is_digest_resolved
방법 as_param_dict
방법 delete
방법 get
방법 is_descended_from
방법 maybe_parse_uri
방법 parse_uri
방법 with_attr
방법 with_extra
방법 with_index
방법 with_item
방법 with_key
클래스 Prompt
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | None
방법 format
클래스 SavedView
방법 __init__
속성 entity
속성 레이블
속성 프로젝트
속성 view_type
방법 add_column
방법 add_columns
방법 add_filter
방법 add_sort
방법 column_index
방법 filter_op
방법 get_calls
방법 get_known_columns
방법 get_table_columns
방법 hide_column
방법 insert_column
클래스 메서드 load
방법 page_size
방법 pin_column_left
방법 pin_column_right
방법 remove_column
방법 remove_columns
방법 remove_filter
방법 remove_filters
방법 rename
방법 rename_column
방법 save
방법 set_columns
방법 show_column
방법 sort_by
방법 to_grid
방법 to_rich_table_str
방법 ui_url
방법 unpin_column
class Scorer
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonecolumn_map:dict[str, str] | None
속성 display_name
클래스 메서드 from_obj
방법 model_post_init
방법 score
방법 summarize
클래스 Session
weave.Conversation의 사용 중단된 별칭입니다.
이전 session_id / session_name 생성자 필드를 허용하고, 이를 conversation_id / conversation_name에 프록시되는 읽기/쓰기 속성으로도 제공합니다. 기존 Session에서는 이것들이 모델 필드였기 때문에, s.session_id를 조회하거나 s.session_id에 값을 부여하는 기존 코드는 계속 작동합니다.
방법 __init__
conversation_id:<class 'str'>conversation_name:<class 'str'>agent_name:<class 'str'>model:<class 'str'>agent_id:<class 'str'>agent_description:<class 'str'>agent_version:<class 'str'>include_content:<class 'bool'>continue_parent_trace:<class 'bool'>attributes:dict[str, typing.Any]
속성 session_id
conversation_id의 사용 중단된 별칭입니다.
속성 session_name
conversation_name의 사용 중단 별칭입니다.
클래스 StringPrompt
방법 __init__
name:str | Nonedescription:str | Noneref:trace.refs.ObjectRef | Nonecontent:<class 'str'>
방법 format
클래스 메서드 from_obj
클래스 SubAgent
invoke_agent OTel span에 해당합니다.
Pydantic 필드:
name:<class 'str'>model:<class 'str'>agent_id:<class 'str'>agent_description:<class 'str'>agent_version:<class 'str'>system_instructions:list[str]started_at:datetime.datetime | Noneended_at:datetime.datetime | None
방법 add_event
set_attributes로 기록하세요. OpenTelemetry는 Span Event API(Span.add_event)를 단계적으로 사용 중단하고 있습니다. add_event는 계속 작동하며 기존 span event 데이터도 여전히 유효합니다. https://opentelemetry.io/blog/2026/deprecating-span-events/를 참조하세요.
방법 llm
_current_llm contextvar를 설정하여 컨텍스트 관리자를 사용하든 사용하지 않든 get_current_llm()를 통해 LLM에 접근할 수 있도록 합니다.
방법 record
system_instructions, agent_id, …)를 하나의 키워드 호출로 통합합니다. 명시적으로 전달된 (None이 아닌) 필드만 적용되며, 기존 값은 유지됩니다. 체이닝할 수 있도록 self를 반환합니다. Turn.record / LLM.record와 동일한 방식입니다.
참고: 스트리밍(with) 경로에서는 하위 에이전트 span의 이름이 __enter__ 시점에 name으로 정해지므로, span 이름에 이를 반영해야 한다면 record가 아니라 start_subagent / turn.subagent를 통해 name을 설정하세요. record는 여전히 gen_ai.agent.name 속성을 업데이트합니다.
방법 set_attributes
span.set_attributes({"weave.tag": "value"})를 사용하세요. OTel의 Span.set_attributes와 동일한 방식입니다.
span 시작과 종료 사이, 즉 with 블록 내부에서 호출해야 합니다. 이 범위를 벗어나 호출하면 아무 작업도 수행되지 않으며 경고 로그가 기록됩니다. batch ingest의 경우 객체에 선언된 필드를 직접 채운 뒤 log_turn / log_conversation에 전달하세요.
방법 tool
클래스 Table
방법 __init__
속성 행
방법 append
방법 pop
class ContextAwareThread
threading.Thread의 대체 구현입니다. Weave는 특정 contextvars가 설정되어 있어야 하지만(call_context.py 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않으므로 Call 컨텍스트가 손실될 수 있습니다 — 바람직하지 않습니다! 이 클래스는 contextvars 복사를 자동화하므로, 이 스레드를 사용하면 사용자가 기대하는 대로 “그냥 동작합니다”.
이 클래스를 사용하지 않고도, 대신 다음과 같이 작성하면 같은 효과를 얻을 수 있습니다:
방법 __init__
속성 daemon
속성 ident
None입니다.
이는 0이 아닌 정수입니다. get_ident() 함수를 참조하세요. 스레드가 종료된 후 다른 스레드가 생성되면 스레드 식별자가 재사용될 수 있습니다. 이 식별자는 스레드가 종료된 후에도 계속 사용할 수 있습니다.
속성 name
속성 native_id
방법 run
class ThreadContext
방법 __init__
속성 thread_id
thread_id: 이 컨텍스트의 스레드 식별자입니다. 비활성화된 경우 None입니다. 반환값: 스레드 식별자입니다. 스레드 추적이 비활성화된 경우 None입니다.
속성 turn_id
class ContextAwareThreadPoolExecutor
call_context.py 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않으므로 Call 컨텍스트가 손실될 수 있습니다 — 바람직하지 않습니다! 이 클래스는 contextvar 복사를 자동화하므로, 이 executor를 사용하면 사용자가 기대하는 대로 “그냥 동작합니다”.
이 클래스를 사용하지 않고도 대신 다음과 같이 작성하면 같은 효과를 얻을 수 있습니다:
방법 __init__
방법 map
방법 submit
class Tool
execute_tool OTel span에 매핑됩니다.
arguments 및 result는 JSONString annotation을 사용합니다. 호출자는 dict / list / scalar를 부여할 수 있으며, SDK는 생성 시점이나 값 부여 시점에 이를 JSON으로 인코딩합니다. 저장되는 값은 항상 string이며, GenAI semconv의 wire format과 일치합니다.
Pydantic 필드:
name:<class 'str'>arguments:<class 'str'>result:<class 'str'>tool_call_id:<class 'str'>tool_type:<class 'str'>tool_description:<class 'str'>tool_definitions:<class 'str'>duration_ms:<class 'int'>started_at:datetime.datetime | Noneended_at:datetime.datetime | None
방법 add_event
set_attributes로 기록하세요. OpenTelemetry는 Span Event API(Span.add_event)를 단계적으로 폐지하고 있습니다. add_event는 여전히 작동하며 기존 span-event 데이터도 계속 유효합니다. 자세한 내용은 https://opentelemetry.io/blog/2026/deprecating-span-events/를 참조하세요.
방법 set_attributes
span.set_attributes({"weave.tag": "value"})를 사용하세요. OTel의 Span.set_attributes와 동일한 방식입니다.
span 시작과 종료 사이, 즉 with 블록 내부에서 호출해야 합니다. 이 범위를 벗어나 호출하면 아무 작업도 수행되지 않으며 경고 로그가 기록됩니다. batch ingest의 경우 객체에 선언된 필드를 직접 채운 뒤 log_turn / log_conversation에 전달하세요.
class Turn
invoke_agent OTel span에 매핑됩니다.
기본적으로 각 턴은 자체 OTel 트레이스를 시작하므로(continue_parent_trace=False) Agents 탭에는 턴마다 하나의 트레이스가 표시됩니다. 외부 트레이스가 이미 활성화되어 있고 에이전트 호출을 그 안에 중첩하려면 Conversation(또는 Turn에 직접)에서 continue_parent_trace=True를 설정하세요. 예를 들어 fastapi-instrumented request 내부에서 사용하는 경우입니다.
Pydantic 필드:
agent_name:<class 'str'>model:<class 'str'>agent_id:<class 'str'>agent_description:<class 'str'>agent_version:<class 'str'>system_instructions:list[str]messages:list[conversation.types.Message]spans:list[conversation.conversation.LLM | conversation.conversation.Tool | conversation.conversation.SubAgent]continue_parent_trace:<class 'bool'>started_at:datetime.datetime | Noneended_at:datetime.datetime | None
방법 add_event
set_attributes로 기록하세요. OpenTelemetry는 Span Event API(Span.add_event)를 단계적으로 사용 중단하고 있습니다. add_event는 계속 작동하며 기존 span-event 데이터도 계속 유효합니다. 자세한 내용은 https://opentelemetry.io/blog/2026/deprecating-span-events/를 확인하세요.
방법 llm
get_current_llm()을 통해 LLM을 확인할 수 있도록 _current_llm contextvar를 설정합니다.
방법 model_post_init
방법 record
system_instructions, agent_id, …)을 하나의 키워드 Call로 묶습니다. 명시적으로 전달된(None이 아닌) 필드만 적용되며, 기존 값은 유지됩니다. messages는 턴의 기존 메시지를 대체합니다(Turn.user(...)는 단일 메시지를 추가함). 체이닝할 수 있도록 self를 반환합니다. LLM.record를 따릅니다.
참고: 스트리밍(with) 경로에서는 턴 span의 이름이 __enter__ 시점의 agent_name을 기준으로 정해지므로, span 이름에 이를 반영해야 한다면 record가 아니라 start_turn을 통해 agent_name을 설정하세요. record는 여전히 gen_ai.agent.name 속성을 업데이트합니다.
방법 set_attributes
dict를 전달하세요. 키가 하나만 있는 경우에는 span.set_attributes({"weave.tag": "value"})를 사용합니다. OTel의 Span.set_attributes와 동일한 방식입니다.
span 시작과 종료 사이, 즉 with 블록 내부에서 호출해야 합니다. 이 구간을 벗어나 호출하면 아무 작업도 수행하지 않으며 경고를 기록합니다. batch ingest의 경우 객체에 선언된 필드를 직접 채운 뒤 log_turn / log_conversation에 전달하세요.
방법 subagent
방법 도구
execute_tool span, 이 턴의 하위 span).
방법 user
class Usage
input_tokens:<class 'int'>output_tokens:<class 'int'>reasoning_tokens:<class 'int'>cache_creation_input_tokens:<class 'int'>cache_read_input_tokens:<class 'int'>
함수 as_op
-
obj_ref: 객체 버전에 대한 레퍼런스로, weave.publish()가 반환하는 ObjectRef 또는 weave /// URI 문자열입니다. -
tags: 추가할 태그 문자열 목록입니다. 인수: -
fn: @weave.op로 데코레이션된 함수입니다. 반환값: 함수의 Op입니다.
함수 attributes
함수 end_conversation
함수 end_llm
함수 end_session
weave.end_conversation의 사용 중단 별칭입니다.
함수 end_turn
함수 finish
weave.op 데코레이터가 적용된 함수의 call이 더 이상 로깅되지 않습니다. 로깅을 재개하려면 weave.init()를 다시 실행해야 합니다.
함수 get
uri: 완전 수식된 weave ref URI입니다. 반환값: 객체입니다.
함수 get_aliases
obj_ref: ObjectRef 또는 weave /// URI 문자열로 지정한 객체 버전에 대한 레퍼런스입니다. 반환값: 별칭 문자열 목록입니다.
함수 get_client
함수 get_current_call
반환된 Call의attributes딕셔너리는 call이 시작되면 변경할 수 없게 됩니다. Op를 호출하기 전에 :func:weave.attributes를 사용해 call 메타데이터를 설정하세요.summary필드는 Op가 실행되는 동안 업데이트될 수 있으며, call이 완료되면 계산된 summary 정보와 병합됩니다.
함수 get_current_conversation
함수 get_current_llm
함수 get_current_session
weave.get_current_conversation의 사용 중단 별칭입니다.
함수 get_current_turn
obj_ref: 객체 버전에 대한 레퍼런스입니다.ObjectRef또는 weave /// URI 문자열일 수 있습니다. 반환값: 태그 문자열의 목록입니다.
obj_ref: 객체 버전을 가리키는 레퍼런스입니다.ObjectRef또는weave /// URI문자열일 수 있습니다. 반환값:(태그, 별칭)튜플입니다. 각 항목은 문자열 목록입니다.
함수 init
init의 반환값을 따로 저장해 둘 필요가 없습니다.
init 이후에는 weave.op으로 데코레이팅된 함수의 call이 지정된 프로젝트에 로깅됩니다.
인수:
참고: 클라이언트 수준 후처리는 각 op의 자체 후처리 이후에 실행됩니다. 순서는 항상 다음과 같습니다. 1. op별 후처리 2. 클라이언트 수준 후처리
project_name: 로그를 기록할 Weights & Biases 팀과 프로젝트 이름입니다. 팀을 지정하지 않으면 기본 엔터티가 사용됩니다. 기본 엔터티를 확인하거나 업데이트하려면 W&B Models 문서의 User Settings를 참고하세요.settings: 전반적인 Weave 클라이언트 설정입니다.UserSettings인스턴스이거나, 다음 키 중 원하는 항목을 포함하는 dict일 수 있습니다(모두 선택 사항). 모든 설정은 접두사 WEAVE_를 사용하는 환경 변수를 통해서도 구성할 수 있습니다(예: WEAVE_DISABLED=true). 사용 가능한 설정: -disabled(bool): 모든 함수의 트레이스를 비활성화합니다. 기본값:False-print_call_link(bool): ops에 대한 Weave UI 링크를 터미널에 출력합니다. 기본값:True-log_level(str): 로그로 남길 정보 유형을 설정합니다(DEBUG,INFO,WARNING,ERROR,CRITICAL). 기본값:INFO-display_viewer(str): Weave가 콘솔에 객체를 표시하는 방식을 제어합니다(auto,rich,print). 기본값:auto-capture_code(bool): 트레이스된 ops의 코드를 Weave 프로젝트에 캡처합니다. 기본값:True-implicitly_patch_integrations(bool): 지원되는 라이브러리에 자동으로 패치를 적용합니다. 기본값:True-redact_pii(bool): 이메일, 전화번호, 신용카드 같은 민감한 정보를 모든 트레이스 데이터에서 스캔한 뒤, 서버로 전송하기 전에 플레이스홀더 값으로 대체합니다.presidio-analyzer및presidio-anonymizer패키지가 필요합니다.Default:False-redact_pii_fields(list[str]):redact_pii가 True일 때 마스킹할 PII 엔터티 유형을 지정합니다. 비어 있으면 Presidio의 기본 집합을 사용합니다. 예시 [‘EMAIL’,‘PHONE_NUMBER’,‘CREDIT_CARD’,‘US_SSN’]. 전체 목록은 https://microsoft.github.io/presidio/supported_entities/에서 확인하세요.Default:[]-redact_pii_exclude_fields(list[str]): 제외할 PII 엔터티 유형입니다. Default:[]-capture_client_info(bool): Python/SDK 버전 정보를 캡처합니다. Default:True-capture_system_info(bool): OS 정보를 캡처합니다. Default:True-client_parallelism(int): 백그라운드 작업용 워커 수입니다. Default:auto-use_server_cache(bool): 서버 응답의 로컬 디스크 캐싱을 활성화합니다. -server_cache_size_limit(int): 바이트 단위 캐시 크기 한도입니다. Default:1_000_000_000-server_cache_dir(str): 서버 캐시 디렉터리입니다. Default:temporary-scorers_dir(str): Scorer 모델 checkpoint 디렉터리입니다. Default:~/.cache/wandb/weave-scorers-max_calls_queue_size(int): 최대 큐 크기입니다(0 = 무제한). Default:100_000-retry_max_interval(float): 초 단위 최대 재시도 간격입니다. Default:300-retry_max_attempts(int): 최대 재시도 횟수입니다. Default:3-enable_disk_fallback(bool): 누락된 항목을 디스크에 기록합니다. Default:True-use_parallel_table_upload(bool): 큰 테이블에 대해 병렬 청크 업로드를 활성화합니다. False이면 테이블은 더 작은 청크로 순차적으로 업로드됩니다.기본값:True-http_timeout(float): HTTP 요청이 완료될 때까지 기다리는 최대 시간(초)입니다. 여기에는 연결 시간, 데이터 전송 시간, 서버 처리 시간이 포함됩니다. 네트워크가 느리거나 큰 페이로드를 처리하는 경우 값을 늘리세요.기본값:30.0-use_stainless_server(bool): 더 나은 타입 안전성, 자동 재시도, 향상된 오류 처리를 제공하는 Stainless에서 생성한 HTTP 클라이언트를 사용합니다. 이는 실험적 기능이며 향후 버전에서 기본값이 될 수 있습니다.기본값:False-use_calls_complete(bool): 별도의 시작/종료 Request 대신, 완료된 Call 데이터(시작 및 종료)를 하나의 Request로 일괄 처리하는 최적화된 쓰기 경로를 사용합니다. 이렇게 하면 서버 부하를 줄이고 성능을 개선할 수 있으며, 특히 수명이 짧은 Ops에서 효과적입니다.기본값:True-use_otel_v2: (bool): OTel을 지원하는 인테그레이션을 해당 OTel 변형을 통해 처리합니다.기본값:Trueautopatch_settings: (사용 중단) autopatch 인테그레이션용 설정입니다. 대신 명시적으로 패칭하세요.postprocess_inputs: 이 클라이언트에서 트레이스되는 모든 op의 입력에 적용되는 함수입니다.postprocess_output: 이 클라이언트에서 트레이스한 모든 op의 출력에 적용되는 함수입니다.attributes: 이 클라이언트에서 생성되는 모든 트레이스에 적용되는 속성 딕셔너리입니다. 반환값: Weave 클라이언트입니다.
함수 link_prompt_to_registry
-
prompt: 게시된 prompt,ObjectRef, 또는 완전 수식된 weave ///… URI string입니다. -
target_path:<registry_project>/<portfolio_name>형식의 레지스트리 대상 경로입니다. 예:wandb-registry-prompts/my-prompt-collection. -
aliases: 생성된 레지스트리 버전에 연결할 선택 사항인 별칭입니다. 반환값: -
LinkAssetToRegistryRes: registry-link 엔드포인트에서 파싱한 응답입니다.
함수 list_aliases
함수 log_call
op(str): 로깅할 오퍼레이션 이름입니다. 이 값은 call의 op_name으로 사용됩니다. 익명 오퍼레이션(게시된 ops를 가리키지 않는 문자열)도 지원됩니다.inputs(dict[str, Any]): 오퍼레이션의 입력 매개변수를 담은 딕셔너리입니다.output(Any): 오퍼레이션의 출력 또는 결과입니다.parent(Call | None): 이 call을 그 아래에 중첩할 상위 call(선택 사항)입니다. 제공하지 않으면 이 call은 루트 수준 call이 됩니다(또는 현재 call 컨텍스트가 있으면 그 아래에 중첩됩니다). 기본값은 None입니다.attributes(dict[str, Any] | None): call에 첨부할 메타데이터(선택 사항)입니다. 이 값은 call이 생성되면 고정됩니다. 기본값은 None입니다.display_name(str | Callable[[Call], str] | None): UI에서 call에 표시할 이름(선택 사항)입니다. 문자열이거나, call을 받아 문자열을 반환하는 callable일 수 있습니다. 기본값은 None입니다.use_stack(bool): call을 런타임 스택에 푸시할지 여부입니다. True이면 call을 call 컨텍스트에서 사용할 수 있으며 weave.require_current_call()을 통해 접근할 수 있습니다. False이면 call은 로깅되지만 call 스택에는 추가되지 않습니다. 기본값은 True입니다.exception(BaseException | None): 오퍼레이션이 실패했을 때 로깅할 예외(선택 사항)입니다. 기본값은 None입니다.
Call: 전체 트레이스 정보를 포함하는, 생성 및 완료된 Call 객체입니다.
.spans 속성은 해당 Turn의 하위 항목을 제공합니다. conversation_id가 비어 있으면 자동으로 생성됩니다. 기본적으로 각 턴에는 자체 OTel 트레이스가 할당됩니다. agent_name / model / agent_id / agent_description / agent_version은 대화 수준 기본값입니다. Turn 자체 값이 우선하며, Turn에서 해당 값을 비워 둔 경우에만 대화 값이 채워집니다. 대화의 continue_parent_trace는 모든 턴에 적용됩니다(개별 Turn의 continue_parent_trace는 여기서 의도적으로 우선순위가 낮아집니다).
attributes는 내보내는 모든 span에 적용됩니다. 맞춤형 비-semconv 키를 사용하세요. span 자체의 gen_ai.* / weave.* 속성과 충돌하는 키는 지원되지 않습니다(어느 값이 우선하는지는 경로에 따라 달라집니다).
function log_session
weave.log_conversation의 사용 중단된 별칭입니다.
session_id / session_name은 각각 conversation_id / conversation_name에 매핑됩니다.
함수 log_turn
started_at / ended_at가 설정되어 있어야 하며, 내보내는 OTel span의 타임스탬프는 이 필드에서 가져옵니다. 턴이 자체 값을 제공하지 않으면 가장 이른/가장 늦은 하위 span의 타임스탬프를 사용하고, 그것도 없으면 now()를 사용합니다. agent_id / agent_description / agent_version은 스트리밍 경로와 동일하게 동작합니다.
attributes는 내보내는 모든 span에 적용되며, 스트리밍 경로에서는 대신 활성 대화에서 이를 읽습니다. 맞춤형 비-semconv 키를 사용하세요. span 자체의 gen_ai.* / weave.* 속성과 충돌하는 키는 지원되지 않습니다(어느 값이 우선하는지는 경로에 따라 달라집니다).
함수 op
함수 otel_traces_endpoint
func: 데코레이트할 함수입니다.name: op의 맞춤형 이름입니다. 기본값은 함수 이름입니다.call_display_name: calls에 표시할 이름으로, 문자열 또는 callable일 수 있습니다.postprocess_inputs: logging하기 전에 입력을 변환하는 함수입니다.postprocess_output: logging하기 전에 출력을 변환하는 함수입니다.tracing_sample_rate: 트레이스할 calls의 비율입니다(0.0~1.0).enable_code_capture: 이 op의 소스 코드를 캡처할지 여부입니다.accumulator: 스트리밍 op의 결과를 누적하는 함수입니다.attributes: 이 op가 생성하는 모든 call에 가장 낮은 우선순위로 병합되는 기본 속성입니다.weave.attributes()컨텍스트와 명시적인 호출별 속성은 키 충돌 시 이를 재정의합니다. 예약된 “weave” 키는 여기서 설정할 수 없습니다.eager_call_start: True이면 call 시작이 배치 처리되지 않고 즉시 전송됩니다. UI에서 즉시 확인되어야 하는 evaluation 같은 장기 실행 오퍼레이션에 유용합니다. 인수:
함수 publish
-
base_url: 트레이스 서버의 기본 URL입니다. 기본값은weave_trace_server_url()입니다. 인수: -
obj: 저장하고 버전 관리할 객체입니다. -
name: 객체를 저장할 이름입니다. -
tags: 게시된 객체 버전에 추가할 선택적 태그 목록입니다. -
aliases: 게시된 객체 버전에 설정할 선택적 별칭 목록입니다. 반환값: 저장된 객체를 가리키는 Weave Ref입니다.
함수 ref
location: Weave Ref URI이거나,weave.init()가 호출된 경우name:version또는name입니다. 버전이 지정되지 않으면latest를 사용합니다. 반환값: 객체를 가리키는 Weave Ref입니다.
함수 remove_aliases
obj_ref: 객체를 가리키는 레퍼런스로, ObjectRef 또는 weave /// URI 문자열일 수 있습니다.alias: 제거할 별칭 이름 또는 별칭 이름 목록입니다. 인수:
함수 require_current_call
weave.init가 반환한 WeaveClient의 get_call 방법을 사용해 Call 객체를 조회할 수 있습니다.
call 방법을 사용할 수 있습니다. 예를 들면 다음과 같습니다:
obj_ref: 객체 버전을 가리키는 레퍼런스로, ObjectRef 또는 weave /// URI 문자열입니다.tags: 제거할 태그 문자열의 목록입니다. 반환값: 현재 실행 중인 Op의 Call 객체
NoCurrentCallError: 추적이 초기화되지 않았거나 이 메서드가 Op 외부에서 호출된 경우.
함수 set_aliases
함수 set_view
_weave.views.<name>에 맞춤형 뷰를 추가합니다.
-
obj_ref: 객체 버전에 대한 레퍼런스입니다.ObjectRef또는 weave /// URI 문자열일 수 있습니다. -
alias: 설정할 별칭 이름 또는 별칭 이름 목록입니다(예: “production”). 인수: -
name: 뷰 이름입니다(summary._weave.views아래의 키). -
content:weave.Content인스턴스 또는 일반 문자열입니다. 문자열은 제공된 확장자 또는 MIME 유형을 사용해Content.from_text를 통해 래핑됩니다. -
extension:content가 문자열일 때 사용할 선택적 파일 확장자입니다. -
mimetype:content가 문자열일 때 사용할 선택적 MIME 유형입니다. -
metadata: 텍스트에서Content를 생성할 때 첨부할 선택적 메타데이터입니다. -
encoding: 텍스트에서Content를 생성할 때 적용할 텍스트 인코딩입니다. 반환값: 없음
import weave
weave.init(“proj”) @weave.op … def foo(): … weave.set_view(“readme”, ”# Hello”, extension=“md”) … return 1 foo()
함수 start_conversation
contextvar를 설정합니다.
attributes는 이 대화에서 생성되는 모든 span에 기록됩니다(예: weave.integration.*와 같은 인테그레이션 ID). 맞춤형 비-semconv 키를 사용하세요. semantic-convention 필드는 유형 지정된 매개변수(conversation_name, model, …)를 통해 설정합니다. span 자체의 gen_ai.* / weave.* 속성과 충돌하는 키는 지원되지 않습니다. 이 경우 어떤 값이 우선 적용될지는 경로에 따라 달라집니다(스트리밍과 log_turn의 차이).
함수 start_llm
provider_name을 명시적으로 전달하세요. SDK는 모델 식별자에서 이를 추론하지 않습니다. 접두사 기반 추측은 사용자 파인튜닝을 잘못된 대상으로 귀속시키고(예: 이름이 text-...인 모델), 나중에 수정 비용이 큰 가정을 향후 모델 이름에 대해 telemetry에 내장하게 됩니다.
함수 start_session
weave.start_conversation의 사용 중단 별칭입니다.
session_id / session_name는 conversation_id / conversation_name에 대응합니다.
함수 start_subagent
start_tool과 같으며, 부모-자식 전파는 OTel 컨텍스트가 처리하므로 명시적으로 위임할 필요가 없습니다.
함수 start_tool
함수 start_turn
get_current_turn()은 None을 반환합니다. contextvar 기반으로 모듈 간 액세스가 필요하다면 대신 conversation.start_turn()을 사용하세요.
함수 thread
thread_id를 설정하기 위한 컨텍스트 관리자입니다.
예시:
-
thread_id: 이 컨텍스트에서 call과 연결할 스레드 식별자입니다. 제공되지 않으면 UUID v7이 자동 생성됩니다. None이면 스레드 추적이 비활성화됩니다. 반환값: -
ThreadContext:thread_id와 현재turn_id에 접근할 수 있는 객체입니다.