Skip to content

Commit 184acc1

Browse files
authored
Sync lmstudio.js schema (2025-03-03) (#23)
* Add model token counting RPC endpoint * Fix type declaration for info on unloaded JIT models * Note pending support for disabling GPUs in model load config
1 parent 4d88ea2 commit 184acc1

File tree

5 files changed

+198
-11
lines changed

5 files changed

+198
-11
lines changed

sdk-schema/lms-with-inferred-unions.json

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,12 @@
809809
},
810810
"splitStrategy": {
811811
"$ref": "#/definitions/llmSplitStrategy"
812+
},
813+
"disabledGpus": {
814+
"type": "array",
815+
"items": {
816+
"type": "integer"
817+
}
812818
}
813819
},
814820
"additionalProperties": false
@@ -3210,6 +3216,50 @@
32103216
],
32113217
"additionalProperties": false
32123218
},
3219+
"embedding/rpc/countTokens/parameter": {
3220+
"type": "object",
3221+
"properties": {
3222+
"specifier": {
3223+
"$ref": "#/definitions/modelSpecifier"
3224+
},
3225+
"inputString": {
3226+
"type": "string"
3227+
}
3228+
},
3229+
"required": [
3230+
"specifier",
3231+
"inputString"
3232+
],
3233+
"additionalProperties": false
3234+
},
3235+
"embedding/rpc/countTokens/returns": {
3236+
"type": "object",
3237+
"properties": {
3238+
"tokenCount": {
3239+
"type": "integer"
3240+
}
3241+
},
3242+
"required": [
3243+
"tokenCount"
3244+
],
3245+
"additionalProperties": false
3246+
},
3247+
"pseudo/embedding/rpc/countTokens": {
3248+
"type": "object",
3249+
"properties": {
3250+
"parameter": {
3251+
"$ref": "#/definitions/embedding/rpc/countTokens/parameter"
3252+
},
3253+
"returns": {
3254+
"$ref": "#/definitions/embedding/rpc/countTokens/returns"
3255+
}
3256+
},
3257+
"required": [
3258+
"parameter",
3259+
"returns"
3260+
],
3261+
"additionalProperties": false
3262+
},
32133263
"embedding/channel/loadModel/creationParameter": {
32143264
"type": "object",
32153265
"properties": {
@@ -3390,6 +3440,9 @@
33903440
"rpcTokenize": {
33913441
"$ref": "#/definitions/pseudo/embedding/rpc/tokenize"
33923442
},
3443+
"rpcCountTokens": {
3444+
"$ref": "#/definitions/pseudo/embedding/rpc/countTokens"
3445+
},
33933446
"channelLoadModel": {
33943447
"$ref": "#/definitions/pseudo/embedding/channel/loadModel"
33953448
},
@@ -3404,6 +3457,7 @@
34043457
"rpcGetLoadConfig",
34053458
"rpcEmbedString",
34063459
"rpcTokenize",
3460+
"rpcCountTokens",
34073461
"channelLoadModel",
34083462
"channelGetOrLoad"
34093463
],
@@ -6216,7 +6270,7 @@
62166270
"title": "Type"
62176271
},
62186272
"info": {
6219-
"$ref": "#/definitions/embeddingModelInstanceInfo"
6273+
"$ref": "#/definitions/modelInstanceInfo"
62206274
}
62216275
},
62226276
"required": [
@@ -6608,7 +6662,7 @@
66086662
"title": "Type"
66096663
},
66106664
"info": {
6611-
"$ref": "#/definitions/llmInstanceInfo"
6665+
"$ref": "#/definitions/modelInstanceInfo"
66126666
}
66136667
},
66146668
"required": [

sdk-schema/lms.json

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,6 +1174,12 @@
11741174
},
11751175
"splitStrategy": {
11761176
"$ref": "#/definitions/llmSplitStrategy"
1177+
},
1178+
"disabledGpus": {
1179+
"type": "array",
1180+
"items": {
1181+
"type": "integer"
1182+
}
11771183
}
11781184
},
11791185
"additionalProperties": false
@@ -3689,6 +3695,50 @@
36893695
],
36903696
"additionalProperties": false
36913697
},
3698+
"embedding/rpc/countTokens/parameter": {
3699+
"type": "object",
3700+
"properties": {
3701+
"specifier": {
3702+
"$ref": "#/definitions/modelSpecifier"
3703+
},
3704+
"inputString": {
3705+
"type": "string"
3706+
}
3707+
},
3708+
"required": [
3709+
"specifier",
3710+
"inputString"
3711+
],
3712+
"additionalProperties": false
3713+
},
3714+
"embedding/rpc/countTokens/returns": {
3715+
"type": "object",
3716+
"properties": {
3717+
"tokenCount": {
3718+
"type": "integer"
3719+
}
3720+
},
3721+
"required": [
3722+
"tokenCount"
3723+
],
3724+
"additionalProperties": false
3725+
},
3726+
"pseudo/embedding/rpc/countTokens": {
3727+
"type": "object",
3728+
"properties": {
3729+
"parameter": {
3730+
"$ref": "#/definitions/embedding/rpc/countTokens/parameter"
3731+
},
3732+
"returns": {
3733+
"$ref": "#/definitions/embedding/rpc/countTokens/returns"
3734+
}
3735+
},
3736+
"required": [
3737+
"parameter",
3738+
"returns"
3739+
],
3740+
"additionalProperties": false
3741+
},
36923742
"embedding/channel/loadModel/creationParameter": {
36933743
"type": "object",
36943744
"properties": {
@@ -3878,7 +3928,7 @@
38783928
"const": "unloadingOtherJITModel"
38793929
},
38803930
"info": {
3881-
"$ref": "#/definitions/embeddingModelInstanceInfo"
3931+
"$ref": "#/definitions/modelInstanceInfo"
38823932
}
38833933
},
38843934
"required": [
@@ -3981,6 +4031,9 @@
39814031
"rpcTokenize": {
39824032
"$ref": "#/definitions/pseudo/embedding/rpc/tokenize"
39834033
},
4034+
"rpcCountTokens": {
4035+
"$ref": "#/definitions/pseudo/embedding/rpc/countTokens"
4036+
},
39844037
"channelLoadModel": {
39854038
"$ref": "#/definitions/pseudo/embedding/channel/loadModel"
39864039
},
@@ -3995,6 +4048,7 @@
39954048
"rpcGetLoadConfig",
39964049
"rpcEmbedString",
39974050
"rpcTokenize",
4051+
"rpcCountTokens",
39984052
"channelLoadModel",
39994053
"channelGetOrLoad"
40004054
],
@@ -4831,7 +4885,7 @@
48314885
"const": "unloadingOtherJITModel"
48324886
},
48334887
"info": {
4834-
"$ref": "#/definitions/llmInstanceInfo"
4888+
"$ref": "#/definitions/modelInstanceInfo"
48354889
}
48364890
},
48374891
"required": [

sdk-schema/lmstudio-js

Submodule lmstudio-js updated 63 files

src/lmstudio/_sdk_models/__init__.py

Lines changed: 82 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# generated by datamodel-codegen:
22
# filename: lms-with-inferred-unions.json
3-
# timestamp: 2025-02-27T03:57:00+00:00
3+
# timestamp: 2025-03-03T03:25:41+00:00
44

55
from __future__ import annotations
66

@@ -119,6 +119,10 @@
119119
"EmbeddingModelInstanceAdditionalInfoDict",
120120
"EmbeddingModelInstanceInfo",
121121
"EmbeddingModelInstanceInfoDict",
122+
"EmbeddingRpcCountTokensParameter",
123+
"EmbeddingRpcCountTokensParameterDict",
124+
"EmbeddingRpcCountTokensReturns",
125+
"EmbeddingRpcCountTokensReturnsDict",
122126
"EmbeddingRpcEmbedStringParameter",
123127
"EmbeddingRpcEmbedStringParameterDict",
124128
"EmbeddingRpcEmbedStringReturns",
@@ -443,6 +447,8 @@
443447
"PseudoEmbeddingChannelLoadModel",
444448
"PseudoEmbeddingChannelLoadModelDict",
445449
"PseudoEmbeddingDict",
450+
"PseudoEmbeddingRpcCountTokens",
451+
"PseudoEmbeddingRpcCountTokensDict",
446452
"PseudoEmbeddingRpcEmbedString",
447453
"PseudoEmbeddingRpcEmbedStringDict",
448454
"PseudoEmbeddingRpcGetLoadConfig",
@@ -1766,6 +1772,27 @@ class EmbeddingRpcTokenizeReturnsDict(TypedDict):
17661772
tokens: Sequence[float]
17671773

17681774

1775+
###############################################################################
1776+
# EmbeddingRpcCountTokensReturns
1777+
###############################################################################
1778+
1779+
1780+
class EmbeddingRpcCountTokensReturns(
1781+
LMStudioStruct["EmbeddingRpcCountTokensReturnsDict"], kw_only=True
1782+
):
1783+
token_count: int = field(name="tokenCount")
1784+
1785+
1786+
class EmbeddingRpcCountTokensReturnsDict(TypedDict):
1787+
"""Corresponding typed dictionary definition for EmbeddingRpcCountTokensReturns.
1788+
1789+
NOTE: Multi-word keys are defined using their camelCase form,
1790+
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
1791+
"""
1792+
1793+
tokenCount: int
1794+
1795+
17691796
###############################################################################
17701797
# EmbeddingChannelLoadModelCreationParameter
17711798
###############################################################################
@@ -4852,6 +4879,7 @@ class GpuSetting(LMStudioStruct["GpuSettingDict"], kw_only=True):
48524879
ratio: LlmLlamaAccelerationOffloadRatio | None = None
48534880
main_gpu: int | None = field(name="mainGpu", default=None)
48544881
split_strategy: LlmSplitStrategy | None = field(name="splitStrategy", default=None)
4882+
disabled_gpus: Sequence[int] | None = field(name="disabledGpus", default=None)
48554883

48564884

48574885
class GpuSettingDict(TypedDict):
@@ -4864,6 +4892,7 @@ class GpuSettingDict(TypedDict):
48644892
ratio: NotRequired[LlmLlamaAccelerationOffloadRatio | None]
48654893
mainGpu: NotRequired[int | None]
48664894
splitStrategy: NotRequired[LlmSplitStrategy | None]
4895+
disabledGpus: NotRequired[Sequence[int] | None]
48674896

48684897

48694898
###############################################################################
@@ -6479,7 +6508,7 @@ class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModel(
64796508
type: ClassVar[Annotated[Literal["unloadingOtherJITModel"], Meta(title="Type")]] = (
64806509
"unloadingOtherJITModel"
64816510
)
6482-
info: EmbeddingModelInstanceInfo
6511+
info: ModelInstanceInfo
64836512

64846513

64856514
class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
@@ -6490,7 +6519,7 @@ class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDic
64906519
"""
64916520

64926521
type: Literal["unloadingOtherJITModel"]
6493-
info: EmbeddingModelInstanceInfoDict
6522+
info: ModelInstanceInfo
64946523

64956524

64966525
###############################################################################
@@ -6650,7 +6679,7 @@ class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModel(
66506679
type: ClassVar[Annotated[Literal["unloadingOtherJITModel"], Meta(title="Type")]] = (
66516680
"unloadingOtherJITModel"
66526681
)
6653-
info: LlmInstanceInfo
6682+
info: ModelInstanceInfo
66546683

66556684

66566685
class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
@@ -6661,7 +6690,7 @@ class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
66616690
"""
66626691

66636692
type: Literal["unloadingOtherJITModel"]
6664-
info: LlmInstanceInfoDict
6693+
info: ModelInstanceInfo
66656694

66666695

66676696
###############################################################################
@@ -7247,6 +7276,52 @@ class PseudoEmbeddingRpcTokenizeDict(TypedDict):
72477276
returns: EmbeddingRpcTokenizeReturnsDict
72487277

72497278

7279+
###############################################################################
7280+
# EmbeddingRpcCountTokensParameter
7281+
###############################################################################
7282+
7283+
7284+
class EmbeddingRpcCountTokensParameter(
7285+
LMStudioStruct["EmbeddingRpcCountTokensParameterDict"], kw_only=True
7286+
):
7287+
specifier: ModelSpecifier
7288+
input_string: str = field(name="inputString")
7289+
7290+
7291+
class EmbeddingRpcCountTokensParameterDict(TypedDict):
7292+
"""Corresponding typed dictionary definition for EmbeddingRpcCountTokensParameter.
7293+
7294+
NOTE: Multi-word keys are defined using their camelCase form,
7295+
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
7296+
"""
7297+
7298+
specifier: ModelSpecifierDict
7299+
inputString: str
7300+
7301+
7302+
###############################################################################
7303+
# PseudoEmbeddingRpcCountTokens
7304+
###############################################################################
7305+
7306+
7307+
class PseudoEmbeddingRpcCountTokens(
7308+
LMStudioStruct["PseudoEmbeddingRpcCountTokensDict"], kw_only=True
7309+
):
7310+
parameter: EmbeddingRpcCountTokensParameter
7311+
returns: EmbeddingRpcCountTokensReturns
7312+
7313+
7314+
class PseudoEmbeddingRpcCountTokensDict(TypedDict):
7315+
"""Corresponding typed dictionary definition for PseudoEmbeddingRpcCountTokens.
7316+
7317+
NOTE: Multi-word keys are defined using their camelCase form,
7318+
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
7319+
"""
7320+
7321+
parameter: EmbeddingRpcCountTokensParameterDict
7322+
returns: EmbeddingRpcCountTokensReturnsDict
7323+
7324+
72507325
EmbeddingChannelLoadModelToClientPacket = (
72517326
EmbeddingChannelLoadModelToClientPacketResolved
72527327
| EmbeddingChannelLoadModelToClientPacketProgress
@@ -7339,6 +7414,7 @@ class PseudoEmbedding(LMStudioStruct["PseudoEmbeddingDict"], kw_only=True):
73397414
)
73407415
rpc_embed_string: PseudoEmbeddingRpcEmbedString = field(name="rpcEmbedString")
73417416
rpc_tokenize: PseudoEmbeddingRpcTokenize = field(name="rpcTokenize")
7417+
rpc_count_tokens: PseudoEmbeddingRpcCountTokens = field(name="rpcCountTokens")
73427418
channel_load_model: PseudoEmbeddingChannelLoadModel = field(name="channelLoadModel")
73437419
channel_get_or_load: PseudoEmbeddingChannelGetOrLoad = field(
73447420
name="channelGetOrLoad"
@@ -7358,6 +7434,7 @@ class PseudoEmbeddingDict(TypedDict):
73587434
rpcGetLoadConfig: PseudoEmbeddingRpcGetLoadConfigDict
73597435
rpcEmbedString: PseudoEmbeddingRpcEmbedStringDict
73607436
rpcTokenize: PseudoEmbeddingRpcTokenizeDict
7437+
rpcCountTokens: PseudoEmbeddingRpcCountTokensDict
73617438
channelLoadModel: PseudoEmbeddingChannelLoadModelDict
73627439
channelGetOrLoad: PseudoEmbeddingChannelGetOrLoadDict
73637440

tests/test_kv_config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@
3535
"mainGpu": 0,
3636
"ratio": 0.5,
3737
"splitStrategy": "evenly",
38+
"disabledGpus": [1, 2]
3839
}
39-
SC_GPU_CONFIG = {"main_gpu": 0, "ratio": 0.5, "split_strategy": "evenly"}
40+
SC_GPU_CONFIG = {"main_gpu": 0, "ratio": 0.5, "split_strategy": "evenly", "disabled_gpus": [1, 2]}
4041

4142
LOAD_CONFIG_EMBEDDING: EmbeddingLoadModelConfigDict = {
4243
"contextLength": 1978,
@@ -242,6 +243,7 @@ def test_snake_case_conversion(
242243

243244

244245
_NOT_YET_SUPPORTED_KEYS = {
246+
"disabledGpus",
245247
"reasoningParsing",
246248
# "speculativeDecoding" scope
247249
"draftModel",

0 commit comments

Comments
 (0)