upload
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
// n8n Code Node: "Claude Request bauen"
|
||||
// Erwartet: customer, period, metrics, trends und optional context.
|
||||
// Das Schema ist fuer die rohe Messages API vereinfacht. Die strengeren
|
||||
// Laengen- und Wertepruefungen erfolgen anschliessend im Report Renderer.
|
||||
|
||||
const input = $json;
|
||||
const schema = {"type": "object", "additionalProperties": false, "properties": {"summary": {"type": "object", "additionalProperties": false, "properties": {"headline": {"type": "string", "description": "Minimum characters: 8. Maximum characters: 110."}, "text": {"type": "string", "description": "Minimum characters: 80. Maximum characters: 900."}, "rating": {"type": "string", "enum": ["positive", "neutral", "watch"]}}, "required": ["headline", "text", "rating"]}, "developments": {"type": "array", "items": {"type": "object", "additionalProperties": false, "properties": {"text": {"type": "string", "description": "Minimum characters: 40. Maximum characters: 450."}, "impact": {"type": "string", "enum": ["positive", "neutral", "negative"]}}, "required": ["title", "text", "impact"]}, "description": "Minimum items: 2. Maximum items: 4."}, "recommendations": {"type": "array", "items": {"type": "object", "additionalProperties": false, "properties": {"priority": {"type": "integer", "description": "Minimum value: 1. Maximum value: 3."}, "category": {"type": "string", "description": "Minimum characters: 3. Maximum characters: 80."}, "reason": {"type": "string", "description": "Minimum characters: 40. Maximum characters: 450."}, "action": {"type": "string", "description": "Minimum characters: 30. Maximum characters: 450."}, "expected_effect": {"type": "string", "description": "Minimum characters: 20. Maximum characters: 300."}}, "required": ["priority", "category", "title", "reason", "action", "expected_effect"]}, "description": "Minimum items: 1. Maximum items: 3."}, "outlook": {"type": "object", "additionalProperties": false, "properties": {"headline": {"type": "string", "description": "Minimum characters: 5. Maximum characters: 100."}, "text": {"type": "string", "description": "Minimum characters: 60. Maximum characters: 700."}}, "required": ["headline", "text"]}, "data_quality_notes": {"type": "array", "items": {"type": "string", "description": "Minimum characters: 5. Maximum characters: 240."}, "description": "Maximum items: 4."}}, "required": ["summary", "developments", "recommendations", "outlook", "data_quality_notes"]};
|
||||
|
||||
const systemPrompt = `Du erstellst die redaktionellen Inhalte eines monatlichen Performance-Reports fuer Betreiber von Ferienunterkuenften.
|
||||
Nutze ausschliesslich die gelieferten Daten. Erfinde keine Zahlen oder Ursachen.
|
||||
Jede Empfehlung muss konkret und aus den Daten ableitbar sein.
|
||||
Formuliere professionell, klar und auf Deutsch. Vermeide Marketingfloskeln und Wiederholungen.
|
||||
Erzeuge 2 bis 4 Entwicklungen, 1 bis 3 Empfehlungen und hoechstens 4 Datenhinweise.
|
||||
Nutze data_quality_notes fuer fehlende oder eingeschraenkte Datengrundlagen.`;
|
||||
|
||||
const userPrompt = `Erstelle den Monatsreport fuer diese Daten:
|
||||
|
||||
${JSON.stringify({
|
||||
customer: input.customer,
|
||||
period: input.period,
|
||||
metrics: input.metrics,
|
||||
trends: input.trends,
|
||||
context: input.context ?? {}
|
||||
}, null, 2)}`;
|
||||
|
||||
return [{
|
||||
json: {
|
||||
...input,
|
||||
claudeRequest: {
|
||||
model: input.claudeModel ?? 'claude-sonnet-4-6',
|
||||
max_tokens: 3000,
|
||||
temperature: 0.2,
|
||||
system: systemPrompt,
|
||||
messages: [{ role: 'user', content: userPrompt }],
|
||||
output_config: {
|
||||
format: { type: 'json_schema', schema }
|
||||
}
|
||||
}
|
||||
}
|
||||
}];
|
||||
Reference in New Issue
Block a user