File size: 3,819 Bytes
c2ea5ed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
from datetime import datetime
from decimal import Decimal
from typing import Any, Dict, List, Optional, Union
from uuid import UUID

from pydantic import BaseModel


class LangSmithEvent(BaseModel):
    name: str
    time: Union[str, datetime]


class LangSmithRun(BaseModel):
    id: Union[str, UUID]
    name: str
    start_time: Optional[Union[str, datetime]] = None
    run_type: str
    end_time: Optional[Union[str, datetime]] = None
    extra: Optional[Dict] = None
    error: Optional[str] = None
    serialized: Optional[Union[str, Dict]] = None
    events: Optional[List[Union[LangSmithEvent, Dict]]] = []
    inputs: Dict = {}
    outputs: Optional[Dict] = None
    parent_run_id: Optional[Union[str, UUID]] = None
    tags: Optional[List[str]] = None
    attachments: Optional[Dict] = None
    session_id: Optional[Union[str, UUID]] = None
    child_run_ids: Optional[List[Union[str, UUID]]] = None
    child_runs: Optional[List['LangSmithRun']] = None
    feedback_stats: Optional[Dict] = None
    app_path: Optional[str] = None # prefix can be identifier
    manifest_id: Optional[Union[str, UUID]] = None
    status: Optional[str] = None
    prompt_tokens: Optional[int] = None
    completion_tokens: Optional[int] = None
    total_tokens: Optional[int] = None
    first_token_time: Optional[Union[str, datetime]] = None
    total_cost: Optional[Union[str, Decimal]] = None
    prompt_cost: Optional[Union[str, Decimal]] = None
    completion_cost: Optional[Union[str, Decimal]] = None
    parent_run_ids: Optional[List[Union[str, UUID]]] = None
    trace_id: Optional[Union[str, UUID]] = None
    dotted_order: Optional[str] = None
    in_dataset: Optional[bool] = None
    depth: Optional[int] = None

class LangSmithTrace(BaseModel):
    trace_id: str
    trace_name: str
    project_name: str
    export_time: str
    total_runs: int
    runs: List[LangSmithRun]
    run_depth: Optional[int] = None

class LangFuseObservation(BaseModel):
    id: str
    traceId: str
    type: str
    name: str
    startTime: Union[str, datetime]
    endTime: Union[str, datetime]
    completionStartTime: Optional[Union[str, datetime]]
    model: Optional[str]
    version: Optional[str]
    metadata: Dict
    input: Optional[Any]
    output: Optional[Any]
    usage: Optional[Dict]
    level: str
    statusMessage: Optional[str]
    parentObservationId: Optional[str]
    promptId: Optional[str]
    usageDetails: Dict
    costDetails: Dict
    environment: str
    promptName: Optional[str]
    promptVersion: Optional[str]
    modelId: Optional[str]
    inputPrice: float
    outputPrice: float
    totalPrice: float
    calculatedInputCost: Optional[float]
    calculatedOutputCost: Optional[float]
    calculatedTotalCost: float
    latency: float
    timeToFirstToken: Optional[float]
    updatedAt: Union[str, datetime]
    unit: str
    projectId: str
    createdAt: Union[str, datetime]
    totalTokens: int
    completionTokens: int
    promptTokens: int
    depth: Optional[int] = None

class LangFuseTrace(BaseModel):
    id: str
    timestamp: Union[str, datetime]
    name: str
    sessionId: Optional[str]
    metadata: Dict
    tags: List[str]
    public: bool
    environment: str
    htmlPath: str
    latency: float
    totalCost: float
    observations: List[LangFuseObservation]
    scores: List
    updatedAt: Union[str, datetime]
    projectId: str
    createdAt: Union[str, datetime]
    bookmarked: bool
    input: Optional[Any]
    output: Optional[Any]
    release: Optional[str]
    version: Optional[str]
    userId: Optional[str]
    externalId: Optional[str]
    observation_depth: Optional[int] = None

class LangFuseSession(BaseModel):
    session_id: str
    session_name: str
    project_name: str
    export_timestamp: str
    total_traces: int
    traces: List[LangFuseTrace]