@devvai/devv-code-backend
Version:
Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities
57 lines (56 loc) • 1.83 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DevvAI = void 0;
const openai_1 = __importDefault(require("openai"));
const device_1 = require("./device");
const session_1 = require("./session");
const constants_1 = require("./constants");
/**
* DevvAI extends OpenAI client with pre-configured authentication
*
* Usage:
* ```typescript
* const ai = new DevvAI();
* const response = await ai.chat.completions.create({
* model: 'gpt-3.5-turbo', // Model parameter is provided by backend
* messages: [{ role: 'user', content: 'Hello!' }]
* });
* ```
*
* Note: The model parameter is required in requests but will be overridden by backend.
* The actual model used is determined by your Devv project configuration.
*/
class DevvAI 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}openai/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.DevvAI = DevvAI;
;