n8n-nodes-langsmith-prompt
Version:
n8n node to use LangSmith prompt templates with variable substitution
43 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchPromptTemplateByName = fetchPromptTemplateByName;
exports.invokePromptRaw = invokePromptRaw;
async function fetchPromptTemplateByName(promptName, apiKey) {
var _a, _b;
const url = `https://api.smith.langchain.com/commits/-/${encodeURIComponent(promptName)}/latest`;
try {
const res = await httpGetJson(url, apiKey);
return ((_b = (_a = res === null || res === void 0 ? void 0 : res.manifest) === null || _a === void 0 ? void 0 : _a.kwargs) === null || _b === void 0 ? void 0 : _b.template) || null;
}
catch (error) {
console.error('Error fetching prompt template:', error);
return null;
}
}
function invokePromptRaw(promptTemplate, params) {
let result = promptTemplate;
for (const [key, value] of Object.entries(params)) {
const regex = new RegExp(`\\{\\s*"?${key}"?\\s*\\}`, 'g');
result = result.replace(regex, value);
}
return result;
}
async function httpGetJson(url, apiKey) {
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': apiKey,
'Accept': 'application/json',
},
});
if (!response.ok) {
throw new Error(`HTTP error ${response.status}: ${response.statusText}`);
}
return await response.json();
}
catch (error) {
throw new Error(`Failed to fetch data: ${error instanceof Error ? error.message : String(error)}`);
}
}
//# sourceMappingURL=LangSmithHelper.js.map