Skip to main content

Model Lab — Python SDK

Interactive model playground: list models, manage sessions, and stream inference.

Overview​

The Model Lab resource powers the in-Console playground: a filterable model list, multi-turn session creation, and streaming (SSE) inference that yields OpenAI-compatible chunks.

Accessed via client.model_lab.

Available Operations​

MethodDescription
list()Get model list for the Model Lab
createSession()Create a new chat session for multi-turn conversations
stream()Call model stream inference (SSE)

list​

Get model list for the Model Lab.

page_num and page_size are typed as optional but the backend requires them (returns code=1000 if missing). Recommended defaults: page_num=1, page_size=20.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# List inference models
models = client.model_lab.list(usage_type="inference")
for m in models.data:
print(m.modelName, m.provider)

# Filter by provider and capability
models = client.model_lab.list(
provider="dashscope",
capability="text_to_text",
inputs=["text"],
outputs=["text"],
)

Parameters​

ParameterTypeRequiredDefaultDescription
model_namestrNoNoneModel name (fuzzy search)
providerstrNoNoneProvider identifier
series_providerstrNoNoneSeries provider identifier
model_typestrNoNoneModel type
view_all_flagintNoNoneView all flag (1=view all)
page_sizeintNoNoneItems per page. Required by backend (code=1000 if missing). Recommended default: 20
page_numintNoNonePage number. Required by backend (code=1000 if missing). Recommended default: 1
usage_typestrNoNoneUsage type: "inference" or "train"
training_methodstrNoNoneTraining method: "sft" or "dpo"
tagslist[str]NoNoneTag filter list
capabilitystrNoNoneCapability filter, e.g. "text_to_text"
model_type_listlist[str]NoNoneModel type list (multi-select)
origin_providerslist[str]NoNoneOrigin provider list (multi-select)
inputslist[str]NoNoneInput type list, e.g. ["text"]
outputslist[str]NoNoneOutput type list (max 1 item), e.g. ["image"]

Response​

Returns BaseResponse[list[ModelInfoVO]].

ModelInfoVO fields: see client.secrets.model_list() above.

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

createSession​

Create a new chat session for multi-turn conversations.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

session = client.model_lab.create_session()
session_id = session.data # UUID string
print(f"Session ID: {session_id}")

Parameters​

None.

Response​

Returns BaseResponse[str]. The data field contains a UUID string (session ID).

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

stream​

Call model stream inference (SSE). Yields each SSE data chunk as a raw JSON string.

Example Usage​

import json
from wlt import WltClient
from wlt.models.model_lab import OptionsDTO

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# Create a session for multi-turn conversation
session = client.model_lab.create_session()

# Stream inference (use a provider + model that is actually served by the
# gateway -- discover via `client.model_lab.list()` / `client.usage.gateway_providers()`.
# On the daily environment, `openrouter` + `openai/gpt-5.4-nano` is a known-good pair).
for chunk in client.model_lab.stream(
provider="openrouter",
model_name="openai/gpt-5.4-nano",
user_prompt="Explain quantum computing in one paragraph.",
session_id=session.data,
options=OptionsDTO(
temperature=0.7,
maxToken=2048,
topP=0.9,
systemPrompt="You are a helpful assistant.",
),
):
data = json.loads(chunk)
# Each chunk contains delta content, finish_reason, usage, etc.
if "content" in data:
print(data["content"], end="", flush=True)

print() # newline after streaming completes

Parameters​

ParameterTypeRequiredDefaultDescription
providerstrYes--Provider identifier
model_namestrYes--Model name
user_promptstrYes (unless retry)NoneUser prompt text
session_idstrNoNoneSession ID (for multi-turn conversations, use UUID)
task_idstrNoNoneTask ID (for retry, references the failed task)
task_typestrNo"TEXT"Task type
is_retryboolNoFalseWhether this is a retry request (requires task_id)
optionsOptionsDTONoNoneModel parameter configuration (see below)

OptionsDTO fields:

FieldTypeRequiredDefaultDescription
temperaturefloatNoNoneTemperature, controls output randomness
maxTokenintNoNoneMaximum generated token count
topPfloatNoNoneTop P sampling parameter
topKintNoNoneTop K sampling parameter
presencePenaltyfloatNoNonePresence penalty
frequencyPenaltyfloatNoNoneFrequency penalty
stopSequencesstrNoNoneStop sequences
systemPromptstrNoNoneSystem prompt
enableThinkingboolNoNoneEnable deep thinking
enableProgressboolNoNoneEnable progress push
timeoutSecondsintNoNoneTask timeout (seconds)
enableCacheboolNoNoneEnable result caching
enableDocumentInliningboolNoNoneEnable document inlining
budgetTokensintNoNoneBudget token count

Response​

Returns a generator yielding SSE data chunks as raw JSON strings. Each chunk follows the OpenAI-compatible streaming format. The stream ends with a [DONE] sentinel.

Errors​

CodeExceptionWhen
1001ValidationErrorInvalid request parameters
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed
3002RateLimitErrorRate limit exceeded