n8n-nodes-openai-analytics
Version:
n8n node for OpenAI Analytics
65 lines • 2.35 kB
JavaScript
;
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