id: 4_simple_agent namespace: zoomcamp description: | This flow demonstrates a basic AI agent that summarizes text with controllable length and language. It shows: - How to structure agent prompts - How to chain multiple agent tasks - How to use pluginDefaults to avoid repetition - How to track token usage for cost monitoring inputs: - id: summary_length displayName: Summary Length type: SELECT defaults: medium values: - short - medium - long - id: language displayName: Language type: SELECT defaults: en values: - en - fr - de - es - it - pt - ja - id: text type: STRING displayName: Text to summarize defaults: | Kestra is an open-source orchestration platform that allows you to define workflows declaratively in YAML. It enables both developers and non-developers to automate tasks through a no-code interface, while keeping everything versioned, governed, secure, and auditable. Kestra extends easily for custom use cases through plugins and custom scripts. Kestra follows a "start simple and grow as needed" philosophy. You can schedule a basic workflow in a few minutes, then later add Python scripts, Docker containers, or complex branching logic if the situation requires it. This makes Kestra ideal for data engineering, ETL pipelines, business process automation, and more. In LLM Zoomcamp, we learn how to build production-ready LLM applications using RAG, vector search, agents, and evaluation. In this bonus module, we're exploring how AI can accelerate workflow development through AI Copilot, RAG, and autonomous agents. tasks: - id: multilingual_agent type: io.kestra.plugin.ai.agent.AIAgent description: Generate summary in requested language and length systemMessage: | You are a precise technical assistant. Produce a {{ inputs.summary_length }} summary in {{ inputs.language }}. Keep it factual, remove fluff, and avoid marketing language. If the input is empty or non-text, return a one-sentence explanation. Output format guidelines: - For 'short': 1-2 sentences - For 'medium': 2-5 sentences - For 'long': 1-3 paragraphs prompt: | Summarize the following content: {{ inputs.text }} - id: english_brevity type: io.kestra.plugin.ai.agent.AIAgent prompt: | Generate exactly 1 sentence English summary of the following: "{{ outputs.multilingual_agent.textOutput }}" - id: log_token_usage type: io.kestra.plugin.core.log.Log message: | 📊 Token Usage Summary: Multilingual Agent: - Input tokens: {{ outputs.multilingual_agent.tokenUsage.inputTokenCount }} - Output tokens: {{ outputs.multilingual_agent.tokenUsage.outputTokenCount }} - Total tokens: {{ outputs.multilingual_agent.tokenUsage.totalTokenCount }} English Brevity Agent: - Input tokens: {{ outputs.english_brevity.tokenUsage.inputTokenCount }} - Output tokens: {{ outputs.english_brevity.tokenUsage.outputTokenCount }} - Total tokens: {{ outputs.english_brevity.tokenUsage.totalTokenCount }} 💡 Tip: Monitor token usage to understand costs and optimize prompts! pluginDefaults: - type: io.kestra.plugin.ai.agent.AIAgent values: provider: type: io.kestra.plugin.ai.provider.GoogleGemini modelName: gemini-2.5-flash apiKey: "{{ secret('GEMINI_API_KEY') }}"