diff --git a/src/init.luau b/src/init.luau index e7fc024..cd76829 100644 --- a/src/init.luau +++ b/src/init.luau @@ -162,14 +162,25 @@ export type CompletionsRequest = { }? } +export type ModelsResponse = { + data : { + created: number, + id: string, + object: "model", + owned_by: string + }, + object: "list" +} + local xai = {} +local baseUrl = "https://api.x.ai/v1" function xai.create(api_key: string) local client = {} - function client.completions(self, request: CompletionsRequest): CompletionsResponse + function client:completions(request: CompletionsRequest): CompletionsResponse local config = { - url = "https://api.x.ai/v1/chat/completions", + url = `{baseUrl}/completions`, method = "POST", headers = { Authorization = "Bearer " .. api_key, @@ -186,6 +197,23 @@ function xai.create(api_key: string) end end + function client:models(): ModelsResponse + local config = { + url = `{baseUrl}/models`, + method = "GET", + headers = { + ["Content-Type"] = "application/json", + }, + } + local response = net.request(config) + if response.ok then + local decoded: ModelsResponse = serde.decode("json", response.body) + return decoded + else + error(`API request failed with status {response.statusCode}: {response.statusMessage}`) + end + end + return client end