n8n-nodes-openai-analytics
Version:
n8n node for OpenAI Analytics
78 lines • 3.45 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCategoryEmbedding = void 0;
const openai_1 = __importDefault(require("openai"));
/**
* 카테고리 임베딩 생성 함수
* 카테고리 문자열에 대한 임베딩 벡터를 생성하여 UI 필드에 저장
*/
async function generateCategoryEmbedding(index, fieldData, path) {
try {
// 현재 선택된 임베딩 모델 가져오기
const embeddingModel = this.getNodeParameter('embeddingModel', index);
// 현재 카테고리 텍스트 가져오기
const categoryText = fieldData.category;
if (!categoryText || categoryText.trim() === '') {
throw new Error('카테고리 텍스트가 비어 있습니다. 임베딩을 생성하려면 카테고리를 입력하세요.');
}
// OpenAI API 초기화
const authentication = this.getNodeParameter('authentication', 0, 'openAIAnalyticsApi');
let openai;
if (authentication === 'openAIAnalyticsApi') {
const credentials = await this.getCredentials('openAIAnalyticsApi');
openai = new openai_1.default({
apiKey: credentials.apiKey,
organization: credentials.organizationId,
baseURL: credentials.baseUrl || 'https://api.openai.com/v1',
});
}
else {
const credentials = await this.getCredentials('openAiApi');
openai = new openai_1.default({
apiKey: credentials.apiKey,
organization: credentials.organization,
baseURL: credentials.baseURL || 'https://api.openai.com/v1',
});
}
// 임베딩 생성 요청
const embeddingResponse = await openai.embeddings.create({
model: embeddingModel,
input: categoryText,
});
// 임베딩 벡터 추출
const embeddingVector = embeddingResponse.data[0].embedding;
// 결과 반환 (필드 업데이트)
return {
...fieldData,
embedding: embeddingVector,
};
}
catch (error) {
// 에러 처리
console.error('임베딩 생성 오류:', error);
throw new Error(`카테고리 임베딩 생성 중 오류가 발생했습니다: ${error.message}`);
}
}
exports.generateCategoryEmbedding = generateCategoryEmbedding;
__exportStar(require("./file"), exports);
__exportStar(require("./report"), exports);
__exportStar(require("./text"), exports);
__exportStar(require("./thread"), exports);
//# sourceMappingURL=index.js.map