together 1.5.3__py3-none-any.whl → 1.5.4__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.
together/client.py CHANGED
@@ -7,6 +7,7 @@ from typing import Dict, TYPE_CHECKING
7
7
  from together import resources
8
8
  from together.constants import BASE_URL, MAX_RETRIES, TIMEOUT_SECS
9
9
  from together.error import AuthenticationError
10
+ from together.resources.code_interpreter import CodeInterpreter
10
11
  from together.types import TogetherClient
11
12
  from together.utils import enforce_trailing_slash
12
13
  from together.utils.api_helpers import get_google_colab_secret
@@ -22,6 +23,7 @@ class Together:
22
23
  fine_tuning: resources.FineTuning
23
24
  rerank: resources.Rerank
24
25
  audio: resources.Audio
26
+ code_interpreter: CodeInterpreter
25
27
 
26
28
  # client options
27
29
  client: TogetherClient
@@ -87,6 +89,7 @@ class Together:
87
89
  self.rerank = resources.Rerank(self.client)
88
90
  self.audio = resources.Audio(self.client)
89
91
  self.endpoints = resources.Endpoints(self.client)
92
+ self.code_interpreter = CodeInterpreter(self.client)
90
93
 
91
94
 
92
95
  class AsyncTogether:
@@ -98,6 +101,7 @@ class AsyncTogether:
98
101
  models: resources.AsyncModels
99
102
  fine_tuning: resources.AsyncFineTuning
100
103
  rerank: resources.AsyncRerank
104
+ code_interpreter: CodeInterpreter
101
105
 
102
106
  # client options
103
107
  client: TogetherClient
@@ -161,6 +165,7 @@ class AsyncTogether:
161
165
  self.models = resources.AsyncModels(self.client)
162
166
  self.fine_tuning = resources.AsyncFineTuning(self.client)
163
167
  self.rerank = resources.AsyncRerank(self.client)
168
+ self.code_interpreter = CodeInterpreter(self.client)
164
169
 
165
170
 
166
171
  Client = Together
@@ -0,0 +1,58 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Dict, Literal, Optional
4
+
5
+ from together.abstract import api_requestor
6
+ from together.together_response import TogetherResponse
7
+ from together.types import TogetherClient, TogetherRequest
8
+ from together.types.code_interpreter import ExecuteResponse
9
+
10
+
11
+ class CodeInterpreter:
12
+ """Code Interpreter resource for executing code snippets."""
13
+
14
+ def __init__(self, client: TogetherClient) -> None:
15
+ self._client = client
16
+
17
+ def run(
18
+ self,
19
+ code: str,
20
+ language: Literal["python"],
21
+ session_id: Optional[str] = None,
22
+ ) -> ExecuteResponse:
23
+ """Execute a code snippet.
24
+
25
+ Args:
26
+ code (str): Code snippet to execute
27
+ language (str): Programming language for the code to execute. Currently only supports Python.
28
+ session_id (str, optional): Identifier of the current session. Used to make follow-up calls.
29
+
30
+ Returns:
31
+ ExecuteResponse: Object containing execution results and outputs
32
+ """
33
+ requestor = api_requestor.APIRequestor(
34
+ client=self._client,
35
+ )
36
+
37
+ data: Dict[str, str] = {
38
+ "code": code,
39
+ "language": language,
40
+ }
41
+
42
+ if session_id is not None:
43
+ data["session_id"] = session_id
44
+
45
+ # Use absolute URL to bypass the /v1 prefix
46
+ response, _, _ = requestor.request(
47
+ options=TogetherRequest(
48
+ method="POST",
49
+ url="/tci/execute",
50
+ params=data,
51
+ ),
52
+ stream=False,
53
+ )
54
+
55
+ assert isinstance(response, TogetherResponse)
56
+
57
+ # Return the response data directly since our types match the API structure
58
+ return ExecuteResponse(**response.data)
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Dict, Literal, Union
4
+
5
+ from pydantic import Field
6
+
7
+ from together.types.endpoints import TogetherJSONModel
8
+
9
+
10
+ class InterpreterOutput(TogetherJSONModel):
11
+ """Base class for interpreter output types."""
12
+
13
+ type: Literal["stdout", "stderr", "error", "display_data", "execute_result"] = (
14
+ Field(description="The type of output")
15
+ )
16
+ data: Union[str, Dict[str, Any]] = Field(description="The output data")
17
+
18
+
19
+ class ExecuteResponseData(TogetherJSONModel):
20
+ """Data from code execution response."""
21
+
22
+ outputs: list[InterpreterOutput] = Field(
23
+ description="List of outputs from execution", default_factory=list
24
+ )
25
+ errors: Union[str, None] = Field(
26
+ description="Any errors that occurred during execution", default=None
27
+ )
28
+ session_id: str = Field(
29
+ description="Identifier of the current session. Used to make follow-up calls."
30
+ )
31
+ status: str = Field(description="Status of the execution", default="completed")
32
+
33
+
34
+ class ExecuteResponse(TogetherJSONModel):
35
+ """Response from code execution."""
36
+
37
+ data: ExecuteResponseData = Field(
38
+ description="The response data containing outputs and session information"
39
+ )
40
+
41
+
42
+ __all__ = [
43
+ "InterpreterOutput",
44
+ "ExecuteResponseData",
45
+ "ExecuteResponse",
46
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: together
3
- Version: 1.5.3
3
+ Version: 1.5.4
4
4
  Summary: Python client for Together's Cloud Platform!
5
5
  License: Apache-2.0
6
6
  Author: Together AI
@@ -12,7 +12,7 @@ together/cli/api/images.py,sha256=GADSeaNUHUVMtWovmccGuKc28IJ9E_v4vAEwYHJhu5o,26
12
12
  together/cli/api/models.py,sha256=CXw8B1hqNkadogi58GIXhLg_dTJnvTBaE7Kq1_xQ-10,1423
13
13
  together/cli/api/utils.py,sha256=IuqYWPnLI38_Bqd7lj8V_SnGdYc59pRmMbQmciS4FsM,1326
14
14
  together/cli/cli.py,sha256=YCDzbXpC5is0rs2PEkUPrIhYuzdyrihQ8GVR_TlDv5s,2054
15
- together/client.py,sha256=KKmO0LadgAyj8AXKrJCYwLDyxR7_CUB4uTmay1eiyFE,5420
15
+ together/client.py,sha256=lN_KfJs2gCdLfQ5GBrVKin-4ZL7L7UQf9wjofWQ7sXg,5682
16
16
  together/constants.py,sha256=UDJhEylJFmdm4bedBDpvqYXBj5Or3k7z9GWtkRY_dZQ,1526
17
17
  together/error.py,sha256=HU6247CyzCFjaxL9A0XYbXZ6fY_ebRg0FEYjI4Skogs,5515
18
18
  together/filemanager.py,sha256=QHhBn73oVFdgUpSYXYLmJzHJ9c5wYEMJC0ur6ZgDeYo,11269
@@ -29,6 +29,7 @@ together/resources/audio/__init__.py,sha256=e7xp0Lkp_nMAHXcuFHS7dLXP_YqTPMMZIilW
29
29
  together/resources/audio/speech.py,sha256=81ib_gIo-Rxoaipx2Pi9ZsKnOTjeFPwSlBrcUkyX5xk,5211
30
30
  together/resources/chat/__init__.py,sha256=RsTptdP8MeGjcdIjze896-J27cRvCbUoMft0X2BVlQ8,617
31
31
  together/resources/chat/completions.py,sha256=jYiNZsWa8RyEacL0VgxWj1egJ857oU4nxIY8uqGHcaU,14459
32
+ together/resources/code_interpreter.py,sha256=gkzBgGZ6XckrUIB_ml0ju3_ACtNT3116cqYFeupyYKM,1788
32
33
  together/resources/completions.py,sha256=5Wa-ZjPCxRcam6CDe7KgGYlTA7yJZMmd5TrRgGCL_ug,11726
33
34
  together/resources/embeddings.py,sha256=PTvLb82yjG_-iQOyuhsilp77Fr7gZ0o6WD2KeRnKoxs,2675
34
35
  together/resources/endpoints.py,sha256=NNjp-wyzOotzlscGGrANhOHxQBjHTN8f5kTQTH_CLvE,17177
@@ -42,6 +43,7 @@ together/types/__init__.py,sha256=PBhPpJklsF5-IiI2aWLK2Srhb36m0v93jR8xv8G7Q_0,27
42
43
  together/types/abstract.py,sha256=1lFQI_3WjsR_t1128AeKW0aTk6EiM6Gh1J3ZuyLLPao,642
43
44
  together/types/audio_speech.py,sha256=jlj8BZf3dkIDARF1P11fuenVLj4try8Yx4RN-EAkhOU,2609
44
45
  together/types/chat_completions.py,sha256=ggwt1LlBXTB_hZKbtLsjg8j-gXxO8pUUQfTrxUmRXHU,5078
46
+ together/types/code_interpreter.py,sha256=Ali8Prv9TXqcvCMeYffWbOsTmljs8sgvWIY3-kkcQ7M,1331
45
47
  together/types/common.py,sha256=kxZ-N9xtBsGYZBmbIWnZ0rfT3Pn8PFB7sAbp3iv96pw,1525
46
48
  together/types/completions.py,sha256=o3FR5ixsTUj-a3pmOUzbSQg-hESVhpqrC9UD__VCqr4,2971
47
49
  together/types/embeddings.py,sha256=J7grkYYn7xhqeKaBO2T-8XQRtHhkzYzymovtGdIUK5A,751
@@ -58,8 +60,8 @@ together/utils/api_helpers.py,sha256=2K0O6qeEQ2zVFvi5NBN5m2kjZJaS3-JfKFecQ7SmGaw
58
60
  together/utils/files.py,sha256=rfp10qU0urtWOXXFeasFtO9xp-1KIhM3S43JxcnHmL0,16438
59
61
  together/utils/tools.py,sha256=H2MTJhEqtBllaDvOyZehIO_IVNK3P17rSDeILtJIVag,2964
60
62
  together/version.py,sha256=p03ivHyE0SyWU4jAnRTBi_sOwywVWoZPU4g2gzRgG-Y,126
61
- together-1.5.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
62
- together-1.5.3.dist-info/METADATA,sha256=AtudiOCi4iPbIEH45ErsqRa1hdTLQgAU_g1UQ3dkSKc,14397
63
- together-1.5.3.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
64
- together-1.5.3.dist-info/entry_points.txt,sha256=G-b5NKW6lUUf1V1fH8IPTBb7jXnK7lhbX9H1zTEJXPs,50
65
- together-1.5.3.dist-info/RECORD,,
63
+ together-1.5.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
64
+ together-1.5.4.dist-info/METADATA,sha256=E4OMaDCtldMKAzl55Fr56riUmPpfj287kvheY3DDRUE,14397
65
+ together-1.5.4.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
66
+ together-1.5.4.dist-info/entry_points.txt,sha256=G-b5NKW6lUUf1V1fH8IPTBb7jXnK7lhbX9H1zTEJXPs,50
67
+ together-1.5.4.dist-info/RECORD,,