81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
const axios = require('axios');
|
|
const config = require('../config');
|
|
const { LocalAIApi } = require('../ai/LocalAIApi');
|
|
|
|
const loadRoleService = () => {
|
|
try {
|
|
return require('./roles');
|
|
} catch (error) {
|
|
console.error('Role service is missing. Advanced roles are required for this operation.', error);
|
|
const err = new Error('Role service is missing. Advanced roles are required for this operation.');
|
|
err.originalError = error;
|
|
throw err;
|
|
}
|
|
};
|
|
|
|
module.exports = class OpenAiService {
|
|
static async getWidget(payload, userId, roleId) {
|
|
const RoleService = loadRoleService();
|
|
const response = await axios.post(
|
|
`${config.flHost}/${config.project_uuid}/project_customization_widgets.json`,
|
|
payload,
|
|
);
|
|
|
|
if (response.status >= 200 && response.status < 300) {
|
|
const { widget_id } = await response.data;
|
|
await RoleService.addRoleInfo(roleId, userId, 'widgets', widget_id);
|
|
return widget_id;
|
|
} else {
|
|
console.error('=======error=======', response.data);
|
|
return { value: null, error: response.data };
|
|
}
|
|
}
|
|
|
|
static async askGpt(prompt) {
|
|
if (!prompt) {
|
|
return {
|
|
success: false,
|
|
error: 'Prompt is required'
|
|
};
|
|
}
|
|
|
|
const response = await LocalAIApi.createResponse(
|
|
{
|
|
input: [{ role: 'user', content: prompt }],
|
|
},
|
|
{
|
|
poll_interval: 5,
|
|
poll_timeout: 300,
|
|
},
|
|
);
|
|
|
|
if (response.success) {
|
|
let text = LocalAIApi.extractText(response);
|
|
if (!text) {
|
|
try {
|
|
const decoded = LocalAIApi.decodeJsonFromResponse(response);
|
|
text = JSON.stringify(decoded);
|
|
} catch (error) {
|
|
console.error('AI JSON decode failed:', error);
|
|
return {
|
|
success: false,
|
|
error: 'AI response parsing failed',
|
|
details: error.message || String(error),
|
|
};
|
|
}
|
|
}
|
|
return {
|
|
success: true,
|
|
data: text,
|
|
};
|
|
}
|
|
|
|
console.error('AI proxy error:', response);
|
|
return {
|
|
success: false,
|
|
error: response.error || response.message || 'AI proxy error',
|
|
response,
|
|
};
|
|
}
|
|
};
|