google-vertexai-sink/kamelet.json

184 lines
9.8 KiB
JSON

{
"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."
}
}
}
}