UNPKG

n8n-nodes-openai-analytics

Version:
65 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createEmbedding = void 0; async function createEmbedding(context) { const { openai, functionThis, i } = context; const inputType = functionThis.getNodeParameter('inputType', i); let input = ''; if (inputType === 'singleText') { input = functionThis.getNodeParameter('text', i); } else if (inputType === 'multipleTexts') { input = functionThis.getNodeParameter('texts', i); } const options = functionThis.getNodeParameter('options', i, {}); // 모델 설정 const model = functionThis.getNodeParameter('model', i); // 응답 형식 설정 const encodingFormat = options.encodingFormat || 'float'; try { // OpenAI API 호출 const response = await openai.embeddings.create({ model, input, encoding_format: encodingFormat, }); // 원본 임베딩 데이터 const originalEmbeddingData = response.data; // 텍스트 정보를 포함한 새로운 임베딩 데이터 배열 생성 let enhancedEmbeddingData = []; // 단일 텍스트가 아닌 경우 각 임베딩에 원본 텍스트 추가 if (Array.isArray(input) && originalEmbeddingData.length > 0) { enhancedEmbeddingData = originalEmbeddingData.map((item, index) => ({ embedding: item.embedding, text: index < input.length ? input[index] : '', index: item.index, })); } else if (!Array.isArray(input) && originalEmbeddingData.length > 0) { // 단일 텍스트인 경우 enhancedEmbeddingData = [{ embedding: originalEmbeddingData[0].embedding, text: input, index: 0, }]; } return { json: { success: true, model: response.model, usage: response.usage, data: enhancedEmbeddingData, }, }; } catch (error) { return { json: { success: false, error: error.message, }, }; } } exports.createEmbedding = createEmbedding; //# sourceMappingURL=createEmbedding.js.map