From d5566209cae0fb76abc42f7a61764b58ac5bab2e Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Mon, 12 Oct 2026 02:33:59 +0000 Subject: [PATCH] Add kamelet definition: google-vertexai-sink --- kamelet.json | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 kamelet.json diff --git a/kamelet.json b/kamelet.json new file mode 100644 index 0000000..070a35d --- /dev/null +++ b/kamelet.json @@ -0,0 +1,184 @@ +{ + "apiVersion": "camel.apache.org/v1", + "kind": "Kamelet", + "metadata": { + "name": "google-vertexai-sink", + "annotations": { + "camel.apache.org/kamelet.support.level": "Preview", + "camel.apache.org/catalog.version": "4.22.1", + "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjMxcHgiIHZpZXdCb3g9IjAgMCAyNTYgMjMxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0yNTIuOTI1ODU0LDEwMy4yMzcwNzcgTDIwMC4zMjczNDQsMTEuNzU5NjY3IEMxOTYuMzAyNTc5LDQuNjIyMjU3MDMgMTg4LjgwMDU0LDAuMTQ4NDI0NzI2IDE4MC42MDc5MDIsMCBMNzUuMzkwODgxNCwwIEM2Ny4xOTcwOTEyLDAuMTQ0Mzg1NDggNTkuNjkzMTk4NCw0LjYxOTMyMzYzIDU1LjY3MTQzOTgsMTEuNzU5NjY3IEwzLjA1MjkyOTg1LDEwMi45OTcwODMgQy0xLjAxNzY0MzI4LDExMC4wODAzNzMgLTEuMDE3NjQzMjgsMTE4Ljc5MzE0NiAzLjA1MjkyOTg1LDEyNS44NzY0MzYgTDU1LjY1MTQ0MDQsMjE3Ljg3MzgzIEM1OS42MzE5NzU1LDIyNS4xMTI3MDcgNjcuMTE1OTA1MiwyMjkuNzM1MTM0IDc1LjM3MDg4MiwyMzAuMDUzNDg2IEwxODAuNTg3OTAzLDIzMC4wNTM0ODYgQzE4OC44NDI0NDIsMjI5Ljc3MDE0NCAxOTYuMzM5ODA5LDIyNS4xNjY4OTYgMjAwLjMyNzM0NCwyMTcuOTMzODI5IEwyNTIuOTI1ODU0LDEyNi40NTY0MTkgQzI1Ny4wMjQ3MTUsMTE5LjI1OTMxMSAyNTcuMDI0NzE1LDExMC40MzQxODUgMjUyLjkyNTg1NCwxMDMuMjM3MDc3IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KCQk8Zz4KCQkJCTxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4KCQkJCQkJPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KCQkJCTwvbWFzaz4KCQkJCTxnIGZpbGwtcnVsZT0ibm9uemVybyI+PC9nPgoJCQkJPHBhdGggZD0iTTI1Mi45MjU4NTQsMTAzLjIzNzA3NyBMMjAwLjMyNzM0NCwxMS43NTk2NjcgQzE5Ni4zMDI1NzksNC42MjIyNTcwMyAxODguODAwNTQsMC4xNDg0MjQ3MjYgMTgwLjYwNzkwMiwwIEw3NS4zOTA4ODE0LDAgQzY3LjE5NzA5MTIsMC4xNDQzODU0OCA1OS42OTMxOTg0LDQuNjE5MzIzNjMgNTUuNjcxNDM5OCwxMS43NTk2NjcgTDMuMDUyOTI5ODUsMTAyLjk5NzA4MyBDLTEuMDE3NjQzMjgsMTEwLjA4MDM3MyAtMS4wMTc2NDMyOCwxMTguNzkzMTQ2IDMuMDUyOTI5ODUsMTI1Ljg3NjQzNiBMNTUuNjUxNDQwNCwyMTcuODczODMgQzU5LjYzMTk3NTUsMjI1LjExMjcwNyA2Ny4xMTU5MDUyLDIyOS43MzUxMzQgNzUuMzcwODgyLDIzMC4wNTM0ODYgTDE4MC41ODc5MDMsMjMwLjA1MzQ4NiBDMTg4Ljg0MjQ0MiwyMjkuNzcwMTQ0IDE5Ni4zMzk4MDksMjI1LjE2Njg5NiAyMDAuMzI3MzQ0LDIxNy45MzM4MjkgTDI1Mi45MjU4NTQsMTI2LjQ1NjQxOSBDMjU3LjAyNDcxNSwxMTkuMjU5MzExIDI1Ny4wMjQ3MTUsMTEwLjQzNDE4NSAyNTIuOTI1ODU0LDEwMy4yMzcwNzcgWiIgZmlsbD0iIzQyODVGNCIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODcuMTY3NjA1LDg0LjczMTYwMyBMMTc5LjkxNTcxMSw5Mi42NDA5NDg1IEwxODEuNTQ5Mzc5LDEzOS42Mzg3OTcgTDE3NC42NzYwMTksMTQ5LjYwMDE5IEwxNzAuNjkxNDYyLDE0NS42MTU2MzMgTDE3NC4zNTcyNTQsMTQ1LjYxNTYzMyBMMTc0LjM1NzI1NCwxMjkuMzE4Nzk1IEwxNTYuNzY1NDM1LDExMS43MjY5NzYgTDE0My40Njg3NDYsMTE4LjM3MzA0NyBMOTkuMzY3ODkyOSw3NC4xNzI1MjcxIEw3OC4xMzAyMDQ1LDg1LjU0ODQzNzEgTDc1LjUwMDM5NywxMDcuNTgzMDM3IEw4Mi45NTE1MTg0LDE0Ny45MDY3NTMgTDkzLjc0OTY2NzcsMTU4LjQ4NTc1MiBMODguODI4NzM5OSwxNjUuNDc4NjQ5IEwxNTMuMDc2MDk4LDIzMS4yMzY4MTYgTDE3OS45MTU3MTEsMjMxLjIzNjgxNiBDMTg4LjEzODYxNCwyMzAuOTU0NTYgMTk3LjA0NDI3NiwyMjUuNTY1Njk4IDIwMS4wMTY1MjgsMjE4LjM2MDM1MiBMMjQ0Ljc5NTMzNiwxNDIuMzU2OTM0IEwxODcuMTY3NjA1LDg0LjczMTYwMyBaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG9wYWNpdHk9IjAuMDcwMDAwMDAwMyIgbWFzaz0idXJsKCNtYXNrLTIpIj48L3BhdGg+CgkJCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSIgcG9pbnRzPSI4OC44Mjg3Mzk5IDE2NS40Nzg2NDkgOTkuMzY3ODkyOSAxNTQuOTM5NDk2IDgzLjU2OTEyNDcgMTM5LjE0MDcyOCA4My41NjkxMjQ3IDg5Ljk3MTI5NTMgOTkuMzY3ODkyOSA3NC4xNzI1MjcxIDg4LjgyODczOTkgNjMuNjMzMzc0MSA2Ny43MzA1MTEgODQuNzMxNjAzIDY3LjczMDUxMSAxNDQuMzgwNDIiPjwvcG9seWdvbj4KCQkJCTxjaXJjbGUgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI21hc2stMikiIGN4PSIxMDUuMTQ1NSIgY3k9IjExNC41NTYwMTIiIHI9IjcuNDcxMDQ0MjMiPjwvY2lyY2xlPgoJCQkJPGNpcmNsZSBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSIgY3g9IjEyNy40OTg4NjUiIGN5PSIxMTQuNTU2MDEyIiByPSI3LjQ3MTA0NDIzIj48L2NpcmNsZT4KCQkJCTxjaXJjbGUgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI21hc2stMikiIGN4PSIxNDkuODUyMjI5IiBjeT0iMTE0LjU1NjAxMiIgcj0iNy40NzEwNDQyMyI+PC9jaXJjbGU+CgkJCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG1hc2s9InVybCgjbWFzay0yKSIgcG9pbnRzPSIxNjYuMDY5Mzc2IDYzLjYzMzM3NDEgMTU1LjUzMDIyMyA3NC4xNzI1MjcxIDE3MS4zMjg5OTEgODkuOTcxMjk1MyAxNzEuMzI4OTkxIDEzOS4xNDA3MjggMTU1LjUzMDIyMyAxNTQuOTM5NDk2IDE2Ni4wNjkzNzYgMTY1LjQ3ODY0OSAxODcuMTY3NjA1IDE0NC4zODA0MiAxODcuMTY3NjA1IDg0LjczMTYwMyI+PC9wb2x5Z29uPgoJCTwvZz4KPC9zdmc+Cg==", + "camel.apache.org/provider": "Apache Software Foundation", + "camel.apache.org/kamelet.group": "Google Vertex AI", + "camel.apache.org/kamelet.namespace": "GCP" + }, + "labels": { + "camel.apache.org/kamelet.type": "sink" + } + }, + "spec": { + "definition": { + "title": "Google Vertex AI Sink", + "description": "Send data to Google Vertex AI for generating content with generative AI models.", + "required": [ + "projectId", + "location", + "modelId" + ], + "type": "object", + "properties": { + "projectId": { + "title": "Google Cloud Project Id", + "description": "The Google Cloud Project ID.", + "type": "string" + }, + "location": { + "title": "Google Cloud Location", + "description": "The Google Cloud region (e.g., us-central1).", + "type": "string" + }, + "modelId": { + "title": "Model Id", + "description": "The Model ID to use for predictions (e.g., gemini-2.5-pro).", + "type": "string" + }, + "serviceAccountKey": { + "title": "Service Account Key", + "description": "The service account key to use as credentials for the Vertex AI client. You must encode this value in base64.", + "type": "binary", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "operation": { + "title": "Operation", + "description": "The operation to perform.", + "type": "string", + "default": "generateText", + "enum": [ + "generateText", + "generateChat", + "generateImage", + "generateEmbeddings", + "generateCode", + "generateMultimodal", + "rawPredict" + ] + }, + "temperature": { + "title": "Temperature", + "description": "Controls randomness in generation. Lower values make output more deterministic. Range 0.0 to 1.0.", + "type": "string" + }, + "maxOutputTokens": { + "title": "Max Output Tokens", + "description": "Maximum number of tokens to generate in the response.", + "type": "string" + }, + "topP": { + "title": "Top P", + "description": "Nucleus sampling parameter. Considers tokens with top_p probability mass. Range 0.0 to 1.0.", + "type": "string" + }, + "topK": { + "title": "Top K", + "description": "Only sample from the top K options for each subsequent token.", + "type": "string" + } + } + }, + "dependencies": [ + "camel:core", + "camel:kamelet", + "camel:google-vertexai" + ], + "template": { + "from": { + "uri": "kamelet:source", + "steps": [ + { + "to": { + "uri": "google-vertexai:{{projectId}}:{{location}}:{{modelId}}", + "parameters": { + "serviceAccountKey": "{{?serviceAccountKey}}", + "operation": "{{operation}}", + "temperature": "{{?temperature}}", + "maxOutputTokens": "{{?maxOutputTokens}}", + "topP": "{{?topP}}", + "topK": "{{?topK}}" + } + } + } + ] + } + } + }, + "propertiesSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Google Vertex AI Sink", + "description": "Send data to Google Vertex AI for generating content with generative AI models.", + "required": [ + "projectId", + "location", + "modelId" + ], + "properties": { + "projectId": { + "type": "string", + "title": "Google Cloud Project Id", + "description": "The Google Cloud Project ID." + }, + "location": { + "type": "string", + "title": "Google Cloud Location", + "description": "The Google Cloud region (e.g., us-central1)." + }, + "modelId": { + "type": "string", + "title": "Model Id", + "description": "The Model ID to use for predictions (e.g., gemini-2.5-pro)." + }, + "serviceAccountKey": { + "type": "string", + "$comment": "type:binary", + "title": "Service Account Key", + "description": "The service account key to use as credentials for the Vertex AI client. You must encode this value in base64." + }, + "operation": { + "type": "string", + "title": "Operation", + "description": "The operation to perform.", + "enum": [ + "generateText", + "generateChat", + "generateImage", + "generateEmbeddings", + "generateCode", + "generateMultimodal", + "rawPredict" + ], + "default": "generateText" + }, + "temperature": { + "type": "string", + "title": "Temperature", + "description": "Controls randomness in generation. Lower values make output more deterministic. Range 0.0 to 1.0." + }, + "maxOutputTokens": { + "type": "string", + "title": "Max Output Tokens", + "description": "Maximum number of tokens to generate in the response." + }, + "topP": { + "type": "string", + "title": "Top P", + "description": "Nucleus sampling parameter. Considers tokens with top_p probability mass. Range 0.0 to 1.0." + }, + "topK": { + "type": "string", + "title": "Top K", + "description": "Only sample from the top K options for each subsequent token." + } + } + } +} \ No newline at end of file