lightning-sdk 2025.8.6rc1__py3-none-any.whl → 2025.8.6rc2__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.
- lightning_sdk/__init__.py +1 -1
- lightning_sdk/api/llm_api.py +48 -0
- lightning_sdk/llm/llm.py +3 -2
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/METADATA +1 -1
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/RECORD +9 -9
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/LICENSE +0 -0
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/WHEEL +0 -0
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/top_level.txt +0 -0
lightning_sdk/__init__.py
CHANGED
lightning_sdk/api/llm_api.py
CHANGED
|
@@ -4,9 +4,15 @@ import datetime
|
|
|
4
4
|
import json
|
|
5
5
|
import os
|
|
6
6
|
import threading
|
|
7
|
+
import time
|
|
7
8
|
import warnings
|
|
8
9
|
from typing import Any, AsyncGenerator, Dict, Generator, List, Optional, Union
|
|
10
|
+
from urllib.parse import urlencode
|
|
9
11
|
|
|
12
|
+
from rich.prompt import Confirm
|
|
13
|
+
|
|
14
|
+
from lightning_sdk.lightning_cloud import env
|
|
15
|
+
from lightning_sdk.lightning_cloud.login import Auth, AuthServer
|
|
10
16
|
from lightning_sdk.lightning_cloud.openapi.models import (
|
|
11
17
|
StreamResultOfV1ConversationResponseChunk,
|
|
12
18
|
V1ConversationResponseChunk,
|
|
@@ -15,6 +21,48 @@ from lightning_sdk.lightning_cloud.openapi.models import (
|
|
|
15
21
|
)
|
|
16
22
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
17
23
|
|
|
24
|
+
LITAI_CODE = os.environ.get("LITAI_CODE", "x334uv8t7v")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class _AuthServer(AuthServer):
|
|
28
|
+
def __init__(self, model: str, *args: Any, **kwargs: Any) -> None:
|
|
29
|
+
self._model = model
|
|
30
|
+
super().__init__(*args, **kwargs)
|
|
31
|
+
|
|
32
|
+
def get_auth_url(self, port: int) -> str:
|
|
33
|
+
redirect_uri = f"http://localhost:{port}/login-complete"
|
|
34
|
+
params = urlencode({"redirectTo": redirect_uri, "okbhrt": LITAI_CODE, "litaimodel": self._model})
|
|
35
|
+
return f"{env.LIGHTNING_CLOUD_URL}/sign-in?{params}"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class _AuthLitAI(Auth):
|
|
39
|
+
def __init__(self, model: str, shall_confirm: bool = False) -> None:
|
|
40
|
+
super().__init__()
|
|
41
|
+
self._model = model
|
|
42
|
+
self._shall_confirm = shall_confirm
|
|
43
|
+
|
|
44
|
+
def _run_server(self) -> None:
|
|
45
|
+
if self._shall_confirm:
|
|
46
|
+
proceed = Confirm.ask(
|
|
47
|
+
"[bold yellow]LitAI needs to authenticate with Lightning AI.[/bold yellow]\n"
|
|
48
|
+
"This will open a browser window for login.\n"
|
|
49
|
+
"Do you want to continue?",
|
|
50
|
+
default=True,
|
|
51
|
+
)
|
|
52
|
+
if not proceed:
|
|
53
|
+
raise RuntimeError(
|
|
54
|
+
"Login cancelled. Please login at https://lightning.ai/sign-up. Or run `lightning login` to login."
|
|
55
|
+
)
|
|
56
|
+
print("Opening browser for authentication...")
|
|
57
|
+
print("Please come back to the terminal after logging in.")
|
|
58
|
+
time.sleep(1)
|
|
59
|
+
_AuthServer(self._model).login_with_browser(self)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def authenticate(model: str, shall_confirm: bool = True) -> None:
|
|
63
|
+
auth = _AuthLitAI(model, shall_confirm)
|
|
64
|
+
auth.authenticate()
|
|
65
|
+
|
|
18
66
|
|
|
19
67
|
class LLMApi:
|
|
20
68
|
def __init__(self) -> None:
|
lightning_sdk/llm/llm.py
CHANGED
|
@@ -2,7 +2,7 @@ import os
|
|
|
2
2
|
from typing import Any, AsyncGenerator, ClassVar, Dict, Generator, List, Optional, Tuple, Union
|
|
3
3
|
|
|
4
4
|
from lightning_sdk.api import TeamspaceApi, UserApi
|
|
5
|
-
from lightning_sdk.api.llm_api import LLMApi
|
|
5
|
+
from lightning_sdk.api.llm_api import LLMApi, authenticate
|
|
6
6
|
from lightning_sdk.lightning_cloud.openapi.models.v1_conversation_response_chunk import V1ConversationResponseChunk
|
|
7
7
|
from lightning_sdk.llm.public_assistants import PUBLIC_MODELS
|
|
8
8
|
|
|
@@ -56,9 +56,9 @@ class LLM:
|
|
|
56
56
|
"(e.g., 'my-org/my-teamspace')."
|
|
57
57
|
) from e
|
|
58
58
|
|
|
59
|
+
self._model_provider, self._model_name = self._parse_model_name(name)
|
|
59
60
|
self._get_auth_info(teamspace_name)
|
|
60
61
|
|
|
61
|
-
self._model_provider, self._model_name = self._parse_model_name(name)
|
|
62
62
|
self._enable_async = enable_async
|
|
63
63
|
|
|
64
64
|
# Reuse LLMApi per teamspace (as billing is based on teamspace)
|
|
@@ -98,6 +98,7 @@ class LLM:
|
|
|
98
98
|
if teamspace_name is None:
|
|
99
99
|
# local users with no given teamspace
|
|
100
100
|
try:
|
|
101
|
+
authenticate(model=f"{self.provider}/{self.name}")
|
|
101
102
|
teamspace_api = TeamspaceApi()
|
|
102
103
|
user_api = UserApi()
|
|
103
104
|
authed_user = user_api._client.auth_service_get_user()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
docs/source/conf.py,sha256=r8yX20eC-4mHhMTd0SbQb5TlSWHhO6wnJ0VJ_FBFpag,13249
|
|
2
|
-
lightning_sdk/__init__.py,sha256=
|
|
2
|
+
lightning_sdk/__init__.py,sha256=RU76LC0UCj27gaVXAzO6X0pZVp3K7w14hQhPwc_7rOA,1148
|
|
3
3
|
lightning_sdk/agents.py,sha256=ly6Ma1j0ZgGPFyvPvMN28JWiB9dATIstFa5XM8pMi6I,1577
|
|
4
4
|
lightning_sdk/ai_hub.py,sha256=iI1vNhgcz_Ff1c3rN1ogN7dK-r-HXRj6NMtS2cA14UA,6925
|
|
5
5
|
lightning_sdk/base_studio.py,sha256=_Pwwl37R9GRd7t-f2kO5aQXiLNrP4sUtUNht2ZkP8LE,3678
|
|
@@ -26,7 +26,7 @@ lightning_sdk/api/deployment_api.py,sha256=v2AfoTDkQ-1CBh75FOjFkRpf6yc3U_edDy43u
|
|
|
26
26
|
lightning_sdk/api/job_api.py,sha256=7spFPyotlSQ0Krx6WymslnpSQaaeOmFkydvhtg6p0Ic,16410
|
|
27
27
|
lightning_sdk/api/license_api.py,sha256=XV3RhefyPQDYjwY9AaBZe4rByZTEAnsvLDxcdm9q0Wo,2438
|
|
28
28
|
lightning_sdk/api/lit_container_api.py,sha256=jCJVwd-3MNjejL9FyvH89pzt-SeG3G8qCJD16iTMJAQ,11454
|
|
29
|
-
lightning_sdk/api/llm_api.py,sha256=
|
|
29
|
+
lightning_sdk/api/llm_api.py,sha256=HSCpTyPknKAv6j0UYIzasXK2mFYt7FE3KF5TGUYvo2w,11049
|
|
30
30
|
lightning_sdk/api/mmt_api.py,sha256=hIBsGiJ2qn5UjcHDxP5WUyKGT_AIFfpSHrQVwg0afBw,10699
|
|
31
31
|
lightning_sdk/api/org_api.py,sha256=Ze3z_ATVrukobujV5YdC42DKj45Vuwl7X52q_Vr-o3U,803
|
|
32
32
|
lightning_sdk/api/pipeline_api.py,sha256=rJYp_FN7uUjC5xbc6K67l2eRSmVuOkijd5i8Nm5BF7I,4621
|
|
@@ -1081,7 +1081,7 @@ lightning_sdk/lightning_cloud/utils/dataset.py,sha256=4nUspe8iAaRPgSYpXA2uAQCgyd
|
|
|
1081
1081
|
lightning_sdk/lightning_cloud/utils/name_generator.py,sha256=MkciuA10332V0mcE2PxLIiwWomWE0Fm_gNGK01vwRr4,58046
|
|
1082
1082
|
lightning_sdk/lightning_cloud/utils/network.py,sha256=axPgl8rhyPcPjxiztDxyksfxax3VNg2OXL5F5Uc81b4,406
|
|
1083
1083
|
lightning_sdk/llm/__init__.py,sha256=ErZva0HqN2iPtK_6hI6GN7A_HPGNrHo3wYh7vyFdO3Q,57
|
|
1084
|
-
lightning_sdk/llm/llm.py,sha256=
|
|
1084
|
+
lightning_sdk/llm/llm.py,sha256=zWUUymFi2gzx4e3M-Uv3vrEPPAnBACcdQJGylIDoRbk,15659
|
|
1085
1085
|
lightning_sdk/llm/public_assistants.py,sha256=ZhzHGJtg_XhPKj4w9xtjHDuBW_iSUUoqGfXqvM8kL8c,955
|
|
1086
1086
|
lightning_sdk/mmt/__init__.py,sha256=ExMu90-96bGBnyp5h0CErQszUGB1-PcjC4-R8_NYbeY,117
|
|
1087
1087
|
lightning_sdk/mmt/base.py,sha256=iqVudKDxazomuezj6l7pa-m9I1EQnM82OKs4ZQbo4Ck,16434
|
|
@@ -1103,9 +1103,9 @@ lightning_sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
1103
1103
|
lightning_sdk/utils/dynamic.py,sha256=glUTO1JC9APtQ6Gr9SO02a3zr56-sPAXM5C3NrTpgyQ,1959
|
|
1104
1104
|
lightning_sdk/utils/enum.py,sha256=h2JRzqoBcSlUdanFHmkj_j5DleBHAu1esQYUsdNI-hU,4106
|
|
1105
1105
|
lightning_sdk/utils/resolve.py,sha256=JjHwWNQq375d1JBcVkJrZWkcTehvuTxF2h6awvSUDoo,8094
|
|
1106
|
-
lightning_sdk-2025.8.
|
|
1107
|
-
lightning_sdk-2025.8.
|
|
1108
|
-
lightning_sdk-2025.8.
|
|
1109
|
-
lightning_sdk-2025.8.
|
|
1110
|
-
lightning_sdk-2025.8.
|
|
1111
|
-
lightning_sdk-2025.8.
|
|
1106
|
+
lightning_sdk-2025.8.6rc2.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
|
|
1107
|
+
lightning_sdk-2025.8.6rc2.dist-info/METADATA,sha256=_2gP2vLcex82G8EH6aWUzvqJNAhkf0nCFI1FqcqvqmU,4110
|
|
1108
|
+
lightning_sdk-2025.8.6rc2.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1109
|
+
lightning_sdk-2025.8.6rc2.dist-info/entry_points.txt,sha256=msB9PJWIJ784dX-OP8by51d4IbKYH3Fj1vCuA9oXjHY,68
|
|
1110
|
+
lightning_sdk-2025.8.6rc2.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
|
|
1111
|
+
lightning_sdk-2025.8.6rc2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{lightning_sdk-2025.8.6rc1.dist-info → lightning_sdk-2025.8.6rc2.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|