interface TemplateConfig {
template: string;
requiredInputs: string[];
defaultInputs?: Record<string, string>;
}
const templates: Record<string, TemplateConfig> = {
welcome: {
template: "Welcome {{user_name}}! Your {{plan_type}} account is now active.",
requiredInputs: ["user_name", "plan_type"]
},
reminder: {
template: "Hi {{user_name}}, your {{service}} subscription expires in {{days}} days.",
requiredInputs: ["user_name", "service", "days"],
defaultInputs: { service: "Premium Plan" }
}
};
async function generateFromTemplate(
templateKey: string,
inputs: Record<string, string>
) {
const template = templates[templateKey];
if (!template) {
throw new Error(`Template ${templateKey} not found`);
}
// Validate required inputs
const missing = template.requiredInputs.filter(key => !inputs[key]);
if (missing.length > 0) {
throw new Error(`Missing required inputs: ${missing.join(", ")}`);
}
// Merge with defaults
const finalInputs = { ...template.defaultInputs, ...inputs };
return await openai.chat.completions.create({
model: "openai/gpt-4o",
messages: [{
role: "user",
content: template.template
}],
orq: { inputs: finalInputs }
});
}
// Usage
const response = await generateFromTemplate("welcome", {
user_name: "Alice Johnson",
plan_type: "Enterprise"
});