UNPKG

@vibe-kit/grok-cli

Version:

An open-source AI agent that brings the power of Grok directly into your terminal.

80 lines 2.82 kB
import OpenAI from "openai"; export class GrokClient { client; currentModel = "grok-code-fast-1"; defaultMaxTokens; constructor(apiKey, model, baseURL) { this.client = new OpenAI({ apiKey, baseURL: baseURL || process.env.GROK_BASE_URL || "https://api.x.ai/v1", timeout: 360000, }); const envMax = Number(process.env.GROK_MAX_TOKENS); this.defaultMaxTokens = Number.isFinite(envMax) && envMax > 0 ? envMax : 1536; if (model) { this.currentModel = model; } } setModel(model) { this.currentModel = model; } getCurrentModel() { return this.currentModel; } async chat(messages, tools, model, searchOptions) { try { const requestPayload = { model: model || this.currentModel, messages, tools: tools || [], tool_choice: tools && tools.length > 0 ? "auto" : undefined, temperature: 0.7, max_tokens: this.defaultMaxTokens, }; // Add search parameters if specified if (searchOptions?.search_parameters) { requestPayload.search_parameters = searchOptions.search_parameters; } const response = await this.client.chat.completions.create(requestPayload); return response; } catch (error) { throw new Error(`Grok API error: ${error.message}`); } } async *chatStream(messages, tools, model, searchOptions) { try { const requestPayload = { model: model || this.currentModel, messages, tools: tools || [], tool_choice: tools && tools.length > 0 ? "auto" : undefined, temperature: 0.7, max_tokens: this.defaultMaxTokens, stream: true, }; // Add search parameters if specified if (searchOptions?.search_parameters) { requestPayload.search_parameters = searchOptions.search_parameters; } const stream = (await this.client.chat.completions.create(requestPayload)); for await (const chunk of stream) { yield chunk; } } catch (error) { throw new Error(`Grok API error: ${error.message}`); } } async search(query, searchParameters) { const searchMessage = { role: "user", content: query, }; const searchOptions = { search_parameters: searchParameters || { mode: "on" }, }; return this.chat([searchMessage], [], undefined, searchOptions); } } //# sourceMappingURL=client.js.map