scale-gp-beta 0.1.0a25__py3-none-any.whl → 0.1.0a27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scale_gp_beta/_models.py +8 -5
- scale_gp_beta/_version.py +1 -1
- scale_gp_beta/lib/tracing/integrations/__init__.py +5 -0
- scale_gp_beta/lib/tracing/integrations/openai/__init__.py +0 -0
- scale_gp_beta/lib/tracing/integrations/openai/openai_span_type_map.py +29 -0
- scale_gp_beta/lib/tracing/integrations/openai/openai_tracing_sgp_processor.py +144 -0
- scale_gp_beta/lib/tracing/integrations/openai/utils.py +68 -0
- scale_gp_beta/types/chat/chat_completion.py +1 -1
- scale_gp_beta/types/chat/chat_completion_chunk.py +1 -1
- {scale_gp_beta-0.1.0a25.dist-info → scale_gp_beta-0.1.0a27.dist-info}/METADATA +1 -1
- {scale_gp_beta-0.1.0a25.dist-info → scale_gp_beta-0.1.0a27.dist-info}/RECORD +13 -8
- {scale_gp_beta-0.1.0a25.dist-info → scale_gp_beta-0.1.0a27.dist-info}/WHEEL +0 -0
- {scale_gp_beta-0.1.0a25.dist-info → scale_gp_beta-0.1.0a27.dist-info}/licenses/LICENSE +0 -0
scale_gp_beta/_models.py
CHANGED
|
@@ -2,9 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
4
|
import inspect
|
|
5
|
-
from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, cast
|
|
5
|
+
from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, Optional, cast
|
|
6
6
|
from datetime import date, datetime
|
|
7
7
|
from typing_extensions import (
|
|
8
|
+
List,
|
|
8
9
|
Unpack,
|
|
9
10
|
Literal,
|
|
10
11
|
ClassVar,
|
|
@@ -366,7 +367,7 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
|
|
|
366
367
|
if type_ is None:
|
|
367
368
|
raise RuntimeError(f"Unexpected field type is None for {key}")
|
|
368
369
|
|
|
369
|
-
return construct_type(value=value, type_=type_)
|
|
370
|
+
return construct_type(value=value, type_=type_, metadata=getattr(field, "metadata", None))
|
|
370
371
|
|
|
371
372
|
|
|
372
373
|
def is_basemodel(type_: type) -> bool:
|
|
@@ -420,7 +421,7 @@ def construct_type_unchecked(*, value: object, type_: type[_T]) -> _T:
|
|
|
420
421
|
return cast(_T, construct_type(value=value, type_=type_))
|
|
421
422
|
|
|
422
423
|
|
|
423
|
-
def construct_type(*, value: object, type_: object) -> object:
|
|
424
|
+
def construct_type(*, value: object, type_: object, metadata: Optional[List[Any]] = None) -> object:
|
|
424
425
|
"""Loose coercion to the expected type with construction of nested values.
|
|
425
426
|
|
|
426
427
|
If the given value does not match the expected type then it is returned as-is.
|
|
@@ -438,8 +439,10 @@ def construct_type(*, value: object, type_: object) -> object:
|
|
|
438
439
|
type_ = type_.__value__ # type: ignore[unreachable]
|
|
439
440
|
|
|
440
441
|
# unwrap `Annotated[T, ...]` -> `T`
|
|
441
|
-
if
|
|
442
|
-
meta: tuple[Any, ...] =
|
|
442
|
+
if metadata is not None:
|
|
443
|
+
meta: tuple[Any, ...] = tuple(metadata)
|
|
444
|
+
elif is_annotated_type(type_):
|
|
445
|
+
meta = get_args(type_)[1:]
|
|
443
446
|
type_ = extract_type_arg(type_, 0)
|
|
444
447
|
else:
|
|
445
448
|
meta = tuple()
|
scale_gp_beta/_version.py
CHANGED
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from typing import Dict, Optional
|
|
2
|
+
|
|
3
|
+
from scale_gp_beta.lib.tracing.types import SpanTypeLiterals
|
|
4
|
+
|
|
5
|
+
OPENAI_SPAN_TYPE_MAP: Dict[str, SpanTypeLiterals] = {
|
|
6
|
+
"generation": "COMPLETION",
|
|
7
|
+
"agent": "AGENT_WORKFLOW",
|
|
8
|
+
"function": "CODE_EXECUTION",
|
|
9
|
+
"response": "COMPLETION",
|
|
10
|
+
"handoff": "CUSTOM",
|
|
11
|
+
"custom": "CUSTOM",
|
|
12
|
+
"guardrail": "STANDALONE",
|
|
13
|
+
"transcription": "STANDALONE",
|
|
14
|
+
"speech": "STANDALONE",
|
|
15
|
+
"speech_group": "STANDALONE",
|
|
16
|
+
"mcp_tools": "STANDALONE",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def openai_span_type_map(span_type: Optional[str]) -> SpanTypeLiterals:
|
|
21
|
+
"""
|
|
22
|
+
Maps an OpenAI span type string to its corresponding SGP SpanTypeLiteral.
|
|
23
|
+
|
|
24
|
+
Returns "CUSTOM" if the input is None or not found in the map.
|
|
25
|
+
"""
|
|
26
|
+
if not span_type:
|
|
27
|
+
return "CUSTOM"
|
|
28
|
+
|
|
29
|
+
return OPENAI_SPAN_TYPE_MAP.get(span_type, "CUSTOM")
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# The following `type: ignore` is necessary because this file provides an optional
|
|
2
|
+
# integration for the 'openai-agents' library. The linter will report missing
|
|
3
|
+
# imports if the library isn't installed in the development environment, but the
|
|
4
|
+
# code handles this gracefully at runtime with a try/except block.
|
|
5
|
+
# type: ignore
|
|
6
|
+
import logging
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional
|
|
8
|
+
|
|
9
|
+
from scale_gp_beta.lib.tracing.span import BaseSpan
|
|
10
|
+
from scale_gp_beta.lib.tracing.tracing import create_span, flush_queue, create_trace, tracing_queue_manager
|
|
11
|
+
from scale_gp_beta.lib.tracing.trace_queue_manager import TraceQueueManager
|
|
12
|
+
|
|
13
|
+
from .utils import sgp_span_name, parse_metadata, extract_response, parse_input_output
|
|
14
|
+
from .openai_span_type_map import openai_span_type_map
|
|
15
|
+
|
|
16
|
+
log: logging.Logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
try:
|
|
19
|
+
from agents.tracing import (
|
|
20
|
+
Span as OpenAISpan,
|
|
21
|
+
Trace as OpenAITrace,
|
|
22
|
+
SpanData as OpenAISpanData,
|
|
23
|
+
ResponseSpanData as OpenAIResponseSpanData,
|
|
24
|
+
TracingProcessor,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
_openai_agents_installed = True
|
|
28
|
+
except ImportError:
|
|
29
|
+
_openai_agents_installed = False
|
|
30
|
+
TracingProcessor = object
|
|
31
|
+
class _Fallback:
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
OpenAISpan = _Fallback
|
|
35
|
+
OpenAITrace = _Fallback
|
|
36
|
+
OpenAISpanData = _Fallback
|
|
37
|
+
OpenAIResponseSpanData = _Fallback
|
|
38
|
+
|
|
39
|
+
if TYPE_CHECKING:
|
|
40
|
+
OpenAISpan = Any
|
|
41
|
+
OpenAITrace = Any
|
|
42
|
+
OpenAISpanData = Any
|
|
43
|
+
OpenAIResponseSpanData = Any
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class OpenAITracingSGPProcessor(TracingProcessor):
|
|
47
|
+
"""
|
|
48
|
+
An SGP tracing processor that integrates with OpenAI Agents SDK.
|
|
49
|
+
|
|
50
|
+
This processor requires the 'openai-agents' library to be installed.
|
|
51
|
+
It will raise an ImportError on initialization if the library is not found.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
def __init__(
|
|
55
|
+
self,
|
|
56
|
+
*,
|
|
57
|
+
queue_manager: Optional[TraceQueueManager] = None,
|
|
58
|
+
):
|
|
59
|
+
"""
|
|
60
|
+
Initializes the processor.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
queue_manager: An optional custom trace queue manager.
|
|
64
|
+
|
|
65
|
+
Raises:
|
|
66
|
+
ImportError: If the 'openai-agents' package is not installed.
|
|
67
|
+
"""
|
|
68
|
+
# This runtime check is the gatekeeper. If 'openai-agents' isn't
|
|
69
|
+
# installed, no instance of this class can be created.
|
|
70
|
+
if not _openai_agents_installed:
|
|
71
|
+
raise ImportError(
|
|
72
|
+
"The 'openai-agents' package is required to use the OpenAITracingSGPProcessor. "
|
|
73
|
+
"Please install it with: pip install 'openai-agents'"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
self._queue_manager = queue_manager or tracing_queue_manager()
|
|
77
|
+
self._spans: Dict[str, BaseSpan] = {}
|
|
78
|
+
|
|
79
|
+
def on_trace_start(self, openai_trace: "OpenAITrace") -> None:
|
|
80
|
+
sgp_trace = create_trace(
|
|
81
|
+
name=openai_trace.name or "Agent Workflow",
|
|
82
|
+
span_type="AGENT_WORKFLOW",
|
|
83
|
+
group_id=openai_trace.group_id,
|
|
84
|
+
trace_id=openai_trace.trace_id,
|
|
85
|
+
metadata={"openai_metadata": openai_trace.metadata or {}},
|
|
86
|
+
)
|
|
87
|
+
sgp_trace.start()
|
|
88
|
+
self._spans[openai_trace.trace_id] = sgp_trace.root_span
|
|
89
|
+
|
|
90
|
+
def on_trace_end(self, openai_trace: "OpenAITrace") -> None:
|
|
91
|
+
root_span = self._spans.pop(openai_trace.trace_id, None)
|
|
92
|
+
if root_span is None:
|
|
93
|
+
log.warning(f"No root span found for trace_id: {openai_trace.trace_id}")
|
|
94
|
+
return
|
|
95
|
+
root_span.end()
|
|
96
|
+
|
|
97
|
+
def on_span_start(self, openai_span: "OpenAISpan") -> None:
|
|
98
|
+
_spans_key = openai_span.parent_id or openai_span.trace_id
|
|
99
|
+
parent_span = self._spans.get(_spans_key)
|
|
100
|
+
span_data = openai_span.span_data
|
|
101
|
+
|
|
102
|
+
if not parent_span:
|
|
103
|
+
log.warning(f"No parent span found for span_id: {openai_span.span_id}")
|
|
104
|
+
return
|
|
105
|
+
|
|
106
|
+
name = sgp_span_name(openai_span)
|
|
107
|
+
sgp_span_type = openai_span_type_map(span_data.type if span_data else None)
|
|
108
|
+
|
|
109
|
+
new_span = create_span(
|
|
110
|
+
name=name,
|
|
111
|
+
span_type=sgp_span_type,
|
|
112
|
+
span_id=openai_span.span_id,
|
|
113
|
+
trace_id=parent_span.trace_id,
|
|
114
|
+
parent_id=parent_span.span_id,
|
|
115
|
+
)
|
|
116
|
+
new_span.start()
|
|
117
|
+
self._spans[openai_span.span_id] = new_span
|
|
118
|
+
|
|
119
|
+
def on_span_end(self, openai_span: "OpenAISpan") -> None:
|
|
120
|
+
sgp_span = self._spans.pop(openai_span.span_id, None)
|
|
121
|
+
if sgp_span is None:
|
|
122
|
+
log.warning(f"No existing span found for span_id: {openai_span.span_id}")
|
|
123
|
+
return
|
|
124
|
+
|
|
125
|
+
# special case response type, if there are more like this we should change arch to support this
|
|
126
|
+
if isinstance(openai_span.span_data, OpenAIResponseSpanData):
|
|
127
|
+
response = extract_response(openai_span)
|
|
128
|
+
sgp_span.input = {"input": openai_span.span_data.input}
|
|
129
|
+
sgp_span.output = {"output": response.get("output", None) if response else None }
|
|
130
|
+
else:
|
|
131
|
+
sgp_span.output = parse_input_output(openai_span, "output")
|
|
132
|
+
sgp_span.input = parse_input_output(openai_span, "input")
|
|
133
|
+
|
|
134
|
+
sgp_span.metadata = parse_metadata(openai_span)
|
|
135
|
+
|
|
136
|
+
if openai_span.error:
|
|
137
|
+
sgp_span.set_error(error_message=str(openai_span.error))
|
|
138
|
+
sgp_span.end()
|
|
139
|
+
|
|
140
|
+
def shutdown(self) -> None:
|
|
141
|
+
self._queue_manager.shutdown()
|
|
142
|
+
|
|
143
|
+
def force_flush(self) -> None:
|
|
144
|
+
flush_queue()
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
import json
|
|
3
|
+
from typing import Any, Dict, Optional
|
|
4
|
+
|
|
5
|
+
try:
|
|
6
|
+
from agents.tracing import (
|
|
7
|
+
Span as OpenAISpan,
|
|
8
|
+
ResponseSpanData as OpenAIResponseSpanData,
|
|
9
|
+
)
|
|
10
|
+
except ImportError:
|
|
11
|
+
OpenAISpan = Any
|
|
12
|
+
OpenAIResponseSpanData = Any
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def sgp_span_name(openai_span: "OpenAISpan") -> str:
|
|
16
|
+
span_data = openai_span.span_data
|
|
17
|
+
if span_data is None:
|
|
18
|
+
return "Unnamed Span"
|
|
19
|
+
default_name = str(type(span_data).__name__).replace("SpanData", "")
|
|
20
|
+
|
|
21
|
+
return span_data.export().get("name", default_name)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def extract_response(openai_span: "OpenAISpan") -> Optional[Dict[str, Any]]:
|
|
25
|
+
span_data = openai_span.span_data
|
|
26
|
+
if not isinstance(span_data, OpenAIResponseSpanData):
|
|
27
|
+
return None
|
|
28
|
+
|
|
29
|
+
return {} if span_data.response is None else span_data.response.model_dump()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def parse_metadata(openai_span: "OpenAISpan") -> Dict[str, Any]:
|
|
33
|
+
"""Extracts and formats metadata from an OpenAI span."""
|
|
34
|
+
if not openai_span.span_data:
|
|
35
|
+
return {}
|
|
36
|
+
|
|
37
|
+
excluded_fields = ("output", "input")
|
|
38
|
+
exported_span_data: dict = openai_span.span_data.export()
|
|
39
|
+
exported_span_data["openai_span_id"] = openai_span.span_id
|
|
40
|
+
|
|
41
|
+
filtered_span_data: dict = {
|
|
42
|
+
k: v for k, v in exported_span_data.items() if k not in excluded_fields
|
|
43
|
+
}
|
|
44
|
+
response = extract_response(openai_span)
|
|
45
|
+
if response is not None:
|
|
46
|
+
filtered_span_data["openai_response"] = response
|
|
47
|
+
return {"openai_metadata": filtered_span_data}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def parse_input_output(openai_span: "OpenAISpan", key: str) -> Dict[str, Any]:
|
|
51
|
+
"""
|
|
52
|
+
Safely extracts and parses input/output data from a span.
|
|
53
|
+
The openai-agents SDK sometimes returns this data as a JSON string.
|
|
54
|
+
"""
|
|
55
|
+
span_data = openai_span.span_data
|
|
56
|
+
if not span_data:
|
|
57
|
+
return {}
|
|
58
|
+
exported_span_data: dict = span_data.export()
|
|
59
|
+
value: Optional[Any] = exported_span_data.get(key)
|
|
60
|
+
if value is None:
|
|
61
|
+
return {}
|
|
62
|
+
|
|
63
|
+
if isinstance(value, str):
|
|
64
|
+
try:
|
|
65
|
+
return json.loads(value)
|
|
66
|
+
except (json.JSONDecodeError, TypeError):
|
|
67
|
+
return {key: value}
|
|
68
|
+
return {key: value}
|
|
@@ -276,7 +276,7 @@ class ChatCompletion(BaseModel):
|
|
|
276
276
|
|
|
277
277
|
object: Optional[Literal["chat.completion"]] = None
|
|
278
278
|
|
|
279
|
-
service_tier: Optional[Literal["auto", "default", "flex", "scale"]] = None
|
|
279
|
+
service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = None
|
|
280
280
|
|
|
281
281
|
system_fingerprint: Optional[str] = None
|
|
282
282
|
|
|
@@ -227,7 +227,7 @@ class ChatCompletionChunk(BaseModel):
|
|
|
227
227
|
|
|
228
228
|
object: Optional[Literal["chat.completion.chunk"]] = None
|
|
229
229
|
|
|
230
|
-
service_tier: Optional[Literal["auto", "default", "flex", "scale"]] = None
|
|
230
|
+
service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = None
|
|
231
231
|
|
|
232
232
|
system_fingerprint: Optional[str] = None
|
|
233
233
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: scale-gp-beta
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a27
|
|
4
4
|
Summary: The official Python library for the Scale GP API
|
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/sgp-python-beta
|
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/sgp-python-beta
|
|
@@ -5,13 +5,13 @@ scale_gp_beta/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
|
|
|
5
5
|
scale_gp_beta/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
|
|
6
6
|
scale_gp_beta/_exceptions.py,sha256=95GM5CLFtP-QMjjmzsr5ajjZOyEZvyaETfGmqNPR8YM,3226
|
|
7
7
|
scale_gp_beta/_files.py,sha256=VHiUi-XDLm5MK8EbVoB2TdgX3jbYshIfxYLeKv5jaYI,3620
|
|
8
|
-
scale_gp_beta/_models.py,sha256=
|
|
8
|
+
scale_gp_beta/_models.py,sha256=viD5E6aDMhxslcFHDYvkHaKzE8YLcNmsPsMe8STixvs,29294
|
|
9
9
|
scale_gp_beta/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
|
|
10
10
|
scale_gp_beta/_resource.py,sha256=siZly_U6D0AOVLAzaOsqUdEFFzVMbWRj-ml30nvRp7E,1118
|
|
11
11
|
scale_gp_beta/_response.py,sha256=GemuybPk0uemovTlGHyHkj-ScYTTDJA0jqH5FQqIPwQ,28852
|
|
12
12
|
scale_gp_beta/_streaming.py,sha256=fcCSGXslmi2SmmkM05g2SACXHk2Mj7k1X5uMBu6U5s8,10112
|
|
13
13
|
scale_gp_beta/_types.py,sha256=0wSs40TefKMPBj2wQKenEeZ0lzedoHClNJeqrpAgkII,6204
|
|
14
|
-
scale_gp_beta/_version.py,sha256=
|
|
14
|
+
scale_gp_beta/_version.py,sha256=pH9t8LZndiar4fooop-BkuK6f4yzE0eHL7DxaCUG-24,174
|
|
15
15
|
scale_gp_beta/pagination.py,sha256=t-U86PYxl20VRsz8VXOMJJDe7HxkX7ISFMvRNbBNy9s,4054
|
|
16
16
|
scale_gp_beta/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
scale_gp_beta/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
|
@@ -35,6 +35,11 @@ scale_gp_beta/lib/tracing/trace_queue_manager.py,sha256=RnEDOKi7c1xlKXUsofShzZ8W
|
|
|
35
35
|
scale_gp_beta/lib/tracing/tracing.py,sha256=_j30MMy-w5Y33t2lAYSFVpMY_Ia2PFcEFaUEG5UN2OI,9368
|
|
36
36
|
scale_gp_beta/lib/tracing/types.py,sha256=07piipdyN0a25gYGtV6dM12ZroJqLUpBmcFmdQPV4jU,1113
|
|
37
37
|
scale_gp_beta/lib/tracing/util.py,sha256=8Oq4wLXRNOzh3CC1zRaBEr0h_WdXLrk536BUNKRddVE,1527
|
|
38
|
+
scale_gp_beta/lib/tracing/integrations/__init__.py,sha256=-1CwzEpjZS0eifPRAqwEA4D4nzEAfEe9WbXrLxCWQvg,187
|
|
39
|
+
scale_gp_beta/lib/tracing/integrations/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
scale_gp_beta/lib/tracing/integrations/openai/openai_span_type_map.py,sha256=kjEVpTJBIvyxNeBbc8k2MBI6-mdIOAPahyk8nAT7HEQ,828
|
|
41
|
+
scale_gp_beta/lib/tracing/integrations/openai/openai_tracing_sgp_processor.py,sha256=o-Fp_V7U9cC1kKP0_750GQInKGlF7KAdpIbGTmyu2tg,5270
|
|
42
|
+
scale_gp_beta/lib/tracing/integrations/openai/utils.py,sha256=s6tbNFJ3N7GjqXDM9f2f4r9ugz3wjO0OTU6KzlU_tLQ,2113
|
|
38
43
|
scale_gp_beta/resources/__init__.py,sha256=uquYxoMtAXyfIas331lnYexJZKr7pEYqi_vKlfrHRIg,5431
|
|
39
44
|
scale_gp_beta/resources/completions.py,sha256=4esj9lGTJAxt6wFvON126DvEGkMIChRZ6uZBOf56Aac,31868
|
|
40
45
|
scale_gp_beta/resources/dataset_items.py,sha256=2d7O5zmqVEafJTxVwgbRz9yq-4T81dPPfFuPDRAaWqU,22510
|
|
@@ -113,15 +118,15 @@ scale_gp_beta/types/span_update_params.py,sha256=zT-O1SE5K-KkbGxjLGkjgvhBRYTP8r_
|
|
|
113
118
|
scale_gp_beta/types/span_upsert_batch_params.py,sha256=MrqPpOhJ122X8qf8S6aobfwkemQJ89Q23SPhmsSqhog,1886
|
|
114
119
|
scale_gp_beta/types/span_upsert_batch_response.py,sha256=Gkndmd_cyfodeGaCJu4sF4TsgB22hgHVlmoek3e_Kkc,366
|
|
115
120
|
scale_gp_beta/types/chat/__init__.py,sha256=YmEJo3C_C7aRkImUaKB5BG97oOGkV0q3sHimL8cMa4g,688
|
|
116
|
-
scale_gp_beta/types/chat/chat_completion.py,sha256=
|
|
117
|
-
scale_gp_beta/types/chat/chat_completion_chunk.py,sha256
|
|
121
|
+
scale_gp_beta/types/chat/chat_completion.py,sha256=NsxSieotlSx-Juc71V6CCyD2zqh0xfLpDYFTVgQ8Gv4,8278
|
|
122
|
+
scale_gp_beta/types/chat/chat_completion_chunk.py,sha256=jtqQEmCqVfe9UY2EAmEDvGHXCLvgtzl0x69PaceG2Wk,7088
|
|
118
123
|
scale_gp_beta/types/chat/completion_create_params.py,sha256=Y7vJNvNM4Sov77l55aS5YtyRnrf7isediu3nKr6YE-A,4505
|
|
119
124
|
scale_gp_beta/types/chat/completion_create_response.py,sha256=0OhfoJW8azVRrZdXRRMuiJ7kEEeMDnKScxrr3sayzDo,374
|
|
120
125
|
scale_gp_beta/types/chat/completion_models_params.py,sha256=NdZ3Lkgclq6UKc9iae-evvCFuaOQszCwwubVjP1MYfk,635
|
|
121
126
|
scale_gp_beta/types/chat/completion_models_response.py,sha256=Ctgj6o-QWPSdjBKzG9J4Id0-DjXu4UGGw1NR6-840Ec,403
|
|
122
127
|
scale_gp_beta/types/chat/model_definition.py,sha256=XPkHEe4tY442oLSMlaotClNDv5XeQ3j5RrXgLZFo1Qk,841
|
|
123
128
|
scale_gp_beta/types/files/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
|
124
|
-
scale_gp_beta-0.1.
|
|
125
|
-
scale_gp_beta-0.1.
|
|
126
|
-
scale_gp_beta-0.1.
|
|
127
|
-
scale_gp_beta-0.1.
|
|
129
|
+
scale_gp_beta-0.1.0a27.dist-info/METADATA,sha256=BXtYGBjQHmzC9ciL8a1S5IW29yawXZiefPmJfbMlY3U,28723
|
|
130
|
+
scale_gp_beta-0.1.0a27.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
131
|
+
scale_gp_beta-0.1.0a27.dist-info/licenses/LICENSE,sha256=x49Bj8r_ZpqfzThbmfHyZ_bE88XvHdIMI_ANyLHFFRE,11338
|
|
132
|
+
scale_gp_beta-0.1.0a27.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|