@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
JavaScript
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;
;