From eb098ce266f9f82526372c0fe559631df71d6d79 Mon Sep 17 00:00:00 2001 From: cyclic Date: Sun, 5 Oct 2025 23:21:50 -0600 Subject: [PATCH] clarified correct type for decoded `/v1/models/{model_id}` response, added `/v1/language-models/{model_id}` endpoint --- src/init.luau | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/init.luau b/src/init.luau index 41c6f5c..9460074 100644 --- a/src/init.luau +++ b/src/init.luau @@ -177,8 +177,8 @@ export type ModelsResponse = { } type model_id = string -export type ModelRequest = model_id +export type ModelRequest = model_id export type ModelResponse = model type modality = 'text' | 'image' | string @@ -212,12 +212,15 @@ export type LanguageModelsResponse = { } } +export type LanguageModelRequest = model_id +export type LanguageModelResponse = LanguageModel + type ApiResponse = { success: boolean } export type SuccessfulApiResponse = ApiResponse & { - response: CompletionsResponse | ModelsResponse | ModelResponse | LanguageModelsResponse + response: CompletionsResponse | ModelsResponse | ModelResponse | LanguageModelsResponse | LanguageModelResponse } export type FailedApiResponse = ApiResponse & { @@ -277,7 +280,7 @@ function xai.create(api_key: string) } local response = net.request(config) if response.ok then - local decoded: ModelsResponse = serde.decode("json", response.body) + local decoded: ModelResponse = serde.decode("json", response.body) return { success = true, response = decoded } :: SuccessfulApiResponse else return { success = false, status = response.status, message = response.body } :: FailedApiResponse @@ -301,6 +304,23 @@ function xai.create(api_key: string) end end + function client:language_model(model_id: LanguageModelRequest): SuccessfulApiResponse | FailedApiResponse + local config = { + url = `{baseUrl}/language-models/{model_id}`, + method = "GET", + headers = { + ["Content-Type"] = "application/json", + }, + } + local response = net.request(config) + if response.ok then + local decoded: LanguageModelResponse = serde.decode("json", response.body) + return { success = true, response = decoded } :: SuccessfulApiResponse + else + return { success = false, status = response.status, message = response.body } :: FailedApiResponse + end + end + return client end