UNPKG

@devvai/devv-code-backend

Version:

Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities

65 lines (64 loc) 2.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenRouterAI = void 0; const openai_1 = __importDefault(require("openai")); const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); /** * OpenRouterAI extends OpenAI client with pre-configured authentication for OpenRouter * * Usage: * ```typescript * const ai = new OpenRouterAI(); * const response = await ai.chat.completions.create({ * model: 'openai/gpt-4-turbo', // Required: specify OpenRouter model * messages: [{ role: 'user', content: 'Hello!' }] * }); * ``` * * Common OpenRouter models: * - openai/gpt-4-turbo * - openai/gpt-3.5-turbo * - anthropic/claude-3-opus * - anthropic/claude-3-sonnet * - google/gemini-pro * - meta-llama/llama-3-70b-instruct * * Note: If you encounter API key errors, ensure you have configured * your OpenRouter API key in the external API keys configuration. */ class OpenRouterAI extends openai_1.default { constructor() { const sid = (0, session_1.getSid)(); const deviceId = (0, device_1.getEncryptedDeviceId)(); super({ apiKey: sid || '', // OpenAI SDK requires an API key, but we use session-based auth baseURL: `${constants_1.BASE_URL}openrouter/v1`, dangerouslyAllowBrowser: true, defaultHeaders: { 'Device-Id': deviceId } }); } async prepareRequest(request) { const sid = (0, session_1.getSid)(); if (!request.headers) { request.headers = {}; } if (request.headers instanceof Headers) { if (sid) { request.headers.set('sid', sid); } } else { if (sid) { request.headers['sid'] = sid; } } } } exports.OpenRouterAI = OpenRouterAI;