together 1.2.11__py3-none-any.whl → 2.0.0a8__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 (201) hide show
  1. together/__init__.py +101 -63
  2. together/_base_client.py +1995 -0
  3. together/_client.py +1033 -0
  4. together/_compat.py +219 -0
  5. together/_constants.py +14 -0
  6. together/_exceptions.py +108 -0
  7. together/_files.py +123 -0
  8. together/_models.py +857 -0
  9. together/_qs.py +150 -0
  10. together/_resource.py +43 -0
  11. together/_response.py +830 -0
  12. together/_streaming.py +370 -0
  13. together/_types.py +260 -0
  14. together/_utils/__init__.py +64 -0
  15. together/_utils/_compat.py +45 -0
  16. together/_utils/_datetime_parse.py +136 -0
  17. together/_utils/_logs.py +25 -0
  18. together/_utils/_proxy.py +65 -0
  19. together/_utils/_reflection.py +42 -0
  20. together/_utils/_resources_proxy.py +24 -0
  21. together/_utils/_streams.py +12 -0
  22. together/_utils/_sync.py +58 -0
  23. together/_utils/_transform.py +457 -0
  24. together/_utils/_typing.py +156 -0
  25. together/_utils/_utils.py +421 -0
  26. together/_version.py +4 -0
  27. together/lib/.keep +4 -0
  28. together/lib/__init__.py +23 -0
  29. together/lib/cli/api/endpoints.py +467 -0
  30. together/lib/cli/api/evals.py +588 -0
  31. together/{cli → lib/cli}/api/files.py +20 -17
  32. together/lib/cli/api/fine_tuning.py +566 -0
  33. together/lib/cli/api/models.py +140 -0
  34. together/lib/cli/api/utils.py +50 -0
  35. together/{cli → lib/cli}/cli.py +17 -23
  36. together/lib/constants.py +61 -0
  37. together/lib/resources/__init__.py +11 -0
  38. together/lib/resources/files.py +999 -0
  39. together/lib/resources/fine_tuning.py +280 -0
  40. together/lib/resources/models.py +35 -0
  41. together/lib/types/__init__.py +13 -0
  42. together/lib/types/error.py +9 -0
  43. together/lib/types/fine_tuning.py +455 -0
  44. together/{utils → lib/utils}/__init__.py +7 -10
  45. together/{utils → lib/utils}/_log.py +18 -13
  46. together/lib/utils/files.py +628 -0
  47. together/lib/utils/serializer.py +10 -0
  48. together/{utils → lib/utils}/tools.py +17 -2
  49. together/resources/__init__.py +225 -24
  50. together/resources/audio/__init__.py +75 -0
  51. together/resources/audio/audio.py +198 -0
  52. together/resources/audio/speech.py +605 -0
  53. together/resources/audio/transcriptions.py +282 -0
  54. together/resources/audio/translations.py +256 -0
  55. together/resources/audio/voices.py +135 -0
  56. together/resources/batches.py +417 -0
  57. together/resources/chat/__init__.py +30 -21
  58. together/resources/chat/chat.py +102 -0
  59. together/resources/chat/completions.py +1063 -257
  60. together/resources/code_interpreter/__init__.py +33 -0
  61. together/resources/code_interpreter/code_interpreter.py +258 -0
  62. together/resources/code_interpreter/sessions.py +135 -0
  63. together/resources/completions.py +890 -225
  64. together/resources/embeddings.py +172 -68
  65. together/resources/endpoints.py +711 -0
  66. together/resources/evals.py +452 -0
  67. together/resources/files.py +397 -120
  68. together/resources/fine_tuning.py +1033 -0
  69. together/resources/hardware.py +181 -0
  70. together/resources/images.py +256 -108
  71. together/resources/jobs.py +214 -0
  72. together/resources/models.py +251 -44
  73. together/resources/rerank.py +190 -92
  74. together/resources/videos.py +374 -0
  75. together/types/__init__.py +66 -73
  76. together/types/audio/__init__.py +10 -0
  77. together/types/audio/speech_create_params.py +75 -0
  78. together/types/audio/transcription_create_params.py +54 -0
  79. together/types/audio/transcription_create_response.py +111 -0
  80. together/types/audio/translation_create_params.py +40 -0
  81. together/types/audio/translation_create_response.py +70 -0
  82. together/types/audio/voice_list_response.py +23 -0
  83. together/types/audio_speech_stream_chunk.py +16 -0
  84. together/types/autoscaling.py +13 -0
  85. together/types/autoscaling_param.py +15 -0
  86. together/types/batch_create_params.py +24 -0
  87. together/types/batch_create_response.py +14 -0
  88. together/types/batch_job.py +45 -0
  89. together/types/batch_list_response.py +10 -0
  90. together/types/chat/__init__.py +18 -0
  91. together/types/chat/chat_completion.py +60 -0
  92. together/types/chat/chat_completion_chunk.py +61 -0
  93. together/types/chat/chat_completion_structured_message_image_url_param.py +18 -0
  94. together/types/chat/chat_completion_structured_message_text_param.py +13 -0
  95. together/types/chat/chat_completion_structured_message_video_url_param.py +18 -0
  96. together/types/chat/chat_completion_usage.py +13 -0
  97. together/types/chat/chat_completion_warning.py +9 -0
  98. together/types/chat/completion_create_params.py +329 -0
  99. together/types/code_interpreter/__init__.py +5 -0
  100. together/types/code_interpreter/session_list_response.py +31 -0
  101. together/types/code_interpreter_execute_params.py +45 -0
  102. together/types/completion.py +42 -0
  103. together/types/completion_chunk.py +66 -0
  104. together/types/completion_create_params.py +138 -0
  105. together/types/dedicated_endpoint.py +44 -0
  106. together/types/embedding.py +24 -0
  107. together/types/embedding_create_params.py +31 -0
  108. together/types/endpoint_create_params.py +43 -0
  109. together/types/endpoint_list_avzones_response.py +11 -0
  110. together/types/endpoint_list_params.py +18 -0
  111. together/types/endpoint_list_response.py +41 -0
  112. together/types/endpoint_update_params.py +27 -0
  113. together/types/eval_create_params.py +263 -0
  114. together/types/eval_create_response.py +16 -0
  115. together/types/eval_list_params.py +21 -0
  116. together/types/eval_list_response.py +10 -0
  117. together/types/eval_status_response.py +100 -0
  118. together/types/evaluation_job.py +139 -0
  119. together/types/execute_response.py +108 -0
  120. together/types/file_delete_response.py +13 -0
  121. together/types/file_list.py +12 -0
  122. together/types/file_purpose.py +9 -0
  123. together/types/file_response.py +31 -0
  124. together/types/file_type.py +7 -0
  125. together/types/fine_tuning_cancel_response.py +194 -0
  126. together/types/fine_tuning_content_params.py +24 -0
  127. together/types/fine_tuning_delete_params.py +11 -0
  128. together/types/fine_tuning_delete_response.py +12 -0
  129. together/types/fine_tuning_list_checkpoints_response.py +21 -0
  130. together/types/fine_tuning_list_events_response.py +12 -0
  131. together/types/fine_tuning_list_response.py +199 -0
  132. together/types/finetune_event.py +41 -0
  133. together/types/finetune_event_type.py +33 -0
  134. together/types/finetune_response.py +177 -0
  135. together/types/hardware_list_params.py +16 -0
  136. together/types/hardware_list_response.py +58 -0
  137. together/types/image_data_b64.py +15 -0
  138. together/types/image_data_url.py +15 -0
  139. together/types/image_file.py +23 -0
  140. together/types/image_generate_params.py +85 -0
  141. together/types/job_list_response.py +47 -0
  142. together/types/job_retrieve_response.py +43 -0
  143. together/types/log_probs.py +18 -0
  144. together/types/model_list_response.py +10 -0
  145. together/types/model_object.py +42 -0
  146. together/types/model_upload_params.py +36 -0
  147. together/types/model_upload_response.py +23 -0
  148. together/types/rerank_create_params.py +36 -0
  149. together/types/rerank_create_response.py +36 -0
  150. together/types/tool_choice.py +23 -0
  151. together/types/tool_choice_param.py +23 -0
  152. together/types/tools_param.py +23 -0
  153. together/types/training_method_dpo.py +22 -0
  154. together/types/training_method_sft.py +18 -0
  155. together/types/video_create_params.py +86 -0
  156. together/types/video_job.py +57 -0
  157. together-2.0.0a8.dist-info/METADATA +680 -0
  158. together-2.0.0a8.dist-info/RECORD +164 -0
  159. {together-1.2.11.dist-info → together-2.0.0a8.dist-info}/WHEEL +1 -1
  160. together-2.0.0a8.dist-info/entry_points.txt +2 -0
  161. {together-1.2.11.dist-info → together-2.0.0a8.dist-info/licenses}/LICENSE +1 -1
  162. together/abstract/api_requestor.py +0 -723
  163. together/cli/api/chat.py +0 -276
  164. together/cli/api/completions.py +0 -119
  165. together/cli/api/finetune.py +0 -272
  166. together/cli/api/images.py +0 -82
  167. together/cli/api/models.py +0 -42
  168. together/client.py +0 -157
  169. together/constants.py +0 -31
  170. together/error.py +0 -191
  171. together/filemanager.py +0 -388
  172. together/legacy/__init__.py +0 -0
  173. together/legacy/base.py +0 -27
  174. together/legacy/complete.py +0 -93
  175. together/legacy/embeddings.py +0 -27
  176. together/legacy/files.py +0 -146
  177. together/legacy/finetune.py +0 -177
  178. together/legacy/images.py +0 -27
  179. together/legacy/models.py +0 -44
  180. together/resources/finetune.py +0 -489
  181. together/together_response.py +0 -50
  182. together/types/abstract.py +0 -26
  183. together/types/chat_completions.py +0 -171
  184. together/types/common.py +0 -65
  185. together/types/completions.py +0 -104
  186. together/types/embeddings.py +0 -35
  187. together/types/error.py +0 -16
  188. together/types/files.py +0 -89
  189. together/types/finetune.py +0 -265
  190. together/types/images.py +0 -42
  191. together/types/models.py +0 -44
  192. together/types/rerank.py +0 -43
  193. together/utils/api_helpers.py +0 -84
  194. together/utils/files.py +0 -204
  195. together/version.py +0 -6
  196. together-1.2.11.dist-info/METADATA +0 -408
  197. together-1.2.11.dist-info/RECORD +0 -58
  198. together-1.2.11.dist-info/entry_points.txt +0 -3
  199. /together/{abstract → lib/cli}/__init__.py +0 -0
  200. /together/{cli → lib/cli/api}/__init__.py +0 -0
  201. /together/{cli/api/__init__.py → py.typed} +0 -0
@@ -0,0 +1,50 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Literal
4
+ from gettext import gettext as _
5
+ from typing_extensions import override
6
+
7
+ import click
8
+
9
+
10
+ class AutoIntParamType(click.ParamType):
11
+ name = "integer_or_max"
12
+ _number_class = int
13
+
14
+ @override
15
+ def convert(
16
+ self, value: str, param: click.Parameter | None, ctx: click.Context | None
17
+ ) -> int | Literal["max"] | None:
18
+ if value == "max":
19
+ return "max"
20
+ try:
21
+ return int(value)
22
+ except ValueError:
23
+ self.fail(
24
+ _("{value!r} is not a valid {number_type}.").format(value=value, number_type=self.name),
25
+ param,
26
+ ctx,
27
+ )
28
+
29
+
30
+ class BooleanWithAutoParamType(click.ParamType):
31
+ name = "boolean_or_auto"
32
+
33
+ @override
34
+ def convert(
35
+ self, value: str, param: click.Parameter | None, ctx: click.Context | None
36
+ ) -> bool | Literal["auto"] | None:
37
+ if value == "auto":
38
+ return "auto"
39
+ try:
40
+ return bool(value)
41
+ except ValueError:
42
+ self.fail(
43
+ _("{value!r} is not a valid {type}.").format(value=value, type=self.name),
44
+ param,
45
+ ctx,
46
+ )
47
+
48
+
49
+ INT_WITH_MAX = AutoIntParamType()
50
+ BOOL_WITH_AUTO = BooleanWithAutoParamType()
@@ -6,19 +6,19 @@ from typing import Any
6
6
  import click
7
7
 
8
8
  import together
9
- from together.cli.api.chat import chat, interactive
10
- from together.cli.api.completions import completions
11
- from together.cli.api.files import files
12
- from together.cli.api.finetune import fine_tuning
13
- from together.cli.api.images import images
14
- from together.cli.api.models import models
15
- from together.constants import MAX_RETRIES, TIMEOUT_SECS
9
+ from together._version import __version__
10
+ from together._constants import DEFAULT_TIMEOUT
11
+ from together.lib.cli.api.evals import evals
12
+ from together.lib.cli.api.files import files
13
+ from together.lib.cli.api.models import models
14
+ from together.lib.cli.api.endpoints import endpoints
15
+ from together.lib.cli.api.fine_tuning import fine_tuning
16
16
 
17
17
 
18
- def print_version(ctx: click.Context, params: Any, value: Any) -> None:
18
+ def print_version(ctx: click.Context, _params: Any, value: Any) -> None:
19
19
  if not value or ctx.resilient_parsing:
20
20
  return
21
- click.echo(f"Version {together.version}")
21
+ click.echo(f"Version {__version__}")
22
22
  ctx.exit()
23
23
 
24
24
 
@@ -30,16 +30,12 @@ def print_version(ctx: click.Context, params: Any, value: Any) -> None:
30
30
  help="API Key. Defaults to environment variable `TOGETHER_API_KEY`",
31
31
  default=os.getenv("TOGETHER_API_KEY"),
32
32
  )
33
- @click.option(
34
- "--base-url", type=str, help="API Base URL. Defaults to Together AI endpoint."
35
- )
36
- @click.option(
37
- "--timeout", type=int, help=f"Request timeout. Defaults to {TIMEOUT_SECS} seconds"
38
- )
33
+ @click.option("--base-url", type=str, help="API Base URL. Defaults to Together AI endpoint.")
34
+ @click.option("--timeout", type=int, help=f"Request timeout. Defaults to {DEFAULT_TIMEOUT} seconds")
39
35
  @click.option(
40
36
  "--max-retries",
41
37
  type=int,
42
- help=f"Maximum number of HTTP retries. Defaults to {MAX_RETRIES}.",
38
+ help=f"Maximum number of HTTP retries.",
43
39
  )
44
40
  @click.option(
45
41
  "--version",
@@ -55,23 +51,21 @@ def main(
55
51
  api_key: str | None,
56
52
  base_url: str | None,
57
53
  timeout: int | None,
58
- max_retries: int | None,
59
54
  debug: bool | None,
55
+ max_retries: int | None,
60
56
  ) -> None:
61
57
  """This is a sample CLI tool."""
62
- together.log = "debug" if debug else None
58
+ os.environ.setdefault("TOGETHER_LOG", "debug" if debug else "info")
63
59
  ctx.obj = together.Together(
64
- api_key=api_key, base_url=base_url, timeout=timeout, max_retries=max_retries
60
+ api_key=api_key, base_url=base_url, timeout=timeout, max_retries=max_retries if max_retries is not None else 0
65
61
  )
66
62
 
67
63
 
68
- main.add_command(chat)
69
- main.add_command(interactive)
70
- main.add_command(completions)
71
- main.add_command(images)
72
64
  main.add_command(files)
73
65
  main.add_command(fine_tuning)
74
66
  main.add_command(models)
67
+ main.add_command(endpoints)
68
+ main.add_command(evals)
75
69
 
76
70
  if __name__ == "__main__":
77
71
  main()
@@ -0,0 +1,61 @@
1
+ import enum
2
+
3
+ # Session constants
4
+ # TIMEOUT_SECS = 600
5
+ # MAX_SESSION_LIFETIME_SECS = 180
6
+ # MAX_CONNECTION_RETRIES = 2
7
+ # MAX_RETRIES = 5
8
+ # INITIAL_RETRY_DELAY = 0.5
9
+ # MAX_RETRY_DELAY = 8.0
10
+
11
+ # API defaults
12
+ # BASE_URL = "https://api.together.xyz/v1"
13
+
14
+ # Download defaults
15
+ DOWNLOAD_BLOCK_SIZE = 10 * 1024 * 1024 # 10 MB
16
+ DISABLE_TQDM = False
17
+
18
+ # Upload defaults
19
+ MAX_CONCURRENT_PARTS = 4 # Maximum concurrent parts for multipart upload
20
+
21
+ # Multipart upload constants
22
+ MIN_PART_SIZE_MB = 5 # Minimum part size (S3 requirement)
23
+ TARGET_PART_SIZE_MB = 250 # Target part size for optimal performance
24
+ MAX_MULTIPART_PARTS = 250 # Maximum parts per upload (S3 limit)
25
+ MULTIPART_UPLOAD_TIMEOUT = 300 # Timeout in seconds for uploading each part
26
+ MULTIPART_THRESHOLD_GB = 5.0 # threshold for switching to multipart upload
27
+
28
+ # Minimum number of samples required for fine-tuning file
29
+ MIN_SAMPLES = 1
30
+
31
+ # the number of bytes in a gigabyte, used to convert bytes to GB for readable comparison
32
+ NUM_BYTES_IN_GB = 2**30
33
+
34
+ # maximum number of GB sized files we support finetuning for
35
+ MAX_FILE_SIZE_GB = 50.1
36
+
37
+ # expected columns for Parquet files
38
+ PARQUET_EXPECTED_COLUMNS = ["input_ids", "attention_mask", "labels"]
39
+
40
+
41
+ class DatasetFormat(enum.Enum):
42
+ """Dataset format enum."""
43
+
44
+ GENERAL = "general"
45
+ CONVERSATION = "conversation"
46
+ INSTRUCTION = "instruction"
47
+ PREFERENCE_OPENAI = "preference_openai"
48
+
49
+
50
+ JSONL_REQUIRED_COLUMNS_MAP = {
51
+ DatasetFormat.GENERAL: ["text"],
52
+ DatasetFormat.CONVERSATION: ["messages"],
53
+ DatasetFormat.INSTRUCTION: ["prompt", "completion"],
54
+ DatasetFormat.PREFERENCE_OPENAI: [
55
+ "input",
56
+ "preferred_output",
57
+ "non_preferred_output",
58
+ ],
59
+ }
60
+ REQUIRED_COLUMNS_MESSAGE = ["role", "content"]
61
+ POSSIBLE_ROLES_CONVERSATION = ["system", "user", "assistant"]
@@ -0,0 +1,11 @@
1
+ from .files import (
2
+ UploadManager,
3
+ DownloadManager,
4
+ AsyncUploadManager,
5
+ )
6
+
7
+ __all__ = [
8
+ "DownloadManager",
9
+ "UploadManager",
10
+ "AsyncUploadManager",
11
+ ]