together 2.0.0a8__py3-none-any.whl → 2.0.0a10__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.
Files changed (36) hide show
  1. together/_streaming.py +50 -48
  2. together/_types.py +3 -2
  3. together/_utils/_utils.py +1 -1
  4. together/_version.py +1 -1
  5. together/lib/cli/api/fine_tuning.py +65 -3
  6. together/lib/cli/api/models.py +1 -6
  7. together/lib/resources/fine_tuning.py +41 -2
  8. together/resources/audio/transcriptions.py +20 -0
  9. together/resources/chat/completions.py +48 -0
  10. together/resources/fine_tuning.py +213 -5
  11. together/resources/images.py +13 -1
  12. together/resources/models.py +41 -5
  13. together/types/__init__.py +3 -0
  14. together/types/audio/transcription_create_params.py +14 -0
  15. together/types/audio/voice_list_response.py +4 -0
  16. together/types/autoscaling.py +2 -0
  17. together/types/autoscaling_param.py +2 -0
  18. together/types/chat/completion_create_params.py +78 -5
  19. together/types/dedicated_endpoint.py +2 -0
  20. together/types/endpoint_list_avzones_response.py +2 -0
  21. together/types/endpoint_list_response.py +2 -0
  22. together/types/execute_response.py +7 -0
  23. together/types/fine_tuning_cancel_response.py +6 -0
  24. together/types/fine_tuning_estimate_price_params.py +98 -0
  25. together/types/fine_tuning_estimate_price_response.py +24 -0
  26. together/types/fine_tuning_list_response.py +6 -0
  27. together/types/hardware_list_response.py +8 -0
  28. together/types/image_generate_params.py +9 -0
  29. together/types/model_list_params.py +12 -0
  30. together/types/video_job.py +8 -0
  31. {together-2.0.0a8.dist-info → together-2.0.0a10.dist-info}/METADATA +11 -12
  32. {together-2.0.0a8.dist-info → together-2.0.0a10.dist-info}/RECORD +35 -33
  33. together/lib/resources/models.py +0 -35
  34. {together-2.0.0a8.dist-info → together-2.0.0a10.dist-info}/WHEEL +0 -0
  35. {together-2.0.0a8.dist-info → together-2.0.0a10.dist-info}/entry_points.txt +0 -0
  36. {together-2.0.0a8.dist-info → together-2.0.0a10.dist-info}/licenses/LICENSE +0 -0
@@ -22,12 +22,19 @@ __all__ = [
22
22
 
23
23
 
24
24
  class SuccessfulExecutionDataOutputStreamOutput(BaseModel):
25
+ """Outputs that were printed to stdout or stderr"""
26
+
25
27
  data: str
26
28
 
27
29
  type: Literal["stdout", "stderr"]
28
30
 
29
31
 
30
32
  class SuccessfulExecutionDataOutputError(BaseModel):
33
+ """Errors and exceptions that occurred.
34
+
35
+ If this output type is present, your code did not execute successfully.
36
+ """
37
+
31
38
  data: str
32
39
 
33
40
  type: Literal["error"]
@@ -43,6 +43,8 @@ LrSchedulerLrSchedulerArgs: TypeAlias = Union[
43
43
 
44
44
 
45
45
  class LrScheduler(BaseModel):
46
+ """Learning rate scheduler configuration"""
47
+
46
48
  lr_scheduler_type: Literal["linear", "cosine"]
47
49
 
48
50
  lr_scheduler_args: Optional[LrSchedulerLrSchedulerArgs] = None
@@ -95,6 +97,10 @@ TrainingType: TypeAlias = Union[TrainingTypeFullTrainingType, TrainingTypeLoRaTr
95
97
 
96
98
 
97
99
  class FineTuningCancelResponse(BaseModel):
100
+ """
101
+ A truncated version of the fine-tune response, used for POST /fine-tunes, GET /fine-tunes and POST /fine-tunes/{id}/cancel endpoints
102
+ """
103
+
98
104
  id: str
99
105
  """Unique identifier for the fine-tune job"""
100
106
 
@@ -0,0 +1,98 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Union
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
+
8
+ __all__ = [
9
+ "FineTuningEstimatePriceParams",
10
+ "TrainingMethod",
11
+ "TrainingMethodTrainingMethodSft",
12
+ "TrainingMethodTrainingMethodDpo",
13
+ "TrainingType",
14
+ "TrainingTypeFullTrainingType",
15
+ "TrainingTypeLoRaTrainingType",
16
+ ]
17
+
18
+
19
+ class FineTuningEstimatePriceParams(TypedDict, total=False):
20
+ training_file: Required[str]
21
+ """File-ID of a training file uploaded to the Together API"""
22
+
23
+ from_checkpoint: str
24
+ """The checkpoint identifier to continue training from a previous fine-tuning job.
25
+
26
+ Format is `{$JOB_ID}` or `{$OUTPUT_MODEL_NAME}` or `{$JOB_ID}:{$STEP}` or
27
+ `{$OUTPUT_MODEL_NAME}:{$STEP}`. The step value is optional; without it, the
28
+ final checkpoint will be used.
29
+ """
30
+
31
+ model: str
32
+ """Name of the base model to run fine-tune job on"""
33
+
34
+ n_epochs: int
35
+ """
36
+ Number of complete passes through the training dataset (higher values may
37
+ improve results but increase cost and risk of overfitting)
38
+ """
39
+
40
+ n_evals: int
41
+ """Number of evaluations to be run on a given validation set during training"""
42
+
43
+ training_method: TrainingMethod
44
+ """The training method to use.
45
+
46
+ 'sft' for Supervised Fine-Tuning or 'dpo' for Direct Preference Optimization.
47
+ """
48
+
49
+ training_type: TrainingType
50
+
51
+ validation_file: str
52
+ """File-ID of a validation file uploaded to the Together API"""
53
+
54
+
55
+ class TrainingMethodTrainingMethodSft(TypedDict, total=False):
56
+ method: Required[Literal["sft"]]
57
+
58
+ train_on_inputs: Required[Union[bool, Literal["auto"]]]
59
+ """
60
+ Whether to mask the user messages in conversational data or prompts in
61
+ instruction data.
62
+ """
63
+
64
+
65
+ class TrainingMethodTrainingMethodDpo(TypedDict, total=False):
66
+ method: Required[Literal["dpo"]]
67
+
68
+ dpo_beta: float
69
+
70
+ dpo_normalize_logratios_by_length: bool
71
+
72
+ dpo_reference_free: bool
73
+
74
+ rpo_alpha: float
75
+
76
+ simpo_gamma: float
77
+
78
+
79
+ TrainingMethod: TypeAlias = Union[TrainingMethodTrainingMethodSft, TrainingMethodTrainingMethodDpo]
80
+
81
+
82
+ class TrainingTypeFullTrainingType(TypedDict, total=False):
83
+ type: Required[Literal["Full"]]
84
+
85
+
86
+ class TrainingTypeLoRaTrainingType(TypedDict, total=False):
87
+ lora_alpha: Required[int]
88
+
89
+ lora_r: Required[int]
90
+
91
+ type: Required[Literal["Lora"]]
92
+
93
+ lora_dropout: float
94
+
95
+ lora_trainable_modules: str
96
+
97
+
98
+ TrainingType: TypeAlias = Union[TrainingTypeFullTrainingType, TrainingTypeLoRaTrainingType]
@@ -0,0 +1,24 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["FineTuningEstimatePriceResponse"]
8
+
9
+
10
+ class FineTuningEstimatePriceResponse(BaseModel):
11
+ allowed_to_proceed: Optional[bool] = None
12
+ """Whether the user is allowed to proceed with the fine-tuning job"""
13
+
14
+ estimated_eval_token_count: Optional[float] = None
15
+ """The estimated number of tokens for evaluation"""
16
+
17
+ estimated_total_price: Optional[float] = None
18
+ """The price of the fine-tuning job"""
19
+
20
+ estimated_train_token_count: Optional[float] = None
21
+ """The estimated number of tokens to be trained"""
22
+
23
+ user_limit: Optional[float] = None
24
+ """The user's credit limit in dollars"""
@@ -44,6 +44,8 @@ DataLrSchedulerLrSchedulerArgs: TypeAlias = Union[
44
44
 
45
45
 
46
46
  class DataLrScheduler(BaseModel):
47
+ """Learning rate scheduler configuration"""
48
+
47
49
  lr_scheduler_type: Literal["linear", "cosine"]
48
50
 
49
51
  lr_scheduler_args: Optional[DataLrSchedulerLrSchedulerArgs] = None
@@ -96,6 +98,10 @@ DataTrainingType: TypeAlias = Union[DataTrainingTypeFullTrainingType, DataTraini
96
98
 
97
99
 
98
100
  class Data(BaseModel):
101
+ """
102
+ A truncated version of the fine-tune response, used for POST /fine-tunes, GET /fine-tunes and POST /fine-tunes/{id}/cancel endpoints
103
+ """
104
+
99
105
  id: str
100
106
  """Unique identifier for the fine-tune job"""
101
107
 
@@ -10,11 +10,15 @@ __all__ = ["HardwareListResponse", "Data", "DataPricing", "DataSpecs", "DataAvai
10
10
 
11
11
 
12
12
  class DataPricing(BaseModel):
13
+ """Pricing details for using an endpoint"""
14
+
13
15
  cents_per_minute: float
14
16
  """Cost per minute of endpoint uptime in cents"""
15
17
 
16
18
 
17
19
  class DataSpecs(BaseModel):
20
+ """Detailed specifications of a hardware configuration"""
21
+
18
22
  gpu_count: int
19
23
  """Number of GPUs in this configuration"""
20
24
 
@@ -29,11 +33,15 @@ class DataSpecs(BaseModel):
29
33
 
30
34
 
31
35
  class DataAvailability(BaseModel):
36
+ """Indicates the current availability status of a hardware configuration"""
37
+
32
38
  status: Literal["available", "unavailable", "insufficient"]
33
39
  """The availability status of the hardware configuration"""
34
40
 
35
41
 
36
42
  class Data(BaseModel):
43
+ """Hardware configuration details with optional availability status"""
44
+
37
45
  id: str
38
46
  """Unique identifier for the hardware configuration"""
39
47
 
@@ -5,6 +5,8 @@ from __future__ import annotations
5
5
  from typing import Union, Iterable
6
6
  from typing_extensions import Literal, Required, TypedDict
7
7
 
8
+ from .._types import SequenceNotStr
9
+
8
10
  __all__ = ["ImageGenerateParams", "ImageLora"]
9
11
 
10
12
 
@@ -61,6 +63,13 @@ class ImageGenerateParams(TypedDict, total=False):
61
63
  Can be either be `jpeg` or `png`. Defaults to `jpeg`.
62
64
  """
63
65
 
66
+ reference_images: SequenceNotStr[str]
67
+ """
68
+ An array of image URLs that guide the overall appearance and style of the
69
+ generated image. These reference images influence the visual characteristics
70
+ consistently across the generation.
71
+ """
72
+
64
73
  response_format: Literal["base64", "url"]
65
74
  """Format of the image response. Can be either a base64 string or a URL."""
66
75
 
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["ModelListParams"]
8
+
9
+
10
+ class ModelListParams(TypedDict, total=False):
11
+ dedicated: bool
12
+ """Filter models to only return dedicated models"""
@@ -9,12 +9,18 @@ __all__ = ["VideoJob", "Error", "Outputs"]
9
9
 
10
10
 
11
11
  class Error(BaseModel):
12
+ """Error payload that explains why generation failed, if applicable."""
13
+
12
14
  message: str
13
15
 
14
16
  code: Optional[str] = None
15
17
 
16
18
 
17
19
  class Outputs(BaseModel):
20
+ """
21
+ Available upon completion, the outputs provides the cost charged and the hosted url to access the video
22
+ """
23
+
18
24
  cost: int
19
25
  """The cost of generated video charged to the owners account."""
20
26
 
@@ -23,6 +29,8 @@ class Outputs(BaseModel):
23
29
 
24
30
 
25
31
  class VideoJob(BaseModel):
32
+ """Structured information describing a generated video job."""
33
+
26
34
  id: str
27
35
  """Unique identifier for the video job."""
28
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: together
3
- Version: 2.0.0a8
3
+ Version: 2.0.0a10
4
4
  Summary: The official Python library for the together API
5
5
  Project-URL: Homepage, https://github.com/togethercomputer/together-py
6
6
  Project-URL: Repository, https://github.com/togethercomputer/together-py
@@ -144,6 +144,7 @@ pip install 'together[aiohttp] @ git+ssh://git@github.com/togethercomputer/toget
144
144
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
145
145
 
146
146
  ```python
147
+ import os
147
148
  import asyncio
148
149
  from together import DefaultAioHttpClient
149
150
  from together import AsyncTogether
@@ -151,7 +152,7 @@ from together import AsyncTogether
151
152
 
152
153
  async def main() -> None:
153
154
  async with AsyncTogether(
154
- api_key="My API Key",
155
+ api_key=os.environ.get("TOGETHER_API_KEY"), # This is the default and can be omitted
155
156
  http_client=DefaultAioHttpClient(),
156
157
  ) as client:
157
158
  chat_completion = await client.chat.completions.create(
@@ -231,17 +232,15 @@ from together import Together
231
232
 
232
233
  client = Together()
233
234
 
234
- chat_completion = client.chat.completions.create(
235
- messages=[
236
- {
237
- "content": "content",
238
- "role": "system",
239
- }
240
- ],
241
- model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
242
- response_format={},
235
+ dedicated_endpoint = client.endpoints.create(
236
+ autoscaling={
237
+ "max_replicas": 5,
238
+ "min_replicas": 2,
239
+ },
240
+ hardware="1x_nvidia_a100_80gb_sxm",
241
+ model="meta-llama/Llama-3-8b-chat-hf",
243
242
  )
244
- print(chat_completion.response_format)
243
+ print(dedicated_endpoint.autoscaling)
245
244
  ```
246
245
 
247
246
  The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
@@ -9,9 +9,9 @@ together/_models.py,sha256=3D65psj_C02Mw0K2zpBWrn1khmrvtEXgTTQ6P4r3tUY,31837
9
9
  together/_qs.py,sha256=craIKyvPktJ94cvf9zn8j8ekG9dWJzhWv0ob34lIOv4,4828
10
10
  together/_resource.py,sha256=-ZTq9O5qf2YsgjJk_gwJs-CM_OG4p6gdMLcNWjuxFwQ,1112
11
11
  together/_response.py,sha256=lvqEsCbpD8SRJTjlhhUFGbnLUR_4-Qva-OApxfVdiY4,28800
12
- together/_streaming.py,sha256=SgGfDGFD2J4pNdMrj--YjD8tCjfEj-htf_Jk6q1aby4,11625
13
- together/_types.py,sha256=nL3wDyii53Z400Anq1qLS1pEW0PwQId-OjnbRJDwoj4,7238
14
- together/_version.py,sha256=877Tb5z6TSnhW_tDkXCD4U1eUrrjghU4llqc4rfrnRU,168
12
+ together/_streaming.py,sha256=sk6fVYbpdO3Y-0S5iwZTHQJ3N24UkK0KaupgUTftWZk,11825
13
+ together/_types.py,sha256=LzaeqN09mUAEvRg_XrLzihdOaW0D_R9qrG7jKsFjnQY,7297
14
+ together/_version.py,sha256=XmBi_Hs7NKx8HCFG-ERQy7tKZ3NfYmSV0kJTKf_6-o0,169
15
15
  together/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  together/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
17
  together/_utils/_compat.py,sha256=rN17SSvjMoQE1GmKFTLniRuG1sKj2WAD5VjdLPeRlF0,1231
@@ -24,7 +24,7 @@ together/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD-noMLM,2
24
24
  together/_utils/_sync.py,sha256=HBnZkkBnzxtwOZe0212C4EyoRvxhTVtTrLFDz2_xVCg,1589
25
25
  together/_utils/_transform.py,sha256=NjCzmnfqYrsAikUHQig6N9QfuTVbKipuP3ur9mcNF-E,15951
26
26
  together/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
27
- together/_utils/_utils.py,sha256=zaHjfH3uG2SSJUqIPCWRaTCkTBNm_1hw-P-ZV0XZHec,12320
27
+ together/_utils/_utils.py,sha256=g9ftElB09kVT6EVfCIlD_nUfANhDX5_vZO61FDWoIQI,12334
28
28
  together/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
29
29
  together/lib/__init__.py,sha256=Qtdi6geFNzxE-F51eNDk1ESXYyYDt8b82MR1POANQBQ,394
30
30
  together/lib/constants.py,sha256=EgcTlmk4QqVqjZjGej5k5JEwoRqidlITQ8LQqzW0dXI,1795
@@ -34,13 +34,12 @@ together/lib/cli/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
34
34
  together/lib/cli/api/endpoints.py,sha256=MyliUrTuJWw2qFd80J27pFs9xTazIVAP0mqgRYxdVsw,14851
35
35
  together/lib/cli/api/evals.py,sha256=KkSvz2wIYmPQ3sFQBte6inNBZt1aptIkMVL5TKWTW5k,19074
36
36
  together/lib/cli/api/files.py,sha256=HbflC45PpzBIF0CE0TLucQaVr319ScL05VyAFKf2T6Y,3596
37
- together/lib/cli/api/fine_tuning.py,sha256=yTkFpzgvcfhdvdocbG9ftWfs9SfeZj5jFHHmTO1MxTY,19909
38
- together/lib/cli/api/models.py,sha256=XlQNLrMXCYitFvlg-x8Z7MKya1Mpl-7RBcJsw7w-AsQ,4229
37
+ together/lib/cli/api/fine_tuning.py,sha256=XlkS8cUrlKIJAsPgtlSitDSCd66X86zRcT4bTk-36u4,22202
38
+ together/lib/cli/api/models.py,sha256=Jfrl7gcbWAkbBQ1i1gCy485HHT2C4C784OMaaHZPiPw,4084
39
39
  together/lib/cli/api/utils.py,sha256=qppHd3MdATVA7MI32e_--OVeFQdftCq9s9tvKz8xaNY,1317
40
40
  together/lib/resources/__init__.py,sha256=ystIb0pBHQLuwUBtHJwhRgtjK3_TV6K0KuM8NGuuNoU,172
41
41
  together/lib/resources/files.py,sha256=jM7Ra43eCKAa4pu9xA-1rPtP-0fXs8CkUq-hc6X8CaA,34418
42
- together/lib/resources/fine_tuning.py,sha256=vQIcUKuDsl5XY5Qf9l5kwtuIFEB3L89K63co6XCUa7I,10423
43
- together/lib/resources/models.py,sha256=h3UZxMzz0Kq9Lzp3KaL0HLcUco1fqtwWanxPB16g_1g,1118
42
+ together/lib/resources/fine_tuning.py,sha256=-yCS6AIbgXpAcUkeqJcia8CPrnVcmyiaUN4dvksEjcc,12642
44
43
  together/lib/types/__init__.py,sha256=1-kHsAp9Sh9HxjTGKfdHnF1nTS_cM_Tazv-3Z9hrEbY,205
45
44
  together/lib/types/error.py,sha256=i-rnTZPRZuJDUf1lM-52abG2JHWOUBTCh55zPNGoakg,135
46
45
  together/lib/types/fine_tuning.py,sha256=DN8mTSna3ptO-gQJBy_MnAZ-Zw6jOwZNuA73eVBt5l8,12555
@@ -56,29 +55,29 @@ together/resources/embeddings.py,sha256=7EU6DZQd0Nm0Sh7x7v37QQOLNuLqNmcjdJAyOTck
56
55
  together/resources/endpoints.py,sha256=dYdLlAJ0P7HJNhzZGxlbzEQYpUWsh35cjAMVfdWiifw,27884
57
56
  together/resources/evals.py,sha256=FPjvkbsBY5rrzLyQ-X1G9fWt2QmivI9ol5GExGtqYVA,16216
58
57
  together/resources/files.py,sha256=0paHeVqNt3NQCXoztCgFS8PEIg_-mMVto-ulHTr7GzE,16854
59
- together/resources/fine_tuning.py,sha256=gjGJn1bAZlHHRGhjhfrZ7bNU1AgTtrQqSK4BshL47Hg,45315
58
+ together/resources/fine_tuning.py,sha256=rpdUFb2p7_AGn8TIn7dPuhcFCCsuE-yuUGzo8S-epO8,54170
60
59
  together/resources/hardware.py,sha256=xgfCmMrrwF5o1igax0JGec8RY7kkS0s4kKm62RdC3ME,6850
61
- together/resources/images.py,sha256=hRXxDtMl3oBeMq0dfkdyvu4Qi1YqB_dhFsan0wynUk8,11870
60
+ together/resources/images.py,sha256=mVPQYpDHKBjLVO_Sv0uT62zYXdtWKN2PW3fCvfQLQCs,12612
62
61
  together/resources/jobs.py,sha256=TnzSnvJw4x5pqo1xzrkYH8f0viZrzyOqT-_w7xc0NzY,7797
63
- together/resources/models.py,sha256=kb4OeIFbyfzCE_4rO87i4AMlnuDoTa3pXqKKG95VoLo,10614
62
+ together/resources/models.py,sha256=QqPV9wlY2eTY_-aHSj805rkEsm2dD4lc6MTUvJbj_co,11773
64
63
  together/resources/rerank.py,sha256=Xoaco2OvKdII7AhPaJDqUqoXmJvXbTWmY4_g_aqq8dQ,8334
65
64
  together/resources/videos.py,sha256=AdcC08JrUtbcEJV-G0viH4CF1qU9oNjdjQ7U38QCEkU,14883
66
65
  together/resources/audio/__init__.py,sha256=MKUWFwFsAdCf9LrO8AiUCeIzdknPNDPr4lpAt-pkYSw,2521
67
66
  together/resources/audio/audio.py,sha256=stpvzuxIwMnAQLQnqW1KRxx3G_DI-oDSnx3uDN_X1R8,7180
68
67
  together/resources/audio/speech.py,sha256=ZavAHDhi8rKzIQ0tRTv1UOIlUJQ5_ArvH3JG1JdN41M,27560
69
- together/resources/audio/transcriptions.py,sha256=j_ySc6787yilePUVK-fb_NbCOydLAvsJ3JsM5pWS3L0,11913
68
+ together/resources/audio/transcriptions.py,sha256=k5zLDKXNqISjeieSyi1FKbyKsWyhnkeIkApG3l7QzeY,12965
70
69
  together/resources/audio/translations.py,sha256=zeV1wJPGzBmQGGgSPNA_vigy_4yuV3aBq6sSLa19-jg,10251
71
70
  together/resources/audio/voices.py,sha256=Lj9DtOcv_Dhaq3E5p7Oty1T_JkhrsGDZcDF91HHA3Yw,4905
72
71
  together/resources/chat/__init__.py,sha256=BVAfz9TM3DT5W9f_mt0P9YRxL_MsUxKCWAH6u1iogmA,1041
73
72
  together/resources/chat/chat.py,sha256=aJQQ4Zlof2NlrG53auI5omXPJVdG3c_vwnEkj-ahLG4,3688
74
- together/resources/chat/completions.py,sha256=bgOO_1BBhVDMiTN3brn11Rt1BpDPmfHYrkDb8-KAkXs,53178
73
+ together/resources/chat/completions.py,sha256=FKD9PyO4-VncgXI3yMjSiadwlzBxSginRUjfuIdNk-4,56256
75
74
  together/resources/code_interpreter/__init__.py,sha256=qeNVuBUuYy66RDhyh4RDx_xsf0gTMIrrZkZHpkPy9r0,1146
76
75
  together/resources/code_interpreter/code_interpreter.py,sha256=ZrWQIn5FO-uau3qTt_HhsHiaclM_ZNfOqZI_AWT2SMk,10373
77
76
  together/resources/code_interpreter/sessions.py,sha256=Sl8X6-r1gds2VHhzpjPhfwYNTciZCJxAH-YjJerA_eU,5020
78
- together/types/__init__.py,sha256=hq3GuuB078PZuKe7BgP1CJCRAOlNO1fgi2O23YCFPEE,4461
77
+ together/types/__init__.py,sha256=LyZBx2A_Y_thLZWIWs9MnVHP-dhOKzToYiZqk14AfXw,4753
79
78
  together/types/audio_speech_stream_chunk.py,sha256=npxlsMce0q4_VoJaZzfSh982TYTM0-j-zmhyI-9hP5o,346
80
- together/types/autoscaling.py,sha256=JipJZsNblLTE3XN5hglJy2KdffI1A2UGB5nIx6_imFQ,371
81
- together/types/autoscaling_param.py,sha256=rMCfBYYswaJIHTSsnnICtZ2barAbgbdzhaHDyAEav30,468
79
+ together/types/autoscaling.py,sha256=nlOvbwrsgJQsz2ALlunp9o4sRdAmLe1tinXKSBNa2Yg,447
80
+ together/types/autoscaling_param.py,sha256=GNyqO4jV5zQie2BmOjfwpESxJ9IyVcz6p9wAxGIf6F0,544
82
81
  together/types/batch_create_params.py,sha256=2vFTT9PsqBn_F8qvnQNCRahrdeFl0MMhUg5AGRdiMHk,660
83
82
  together/types/batch_create_response.py,sha256=wJgUqyNbJ8oPwgUWpHHWkJx65bN6llbudAhF94gaKWs,325
84
83
  together/types/batch_job.py,sha256=3z7fVqcWcm38QGqy9O3mTJvPiuvfc6jZDYTIQ-VrFso,1138
@@ -87,13 +86,13 @@ together/types/code_interpreter_execute_params.py,sha256=n9YEbz2W5xCRUP2Coe6xYS9
87
86
  together/types/completion.py,sha256=9t9bQc1x3s0LUGZ19fifWUosSGPTllO7kviY2Hvpkns,897
88
87
  together/types/completion_chunk.py,sha256=2GgVkgdnm7Ne-MnbFLakVTMIISkwXtAdn-CWdQ76D0U,1354
89
88
  together/types/completion_create_params.py,sha256=IxnGl1I_7sJl5rW57DwJfA74-nEnJTmkdeoDH0p-x-0,4772
90
- together/types/dedicated_endpoint.py,sha256=N_qIhRBMfV5C2HBZw-zIuTJ6EcqI1QxobYC_9Dnzdfk,1090
89
+ together/types/dedicated_endpoint.py,sha256=eZx8Arh3WEWpsFciws0CF7Z2RlWw5wKiA6NIPtcCrZY,1147
91
90
  together/types/embedding.py,sha256=ThcALXoTfDPptcFikqfUjDkBTHk3diJtYJ4hXYQOVHk,413
92
91
  together/types/embedding_create_params.py,sha256=6FEUFFRj3EQ7_3T8qjjCpfpA1YWzcpcO259db5koNCo,913
93
92
  together/types/endpoint_create_params.py,sha256=GnfrwDdtGTJjSrPgE8lxRz4Hfql8DMVBRAnY6gSmLVo,1311
94
- together/types/endpoint_list_avzones_response.py,sha256=Ry3doBFjWABjn9wEmM4u3fews9mb7AWMvWoBzpv-ufQ,258
93
+ together/types/endpoint_list_avzones_response.py,sha256=LbzRkG7snD7Swy-t0E0MLXrlU-utn_N9qPwjPkr8jT4,303
95
94
  together/types/endpoint_list_params.py,sha256=83Mg5beLYX_ipn1X_izk7hDIO8q8YNEL-tjsv5AcNXo,506
96
- together/types/endpoint_list_response.py,sha256=8JIFwtsmhR-LX7KxXQkdEVqTbsC2_9OMsklwHHpVYd4,939
95
+ together/types/endpoint_list_response.py,sha256=LPyv8np_HctSW0QKstC8k7vF0RAejb6X9N2JowZtaEY,1010
97
96
  together/types/endpoint_update_params.py,sha256=ONGRuPZQe_C40N5tfnu-HyPBNFvPRWeA3A9lEtrligc,780
98
97
  together/types/eval_create_params.py,sha256=KH4Jn8jzyufANXm1EQ5Cu4DkzQlqmRa7_t4m5c9QHHw,8059
99
98
  together/types/eval_create_response.py,sha256=s8tjFerVLIm8J4-qmp-kZ-yP65PsjWZ2AtK-ObGUv30,429
@@ -101,31 +100,34 @@ together/types/eval_list_params.py,sha256=pdKw4pK5FQMnyY76L7Yj2Q-mOXtJv9rg9BU3iA
101
100
  together/types/eval_list_response.py,sha256=htHk3n6LuY8ELXoNdt1u3EboPTua4WRNYMG7QVTNfEs,277
102
101
  together/types/eval_status_response.py,sha256=plUTISq48Vy9YPDnOczxMpGemWTla4_NluX4jpbYfIo,2886
103
102
  together/types/evaluation_job.py,sha256=XdrmLE5X-7uGhbrsSFc1zHfx9-Niyaxp3l1YpbBQ_iQ,3925
104
- together/types/execute_response.py,sha256=TFGROtzhoAqxfl7A3WOpxOUpjFo9YVHRBqruHzWczWQ,3322
103
+ together/types/execute_response.py,sha256=8k-ElkQLShIr-Ghxyle34GL2KoynHniN0Boo1eTWy7A,3509
105
104
  together/types/file_delete_response.py,sha256=CdqGlYIGsrRc2RHPZXIevSCiRTOUu9VyUqIREQXNNZM,286
106
105
  together/types/file_list.py,sha256=AE9muto7B4HyABgt3k9obSbUG1GW09pVvB0POnEQeUg,266
107
106
  together/types/file_purpose.py,sha256=9sHEbQ1qy4V99KMT7R5Ya_VXutu1ZZG1pho-w2ZZ9OM,302
108
107
  together/types/file_response.py,sha256=Abmu-Ph-masbhAFePB64VhiswHEFmExWF34jaiTm4Lg,626
109
108
  together/types/file_type.py,sha256=lrvFtcJr0Wn5thWP4NihmrmK23AouK2e6Ev4LCCPg5A,218
110
- together/types/fine_tuning_cancel_response.py,sha256=aPZPl8nzBs5tGk1gq-Ah35_vzibCyaeJIq-iZi0g2XQ,5220
109
+ together/types/fine_tuning_cancel_response.py,sha256=POZIRboDF3WBj6IHGaKpyUvKux7Kt3Fkuwo9TRKJn5Q,5423
111
110
  together/types/fine_tuning_content_params.py,sha256=_5rqZ2lk6FShmX-5Hj4A9jQdpPZP6lcgjXvnrC30G8k,711
112
111
  together/types/fine_tuning_delete_params.py,sha256=YwUcN_gFl9N2zuUJqyOrE0ngONL2N_OgfVw6h-sH2RE,273
113
112
  together/types/fine_tuning_delete_response.py,sha256=oWoJM51-2b_RIINhJSMyMelSKQkHFYrJjDLeD51dUgo,323
113
+ together/types/fine_tuning_estimate_price_params.py,sha256=LIlP1Z5C1EAQgOg3b3BZ1LkQOxsFckyZOwYb0dBN9OE,2608
114
+ together/types/fine_tuning_estimate_price_response.py,sha256=lA2MUesE_C_Ia8U-rJRsqRGRzkZJno2dsIsrMmoQMIo,770
114
115
  together/types/fine_tuning_list_checkpoints_response.py,sha256=9S0kRl7ItqFU6CeodrB9jb1zgf7-Ehb7VGjsbKq_hBY,377
115
116
  together/types/fine_tuning_list_events_response.py,sha256=DeDJLF1IxQV47HOwfuVt8Zis5W2CKs3iKkKvwDxyswk,309
116
- together/types/fine_tuning_list_response.py,sha256=mts9EumF7mhC4wdnq22irx1YRutV10nSGwt2YlE_Gu0,5394
117
+ together/types/fine_tuning_list_response.py,sha256=4owaCLVcmOWWlSVEQ7x3DZlJ-PPMlIymWkfj8vZ8ObI,5597
117
118
  together/types/finetune_event.py,sha256=0apAXe6Anx2_ffse2pOBJDxngCeuSvuDMYczZ0DtzZg,787
118
119
  together/types/finetune_event_type.py,sha256=Bm4lkBhsLI_kaD5yabsvW6BpnjXzZO_lwDtiEeMNXnw,824
119
120
  together/types/finetune_response.py,sha256=BrdlilnNFAenIR73cbu9Oj2IIIgudqTD_Qcpo_KGqmg,4289
120
121
  together/types/hardware_list_params.py,sha256=BbfiigtdQE0QNGFGr6o-Twg912x_riH5mbUNpZWYWO4,435
121
- together/types/hardware_list_response.py,sha256=cUhOyWYc_Z8-FRBHUgNgA3fI0XTfPgUq1SgkVpSNdBk,1463
122
+ together/types/hardware_list_response.py,sha256=KfGhnEy7qEW2Bzt4Q8b-JSvxG-IKIIFfcpWEQHS9YdM,1732
122
123
  together/types/image_data_b64.py,sha256=pLY7JDBb1HF1T29ACbae_xn6JQfttpqQVeG_jJeenZU,284
123
124
  together/types/image_data_url.py,sha256=6A_EYNfcR6Z6sZkyC4MThxeZnK2cvTuQn6-A1dXM85w,274
124
125
  together/types/image_file.py,sha256=sADh0UcrGlemkreIvHBEBizstAvt64CVOu7KtOALcHk,569
125
- together/types/image_generate_params.py,sha256=siOZ7I-pVD61nx3nIwCw7HfMgK-u1SJkMMdUs-7Akkw,2488
126
+ together/types/image_generate_params.py,sha256=bdOsD1NXYjCq8QT27wCd8P1hGWIfCd70E8u6n8TLzGQ,2783
126
127
  together/types/job_list_response.py,sha256=y7tFXGH2dYD9PfVH2_2Rf6RDkWsW4olljXt5FnGO6UA,950
127
128
  together/types/job_retrieve_response.py,sha256=I4HHmSUCAVFuy2RkrZuanssaPLRkDmG_i0Qc192yRmM,880
128
129
  together/types/log_probs.py,sha256=A1DD9Cdb5G7bufrBiaMZC4HJ7v1NH5_zFEYvLgFY1NI,473
130
+ together/types/model_list_params.py,sha256=W1S2NtMJOsGGYo1Y01foP6BUYjovMgk7jOU6a3Yo4p8,319
129
131
  together/types/model_list_response.py,sha256=MvJLqK_tczrk8kCijb0HChLs706_pXJdf1EJgslON2w,273
130
132
  together/types/model_object.py,sha256=ixXrw0t4ZyGaINI69nG0uUVGjgTG9DNhlzeUaNxW7GY,745
131
133
  together/types/model_upload_params.py,sha256=8_mcHCUkmvTy0psgzTGZV2Gkw6RvNYNFVRo401i4Nfo,1033
@@ -138,14 +140,14 @@ together/types/tools_param.py,sha256=dRo4u37j5nyjhyU_yc2_l5smDOs76UhQluB-CMq8BMU
138
140
  together/types/training_method_dpo.py,sha256=INdq7tJYKBhY_Hwodn217h-9-7q4IX6mJdRN4P44vdQ,519
139
141
  together/types/training_method_sft.py,sha256=Ro9vRS2Kw9e5HENJ6BXLGZjqKsfTsrGLfoVljoOlHgw,453
140
142
  together/types/video_create_params.py,sha256=9Mx7TWTaPHOOpaMezz9FD5VC7hN6jGbnynGlUNPr8U0,2657
141
- together/types/video_job.py,sha256=E3YyxzPDXHv8aFjIqZ8NgokZbkVqOaNM5_ERQAjC6PE,1470
143
+ together/types/video_job.py,sha256=49S_V4lygUJUZR2x8vr_L39mUZV6YisXK3kuHEQXHOo,1740
142
144
  together/types/audio/__init__.py,sha256=FRPjWqhXrrSZgg615cnF6cWNqEowSovw__2V7BR3kgo,654
143
145
  together/types/audio/speech_create_params.py,sha256=SwoTcRMG5NnO_LpT3eAXFfOqqxyFh6C-cU8mtY2v4lk,2867
144
- together/types/audio/transcription_create_params.py,sha256=pKjDwN2DUcJG3yVjfw-WmZ68PURwxojJqem3p_5-rJU,1788
146
+ together/types/audio/transcription_create_params.py,sha256=utzevQa2y_fiznVYVIUK7J76HzH_YWgLsvtbtFIH_Gs,2156
145
147
  together/types/audio/transcription_create_response.py,sha256=z8_pzJlzYjP4QxJhwbKuDgAeVpWbgee6jt3QLFVVSjM,3059
146
148
  together/types/audio/translation_create_params.py,sha256=RjKaaR2RNSE4DxuBHCBKDURxxqalZJmApIhtmDV7MBM,1140
147
149
  together/types/audio/translation_create_response.py,sha256=T6SUCExVMin1qSGamHuiWGWS84MZ92tZPBHD7NYm4IU,1843
148
- together/types/audio/voice_list_response.py,sha256=WhwOb2tOh96nCTPp1IZZRKv0qM9yjj5s5eLKKbh5SfI,384
150
+ together/types/audio/voice_list_response.py,sha256=vS2yvGBz7U2cxnJkEr7BewT7j5ActDjn99k3QhhEKk4,517
149
151
  together/types/chat/__init__.py,sha256=XuRK_yunfmDRsbxLftYqP_yl51m8hpM6iqPGJGnUx_Y,997
150
152
  together/types/chat/chat_completion.py,sha256=0mpjMaALiX-LHSQbtwRdKmENpHcLBi_DQksT1kIM4xU,1361
151
153
  together/types/chat/chat_completion_chunk.py,sha256=UwCs1yDwJgRSOCwyvdbyqFyOAj0eXOSg-eswk5pSn-k,1381
@@ -154,11 +156,11 @@ together/types/chat/chat_completion_structured_message_text_param.py,sha256=ogWM
154
156
  together/types/chat/chat_completion_structured_message_video_url_param.py,sha256=i0VjxkE6xEYr11YBkOd2pkDSu01EiTbYjFDAkt0RE0g,504
155
157
  together/types/chat/chat_completion_usage.py,sha256=tkDp4y7jzxFKtK3tXe_bJb7Coew-nt8u3S7bZCvcVXo,269
156
158
  together/types/chat/chat_completion_warning.py,sha256=_Dp7YKlxyY2HeZopTvT-Go7qqKsbj3h_Vv06uLzgsTU,216
157
- together/types/chat/completion_create_params.py,sha256=xPv9X0dtBuPt9wnDm7wlncgGjGZJGkK8P6sFIGhc6WY,10954
159
+ together/types/chat/completion_create_params.py,sha256=Ia2dWuVxjderCRfpqV4Zpl-9rVng0p8deILUXVC3O0s,13687
158
160
  together/types/code_interpreter/__init__.py,sha256=dAXfb3ryLMtcBalCfxxNu2wJVswVP8G1xXryZnahPQY,201
159
161
  together/types/code_interpreter/session_list_response.py,sha256=TRxLGFTmIY-KLpStKjJtsrm4EI6BBvakpx43B6pkhnw,662
160
- together-2.0.0a8.dist-info/METADATA,sha256=wKEnBkQ3JVtV1vsOSkEuDgY09al1sL7Xj9ikv1xaio8,20202
161
- together-2.0.0a8.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
162
- together-2.0.0a8.dist-info/entry_points.txt,sha256=4f4RAX89wQkx3AnfHXiGrKyg2fCPnwMd2UdPX48OczA,55
163
- together-2.0.0a8.dist-info/licenses/LICENSE,sha256=5I5MO2DiiBFcD_p4ZF2T4GDb-WeBMD591ALtADdtXDc,11338
164
- together-2.0.0a8.dist-info/RECORD,,
162
+ together-2.0.0a10.dist-info/METADATA,sha256=w9kCFvckPuJ7x5S6JIi7g6O9-Ah9ixwOVCgQajuHp9Q,20247
163
+ together-2.0.0a10.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
164
+ together-2.0.0a10.dist-info/entry_points.txt,sha256=4f4RAX89wQkx3AnfHXiGrKyg2fCPnwMd2UdPX48OczA,55
165
+ together-2.0.0a10.dist-info/licenses/LICENSE,sha256=5I5MO2DiiBFcD_p4ZF2T4GDb-WeBMD591ALtADdtXDc,11338
166
+ together-2.0.0a10.dist-info/RECORD,,
@@ -1,35 +0,0 @@
1
- from typing import List
2
- from typing_extensions import TypeAlias
3
-
4
- from together import Together
5
- from together._models import BaseModel
6
- from together.types.model_list_response import ModelListResponse
7
-
8
-
9
- class DedicatedModel(BaseModel):
10
- name: str
11
- id: str
12
-
13
-
14
- ModelList: TypeAlias = List[DedicatedModel]
15
-
16
-
17
- def filter_by_dedicated_models(client: Together, models: ModelListResponse) -> ModelListResponse:
18
- """
19
- Filter models based on dedicated model response.
20
-
21
- Args:
22
- models (List[BaseModel]): List of all models
23
- dedicated_response (APIResponse): Response from autoscale models endpoint
24
-
25
- Returns:
26
- List[BaseModel]: Filtered list of models
27
- """
28
- dedicated_models = client.get("/autoscale/models", cast_to=ModelList)
29
-
30
- # Create a set of dedicated model names for efficient lookup
31
- dedicated_model_names = {model.name for model in dedicated_models}
32
-
33
- # Filter models to only include those in dedicated_model_names
34
- # Note: The model.id from ModelObject matches the name field in the autoscale response
35
- return [model for model in models if model.id in dedicated_model_names]