diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 9630650a5..35629fc9b 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -186,8 +186,6 @@ * xref:nats-source.adoc[] * xref:nominatim-geocode-action.adoc[] * xref:ogcapi-features-action.adoc[] -* xref:openai-classification-action.adoc[] -* xref:openai-completion-action.adoc[] * xref:opensearch-index-sink.adoc[] * xref:opensearch-search-source.adoc[] * xref:oracle-database-sink.adoc[] diff --git a/kamelets/openai-classification-action.kamelet.yaml b/kamelets/openai-classification-action.kamelet.yaml deleted file mode 100644 index 5d80ec440..000000000 --- a/kamelets/openai-classification-action.kamelet.yaml +++ /dev/null @@ -1,148 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Kamelet -metadata: - name: openai-classification-action - annotations: - camel.apache.org/kamelet.support.level: "Stable" - camel.apache.org/catalog.version: "4.7.0-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODk0IiBoZWlnaHQ9IjE3MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNjI1LjU1IDM1LjIyYy0xMy43NSAwLTIzLjU3IDQuNy0yOC4zOSAxMy41OWwtMi41OSA0Ljc5VjM3LjU0aC0yMi40djk3Ljg1aDIzLjU2Vjc3LjE4YzAtMTMuOTEgNy41NS0yMS44OSAyMC43My0yMS44OSAxMi41NiAwIDE5Ljc2IDcuNzYgMTkuNzYgMjEuMzF2NTguNzloMjMuNTZ2LTYzYzAtMjMuMjYtMTIuOC0zNy4xNy0zNC4yMy0zNy4xN3ptLTExNC4yMiAwYy0yNy43OSAwLTQ1LjA2IDE3LjMzLTQ1LjA2IDQ1LjI1djEzLjc0YzAgMjYuODMgMTcuNDIgNDMuNTEgNDUuNDUgNDMuNTEgMTguNzQgMCAzMS44OC02Ljg4IDQwLjE1LTIxbC0xNC42MS04LjM5Yy02LjExIDguMTUtMTUuODYgMTMuMTktMjUuNTQgMTMuMTktMTQuMTkgMC0yMi42Ny04Ljc2LTIyLjY3LTIzLjQ0di0zLjg5aDY1Ljc5Vjc3Ljk1YzAtMjYtMTcuMDgtNDIuNzMtNDMuNTEtNDIuNzN6bTIyLjA4IDQzLjE0aC00NC4zNnYtMi4zNGMwLTE2LjEyIDcuOTEtMjUgMjIuMjgtMjUgMTMuODMgMCAyMi4wOCA4Ljc2IDIyLjA4IDIzLjQ0djMuOXptMzYwLjI0LTU2LjkzVjIuNzFIODEyLjJ2MTguNzJoMjguNTZ2OTUuMjVIODEyLjJ2MTguNzFoODEuNDV2LTE4LjcxaC0yOC41NlYyMS40M2gyOC41NnpNMjc2IDBjLTM2LjM5IDAtNTkgMjIuNjgtNTkgNTkuMTh2MTkuNzRjMCAzNi41MSAyMi42IDU5LjE4IDU5IDU5LjE4czU5LTIyLjY3IDU5LTU5LjE4VjU5LjE4QzMzNC45OSAyMi42OCAzMTIuMzggMCAyNzYgMHptMzQuNjYgODAuMjdjMCAyNC4yNC0xMi42MyAzOC4xNS0zNC42NiAzOC4xNS0yMi4wMyAwLTM0LjY3LTEzLjkxLTM0LjY3LTM4LjE1VjU3LjgzYzAtMjQuMjQgMTIuNjMtMzguMTUgMzQuNjYtMzguMTUgMjIuMDMgMCAzNC42NiAxMy45MSAzNC42NiAzOC4xNWwuMDEgMjIuNDR6bTk4LjMxLTQ1Yy0xMi4zNiAwLTIzLjA3IDUuMTEtMjguNjQgMTMuNjlsLTIuNTQgMy45VjM3LjU0SDM1NS40djEzMS41MmgyMy41NXYtNDcuNjNsMi41MyAzLjc0YzUuMyA3Ljg1IDE1LjY1IDEyLjU1IDI3LjY4IDEyLjU1IDIwLjMxIDAgNDAuOC0xMy4yOCA0MC44LTQyLjkzVjc4LjEzYzAtMjEuMzUtMTIuNjMtNDIuOTEtNDEtNDIuOTFsLjAxLjA1em0xNy40NCA1OC40YzAgMTUuNzctOS4yIDI1LjU3LTI0IDI1LjU3LTEzLjggMC0yMy40NC0xMC4zNS0yMy40NC0yNS4xOHYtMTQuN2MwLTE1LjA2IDkuNzItMjUuNTcgMjMuNjMtMjUuNTcgMTQuNyAwIDIzLjgzIDkuOCAyMy44MyAyNS41N2wtLjAyIDE0LjMxek03MjQuODggMi43NmwtNDcuNTUgMTMyLjYzaDIzLjlsOS4xLTI4LjQ0aDU0LjY1bC4wOS4yOCA5IDI4LjE2SDc5OEw3NTAuNDEgMi43MWwtMjUuNTMuMDV6bS04LjY3IDg1LjUybDIxLjQ0LTY3LjE1IDIxLjIzIDY3LjA3LTQyLjY3LjA4ek0xNTUuODA4IDY5LjE4MmE0Mi4xNTcgNDIuMTU3IDAgMCAwLTMuNjMyLTM0LjU5MmMtOS4yMjItMTYuMDUxLTI3Ljc1Ni0yNC4zMDgtNDUuODU2LTIwLjQyOWE0Mi43MjQgNDIuNzI0IDAgMCAwLTcyLjM4NCAxNS4yOTcgNDIuMTU3IDQyLjE1NyAwIDAgMC0yOC4xNiAyMC40MjljLTkuMzIyIDE2LjAyNS03LjIwNiAzNi4yNCA1LjIzMiA0OS45ODhhNDIuMTI0IDQyLjEyNCAwIDAgMCAzLjYgMzQuNTkyYzkuMjMyIDE2LjA1NyAyNy43NzggMjQuMzEzIDQ1Ljg4OSAyMC40MjlhNDIuMTU3IDQyLjE1NyAwIDAgMCAzMS43NiAxNC4xNjNjMTguNTUyLjAxNyAzNC45OS0xMS45NiA0MC42NTYtMjkuNjI2YTQyLjE5IDQyLjE5IDAgMCAwIDI4LjE2LTIwLjQyOWM5LjIxLTE1Ljk5NyA3LjA4NS0zNi4xMDMtNS4yNjUtNDkuODIyem0tNjMuNTUyIDg4LjgxM2EzMS41MjYgMzEuNTI2IDAgMCAxLTIwLjI2Mi03LjMzMWwxLS41NjcgMzMuNjU5LTE5LjQyOWE1LjU5OSA1LjU5OSAwIDAgMCAyLjc2Ni00Ljc5OVY3OC40MTNsMTQuMjMgOC4yMzJhLjUuNSAwIDAgMSAuMjY3LjM2NnYzOS4zMjVjLS4wMzcgMTcuNDctMTQuMTkgMzEuNjIzLTMxLjY2IDMxLjY2em0tNjguMDUxLTI5LjA2YTMxLjQ5MyAzMS40OTMgMCAwIDEtMy43NjYtMjEuMjI4bDEgLjYgMzMuNjkyIDE5LjQyOGE1LjQzMiA1LjQzMiAwIDAgMCA1LjQ5OSAwbDQxLjE1Ny0yMy43Mjd2MTYuNDNhLjU2Ny41NjcgMCAwIDEtLjIzMy40MzJsLTM0LjA5MiAxOS42NjNjLTE1LjE1IDguNzI3LTM0LjUwNSAzLjUzOC00My4yNTctMTEuNTk4ek0xNS4zNCA1NS42MmEzMS41OTMgMzEuNTkzIDAgMCAxIDE2LjY2My0xMy44OTd2MzkuOTlhNS4zOTkgNS4zOTkgMCAwIDAgMi43MzMgNC43NjZsNDAuOTU3IDIzLjYyOC0xNC4yMyA4LjIzMmEuNTMzLjUzMyAwIDAgMS0uNSAwbC0zNC4wMjUtMTkuNjNDMTEuODE4IDg5Ljk0NiA2LjYzMyA3MC42MDUgMTUuMzQgNTUuNDUzdi4xNjd6bTExNi45MDcgMjcuMTZsLTQxLjA5LTIzLjg2MSAxNC4xOTYtOC4xOThhLjUzMy41MzMgMCAwIDEgLjUgMGwzNC4wMjYgMTkuNjYyYTMxLjY2IDMxLjY2IDAgMCAxLTQuNzY2IDU3LjA4N1Y4Ny40NzhhNS41NjUgNS41NjUgMCAwIDAtMi44NjYtNC42OTl6bTE0LjE2My0yMS4yOTVsLTEtLjYtMzMuNjI1LTE5LjU5NWE1LjQ2NSA1LjQ2NSAwIDAgMC01LjUzMiAwTDY1LjEyOSA2NS4wMTZ2LTE2LjQzYS40NjcuNDY3IDAgMCAxIC4yLS40MzJsMzQuMDI1LTE5LjYzYTMxLjY5MyAzMS42OTMgMCAwIDEgNDcuMDU2IDMyLjgyN3YuMTMzek01Ny4zNjQgOTAuNjExbC0xNC4yMy04LjE5OGEuNTY3LjU2NyAwIDAgMS0uMjY3LS40VjQyLjc4OEEzMS42OTMgMzEuNjkzIDAgMCAxIDk0LjgyMiAxOC40NmwtMSAuNTY3LTMzLjY1OSAxOS40MjlhNS41OTkgNS41OTkgMCAwIDAtMi43NjYgNC43OTlsLS4wMzMgNDcuMzU2em03LjczMi0xNi42NjNsMTguMzI5LTEwLjU2NCAxOC4zNjIgMTAuNTY0djIxLjEyOGwtMTguMjk2IDEwLjU2NUw2NS4xMyA5NS4wNzZsLS4wMzMtMjEuMTI4eiIvPjwvc3ZnPg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "OpenAI" - camel.apache.org/kamelet.namespace: "AI" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "OpenAI Classification Action" - description: | - Classifies a sentence using the OpenAI API. - - It requires an OpenAI account (beta accounts available at https://beta.openai.com/). - - Training data for classification can be provided in advance by uploading a file with purpose="classifications", see: https://beta.openai.com/docs/api-reference/files/upload. - - The Kamelet accepts data in: - - - `text/plain` format (default) - - `application/json` format: see reference at https://beta.openai.com/docs/api-reference/classifications/create - - required: - - authorizationToken - type: object - properties: - authorizationToken: - title: Authorization Token - description: The authorization token to use to contact the openAI API - type: string - format: password - x-descriptors: - - urn:camel:group:credentials - format: - title: Format - description: The response format ('text/plain' or 'application/json' are supported) - type: string - default: text/plain - engine: - title: Engine - description: The OpenAI engine to use - type: string - default: davinci - file: - title: Examples File - description: The ID of an uploaded file containing examples for classification - type: string - example: "file-9HbeJXxtG7pg1YTXRx1v1fmn" - types: - in: - mediaType: text/plain - out: - mediaType: text/plain - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0-SNAPSHOT" - - "camel:jackson" - - "camel:jsonpath" - - "camel:core" - - "camel:kamelet" - - "camel:http" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[Content-Type]} == null || ${header[Content-Type]} == 'text/plain'" - steps: - - convertBodyTo: - type: "java.lang.String" - - transform: - simple: "${bean:type:java.util.Map?method=of('query', ${body})}" - - marshal: - json: {} - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - choice: - when: - - simple: "${body.has('model')} == false" - steps: - - setProperty: - name: "field" - constant: "model" - - setProperty: - name: "value" - constant: "{{engine}}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" - - setProperty: - name: "file" - constant: "{{file:}}" - - choice: - when: - - simple: "${body.has('file')} == false && ${exchangeProperty.file} != null" - steps: - - setProperty: - name: "field" - constant: "file" - - setProperty: - name: "value" - simple: "${exchangeProperty.file}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" - - marshal: - json: {} - - setHeader: - name: "Authorization" - simple: "Bearer {{authorizationToken}}" - - setHeader: - name: "Content-Type" - constant: "application/json" - - to: "https://api.openai.com/v1/classifications" - - removeHeader: - name: "Authorization" - - setProperty: - name: format - constant: "{{format}}" - - choice: - when: - - simple: "${exchangeProperty.format} == 'text/plain'" - steps: - - transform: - jsonpath: "$.label" - - setHeader: - name: "Content-Type" - constant: "text/plain" diff --git a/kamelets/openai-completion-action.kamelet.yaml b/kamelets/openai-completion-action.kamelet.yaml deleted file mode 100644 index fbea55dc4..000000000 --- a/kamelets/openai-completion-action.kamelet.yaml +++ /dev/null @@ -1,109 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Kamelet -metadata: - name: openai-completion-action - annotations: - camel.apache.org/kamelet.support.level: "Stable" - camel.apache.org/catalog.version: "4.7.0-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODk0IiBoZWlnaHQ9IjE3MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNjI1LjU1IDM1LjIyYy0xMy43NSAwLTIzLjU3IDQuNy0yOC4zOSAxMy41OWwtMi41OSA0Ljc5VjM3LjU0aC0yMi40djk3Ljg1aDIzLjU2Vjc3LjE4YzAtMTMuOTEgNy41NS0yMS44OSAyMC43My0yMS44OSAxMi41NiAwIDE5Ljc2IDcuNzYgMTkuNzYgMjEuMzF2NTguNzloMjMuNTZ2LTYzYzAtMjMuMjYtMTIuOC0zNy4xNy0zNC4yMy0zNy4xN3ptLTExNC4yMiAwYy0yNy43OSAwLTQ1LjA2IDE3LjMzLTQ1LjA2IDQ1LjI1djEzLjc0YzAgMjYuODMgMTcuNDIgNDMuNTEgNDUuNDUgNDMuNTEgMTguNzQgMCAzMS44OC02Ljg4IDQwLjE1LTIxbC0xNC42MS04LjM5Yy02LjExIDguMTUtMTUuODYgMTMuMTktMjUuNTQgMTMuMTktMTQuMTkgMC0yMi42Ny04Ljc2LTIyLjY3LTIzLjQ0di0zLjg5aDY1Ljc5Vjc3Ljk1YzAtMjYtMTcuMDgtNDIuNzMtNDMuNTEtNDIuNzN6bTIyLjA4IDQzLjE0aC00NC4zNnYtMi4zNGMwLTE2LjEyIDcuOTEtMjUgMjIuMjgtMjUgMTMuODMgMCAyMi4wOCA4Ljc2IDIyLjA4IDIzLjQ0djMuOXptMzYwLjI0LTU2LjkzVjIuNzFIODEyLjJ2MTguNzJoMjguNTZ2OTUuMjVIODEyLjJ2MTguNzFoODEuNDV2LTE4LjcxaC0yOC41NlYyMS40M2gyOC41NnpNMjc2IDBjLTM2LjM5IDAtNTkgMjIuNjgtNTkgNTkuMTh2MTkuNzRjMCAzNi41MSAyMi42IDU5LjE4IDU5IDU5LjE4czU5LTIyLjY3IDU5LTU5LjE4VjU5LjE4QzMzNC45OSAyMi42OCAzMTIuMzggMCAyNzYgMHptMzQuNjYgODAuMjdjMCAyNC4yNC0xMi42MyAzOC4xNS0zNC42NiAzOC4xNS0yMi4wMyAwLTM0LjY3LTEzLjkxLTM0LjY3LTM4LjE1VjU3LjgzYzAtMjQuMjQgMTIuNjMtMzguMTUgMzQuNjYtMzguMTUgMjIuMDMgMCAzNC42NiAxMy45MSAzNC42NiAzOC4xNWwuMDEgMjIuNDR6bTk4LjMxLTQ1Yy0xMi4zNiAwLTIzLjA3IDUuMTEtMjguNjQgMTMuNjlsLTIuNTQgMy45VjM3LjU0SDM1NS40djEzMS41MmgyMy41NXYtNDcuNjNsMi41MyAzLjc0YzUuMyA3Ljg1IDE1LjY1IDEyLjU1IDI3LjY4IDEyLjU1IDIwLjMxIDAgNDAuOC0xMy4yOCA0MC44LTQyLjkzVjc4LjEzYzAtMjEuMzUtMTIuNjMtNDIuOTEtNDEtNDIuOTFsLjAxLjA1em0xNy40NCA1OC40YzAgMTUuNzctOS4yIDI1LjU3LTI0IDI1LjU3LTEzLjggMC0yMy40NC0xMC4zNS0yMy40NC0yNS4xOHYtMTQuN2MwLTE1LjA2IDkuNzItMjUuNTcgMjMuNjMtMjUuNTcgMTQuNyAwIDIzLjgzIDkuOCAyMy44MyAyNS41N2wtLjAyIDE0LjMxek03MjQuODggMi43NmwtNDcuNTUgMTMyLjYzaDIzLjlsOS4xLTI4LjQ0aDU0LjY1bC4wOS4yOCA5IDI4LjE2SDc5OEw3NTAuNDEgMi43MWwtMjUuNTMuMDV6bS04LjY3IDg1LjUybDIxLjQ0LTY3LjE1IDIxLjIzIDY3LjA3LTQyLjY3LjA4ek0xNTUuODA4IDY5LjE4MmE0Mi4xNTcgNDIuMTU3IDAgMCAwLTMuNjMyLTM0LjU5MmMtOS4yMjItMTYuMDUxLTI3Ljc1Ni0yNC4zMDgtNDUuODU2LTIwLjQyOWE0Mi43MjQgNDIuNzI0IDAgMCAwLTcyLjM4NCAxNS4yOTcgNDIuMTU3IDQyLjE1NyAwIDAgMC0yOC4xNiAyMC40MjljLTkuMzIyIDE2LjAyNS03LjIwNiAzNi4yNCA1LjIzMiA0OS45ODhhNDIuMTI0IDQyLjEyNCAwIDAgMCAzLjYgMzQuNTkyYzkuMjMyIDE2LjA1NyAyNy43NzggMjQuMzEzIDQ1Ljg4OSAyMC40MjlhNDIuMTU3IDQyLjE1NyAwIDAgMCAzMS43NiAxNC4xNjNjMTguNTUyLjAxNyAzNC45OS0xMS45NiA0MC42NTYtMjkuNjI2YTQyLjE5IDQyLjE5IDAgMCAwIDI4LjE2LTIwLjQyOWM5LjIxLTE1Ljk5NyA3LjA4NS0zNi4xMDMtNS4yNjUtNDkuODIyem0tNjMuNTUyIDg4LjgxM2EzMS41MjYgMzEuNTI2IDAgMCAxLTIwLjI2Mi03LjMzMWwxLS41NjcgMzMuNjU5LTE5LjQyOWE1LjU5OSA1LjU5OSAwIDAgMCAyLjc2Ni00Ljc5OVY3OC40MTNsMTQuMjMgOC4yMzJhLjUuNSAwIDAgMSAuMjY3LjM2NnYzOS4zMjVjLS4wMzcgMTcuNDctMTQuMTkgMzEuNjIzLTMxLjY2IDMxLjY2em0tNjguMDUxLTI5LjA2YTMxLjQ5MyAzMS40OTMgMCAwIDEtMy43NjYtMjEuMjI4bDEgLjYgMzMuNjkyIDE5LjQyOGE1LjQzMiA1LjQzMiAwIDAgMCA1LjQ5OSAwbDQxLjE1Ny0yMy43Mjd2MTYuNDNhLjU2Ny41NjcgMCAwIDEtLjIzMy40MzJsLTM0LjA5MiAxOS42NjNjLTE1LjE1IDguNzI3LTM0LjUwNSAzLjUzOC00My4yNTctMTEuNTk4ek0xNS4zNCA1NS42MmEzMS41OTMgMzEuNTkzIDAgMCAxIDE2LjY2My0xMy44OTd2MzkuOTlhNS4zOTkgNS4zOTkgMCAwIDAgMi43MzMgNC43NjZsNDAuOTU3IDIzLjYyOC0xNC4yMyA4LjIzMmEuNTMzLjUzMyAwIDAgMS0uNSAwbC0zNC4wMjUtMTkuNjNDMTEuODE4IDg5Ljk0NiA2LjYzMyA3MC42MDUgMTUuMzQgNTUuNDUzdi4xNjd6bTExNi45MDcgMjcuMTZsLTQxLjA5LTIzLjg2MSAxNC4xOTYtOC4xOThhLjUzMy41MzMgMCAwIDEgLjUgMGwzNC4wMjYgMTkuNjYyYTMxLjY2IDMxLjY2IDAgMCAxLTQuNzY2IDU3LjA4N1Y4Ny40NzhhNS41NjUgNS41NjUgMCAwIDAtMi44NjYtNC42OTl6bTE0LjE2My0yMS4yOTVsLTEtLjYtMzMuNjI1LTE5LjU5NWE1LjQ2NSA1LjQ2NSAwIDAgMC01LjUzMiAwTDY1LjEyOSA2NS4wMTZ2LTE2LjQzYS40NjcuNDY3IDAgMCAxIC4yLS40MzJsMzQuMDI1LTE5LjYzYTMxLjY5MyAzMS42OTMgMCAwIDEgNDcuMDU2IDMyLjgyN3YuMTMzek01Ny4zNjQgOTAuNjExbC0xNC4yMy04LjE5OGEuNTY3LjU2NyAwIDAgMS0uMjY3LS40VjQyLjc4OEEzMS42OTMgMzEuNjkzIDAgMCAxIDk0LjgyMiAxOC40NmwtMSAuNTY3LTMzLjY1OSAxOS40MjlhNS41OTkgNS41OTkgMCAwIDAtMi43NjYgNC43OTlsLS4wMzMgNDcuMzU2em03LjczMi0xNi42NjNsMTguMzI5LTEwLjU2NCAxOC4zNjIgMTAuNTY0djIxLjEyOGwtMTguMjk2IDEwLjU2NUw2NS4xMyA5NS4wNzZsLS4wMzMtMjEuMTI4eiIvPjwvc3ZnPg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "OpenAI" - camel.apache.org/kamelet.namespace: "AI" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "OpenAI Completion Action" - description: | - Completes a sentence using the OpenAI API. - - It requires an OpenAI account (beta accounts available at https://beta.openai.com/). - - The Kamelet accepts data in: - - - `text/plain` format (default) - - `application/json` format: see reference at https://beta.openai.com/docs/api-reference/completions/create - - required: - - authorizationToken - type: object - properties: - authorizationToken: - title: Authorization Token - description: The authorization token to use to contact the openAI API - type: string - format: password - x-descriptors: - - urn:camel:group:credentials - format: - title: Format - description: The response format ('text/plain' or 'application/json' are supported) - type: string - default: text/plain - engine: - title: Engine - description: The OpenAI engine to use - type: string - default: davinci - types: - in: - mediaType: text/plain - out: - mediaType: text/plain - dependencies: - - "camel:jackson" - - "camel:jsonpath" - - "camel:core" - - "camel:kamelet" - - "camel:http" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[Content-Type]} == null || ${header[Content-Type]} == 'text/plain'" - steps: - - convertBodyTo: - type: "java.lang.String" - - transform: - simple: "${bean:type:java.util.Map?method=of('prompt', ${body})}" - - marshal: - json: {} - - setHeader: - name: "Authorization" - simple: "Bearer {{authorizationToken}}" - - setHeader: - name: "Content-Type" - constant: "application/json" - - to: "https://api.openai.com/v1/engines/{{engine}}/completions" - - removeHeader: - name: "Authorization" - - setProperty: - name: format - constant: "{{format}}" - - choice: - when: - - simple: "${exchangeProperty.format} == 'text/plain'" - steps: - - transform: - jsonpath: "$.choices[0].text" - - setHeader: - name: "Content-Type" - constant: "text/plain" diff --git a/library/camel-kamelets/src/main/resources/kamelets/openai-classification-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/openai-classification-action.kamelet.yaml deleted file mode 100644 index 5d80ec440..000000000 --- a/library/camel-kamelets/src/main/resources/kamelets/openai-classification-action.kamelet.yaml +++ /dev/null @@ -1,148 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Kamelet -metadata: - name: openai-classification-action - annotations: - camel.apache.org/kamelet.support.level: "Stable" - camel.apache.org/catalog.version: "4.7.0-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODk0IiBoZWlnaHQ9IjE3MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNjI1LjU1IDM1LjIyYy0xMy43NSAwLTIzLjU3IDQuNy0yOC4zOSAxMy41OWwtMi41OSA0Ljc5VjM3LjU0aC0yMi40djk3Ljg1aDIzLjU2Vjc3LjE4YzAtMTMuOTEgNy41NS0yMS44OSAyMC43My0yMS44OSAxMi41NiAwIDE5Ljc2IDcuNzYgMTkuNzYgMjEuMzF2NTguNzloMjMuNTZ2LTYzYzAtMjMuMjYtMTIuOC0zNy4xNy0zNC4yMy0zNy4xN3ptLTExNC4yMiAwYy0yNy43OSAwLTQ1LjA2IDE3LjMzLTQ1LjA2IDQ1LjI1djEzLjc0YzAgMjYuODMgMTcuNDIgNDMuNTEgNDUuNDUgNDMuNTEgMTguNzQgMCAzMS44OC02Ljg4IDQwLjE1LTIxbC0xNC42MS04LjM5Yy02LjExIDguMTUtMTUuODYgMTMuMTktMjUuNTQgMTMuMTktMTQuMTkgMC0yMi42Ny04Ljc2LTIyLjY3LTIzLjQ0di0zLjg5aDY1Ljc5Vjc3Ljk1YzAtMjYtMTcuMDgtNDIuNzMtNDMuNTEtNDIuNzN6bTIyLjA4IDQzLjE0aC00NC4zNnYtMi4zNGMwLTE2LjEyIDcuOTEtMjUgMjIuMjgtMjUgMTMuODMgMCAyMi4wOCA4Ljc2IDIyLjA4IDIzLjQ0djMuOXptMzYwLjI0LTU2LjkzVjIuNzFIODEyLjJ2MTguNzJoMjguNTZ2OTUuMjVIODEyLjJ2MTguNzFoODEuNDV2LTE4LjcxaC0yOC41NlYyMS40M2gyOC41NnpNMjc2IDBjLTM2LjM5IDAtNTkgMjIuNjgtNTkgNTkuMTh2MTkuNzRjMCAzNi41MSAyMi42IDU5LjE4IDU5IDU5LjE4czU5LTIyLjY3IDU5LTU5LjE4VjU5LjE4QzMzNC45OSAyMi42OCAzMTIuMzggMCAyNzYgMHptMzQuNjYgODAuMjdjMCAyNC4yNC0xMi42MyAzOC4xNS0zNC42NiAzOC4xNS0yMi4wMyAwLTM0LjY3LTEzLjkxLTM0LjY3LTM4LjE1VjU3LjgzYzAtMjQuMjQgMTIuNjMtMzguMTUgMzQuNjYtMzguMTUgMjIuMDMgMCAzNC42NiAxMy45MSAzNC42NiAzOC4xNWwuMDEgMjIuNDR6bTk4LjMxLTQ1Yy0xMi4zNiAwLTIzLjA3IDUuMTEtMjguNjQgMTMuNjlsLTIuNTQgMy45VjM3LjU0SDM1NS40djEzMS41MmgyMy41NXYtNDcuNjNsMi41MyAzLjc0YzUuMyA3Ljg1IDE1LjY1IDEyLjU1IDI3LjY4IDEyLjU1IDIwLjMxIDAgNDAuOC0xMy4yOCA0MC44LTQyLjkzVjc4LjEzYzAtMjEuMzUtMTIuNjMtNDIuOTEtNDEtNDIuOTFsLjAxLjA1em0xNy40NCA1OC40YzAgMTUuNzctOS4yIDI1LjU3LTI0IDI1LjU3LTEzLjggMC0yMy40NC0xMC4zNS0yMy40NC0yNS4xOHYtMTQuN2MwLTE1LjA2IDkuNzItMjUuNTcgMjMuNjMtMjUuNTcgMTQuNyAwIDIzLjgzIDkuOCAyMy44MyAyNS41N2wtLjAyIDE0LjMxek03MjQuODggMi43NmwtNDcuNTUgMTMyLjYzaDIzLjlsOS4xLTI4LjQ0aDU0LjY1bC4wOS4yOCA5IDI4LjE2SDc5OEw3NTAuNDEgMi43MWwtMjUuNTMuMDV6bS04LjY3IDg1LjUybDIxLjQ0LTY3LjE1IDIxLjIzIDY3LjA3LTQyLjY3LjA4ek0xNTUuODA4IDY5LjE4MmE0Mi4xNTcgNDIuMTU3IDAgMCAwLTMuNjMyLTM0LjU5MmMtOS4yMjItMTYuMDUxLTI3Ljc1Ni0yNC4zMDgtNDUuODU2LTIwLjQyOWE0Mi43MjQgNDIuNzI0IDAgMCAwLTcyLjM4NCAxNS4yOTcgNDIuMTU3IDQyLjE1NyAwIDAgMC0yOC4xNiAyMC40MjljLTkuMzIyIDE2LjAyNS03LjIwNiAzNi4yNCA1LjIzMiA0OS45ODhhNDIuMTI0IDQyLjEyNCAwIDAgMCAzLjYgMzQuNTkyYzkuMjMyIDE2LjA1NyAyNy43NzggMjQuMzEzIDQ1Ljg4OSAyMC40MjlhNDIuMTU3IDQyLjE1NyAwIDAgMCAzMS43NiAxNC4xNjNjMTguNTUyLjAxNyAzNC45OS0xMS45NiA0MC42NTYtMjkuNjI2YTQyLjE5IDQyLjE5IDAgMCAwIDI4LjE2LTIwLjQyOWM5LjIxLTE1Ljk5NyA3LjA4NS0zNi4xMDMtNS4yNjUtNDkuODIyem0tNjMuNTUyIDg4LjgxM2EzMS41MjYgMzEuNTI2IDAgMCAxLTIwLjI2Mi03LjMzMWwxLS41NjcgMzMuNjU5LTE5LjQyOWE1LjU5OSA1LjU5OSAwIDAgMCAyLjc2Ni00Ljc5OVY3OC40MTNsMTQuMjMgOC4yMzJhLjUuNSAwIDAgMSAuMjY3LjM2NnYzOS4zMjVjLS4wMzcgMTcuNDctMTQuMTkgMzEuNjIzLTMxLjY2IDMxLjY2em0tNjguMDUxLTI5LjA2YTMxLjQ5MyAzMS40OTMgMCAwIDEtMy43NjYtMjEuMjI4bDEgLjYgMzMuNjkyIDE5LjQyOGE1LjQzMiA1LjQzMiAwIDAgMCA1LjQ5OSAwbDQxLjE1Ny0yMy43Mjd2MTYuNDNhLjU2Ny41NjcgMCAwIDEtLjIzMy40MzJsLTM0LjA5MiAxOS42NjNjLTE1LjE1IDguNzI3LTM0LjUwNSAzLjUzOC00My4yNTctMTEuNTk4ek0xNS4zNCA1NS42MmEzMS41OTMgMzEuNTkzIDAgMCAxIDE2LjY2My0xMy44OTd2MzkuOTlhNS4zOTkgNS4zOTkgMCAwIDAgMi43MzMgNC43NjZsNDAuOTU3IDIzLjYyOC0xNC4yMyA4LjIzMmEuNTMzLjUzMyAwIDAgMS0uNSAwbC0zNC4wMjUtMTkuNjNDMTEuODE4IDg5Ljk0NiA2LjYzMyA3MC42MDUgMTUuMzQgNTUuNDUzdi4xNjd6bTExNi45MDcgMjcuMTZsLTQxLjA5LTIzLjg2MSAxNC4xOTYtOC4xOThhLjUzMy41MzMgMCAwIDEgLjUgMGwzNC4wMjYgMTkuNjYyYTMxLjY2IDMxLjY2IDAgMCAxLTQuNzY2IDU3LjA4N1Y4Ny40NzhhNS41NjUgNS41NjUgMCAwIDAtMi44NjYtNC42OTl6bTE0LjE2My0yMS4yOTVsLTEtLjYtMzMuNjI1LTE5LjU5NWE1LjQ2NSA1LjQ2NSAwIDAgMC01LjUzMiAwTDY1LjEyOSA2NS4wMTZ2LTE2LjQzYS40NjcuNDY3IDAgMCAxIC4yLS40MzJsMzQuMDI1LTE5LjYzYTMxLjY5MyAzMS42OTMgMCAwIDEgNDcuMDU2IDMyLjgyN3YuMTMzek01Ny4zNjQgOTAuNjExbC0xNC4yMy04LjE5OGEuNTY3LjU2NyAwIDAgMS0uMjY3LS40VjQyLjc4OEEzMS42OTMgMzEuNjkzIDAgMCAxIDk0LjgyMiAxOC40NmwtMSAuNTY3LTMzLjY1OSAxOS40MjlhNS41OTkgNS41OTkgMCAwIDAtMi43NjYgNC43OTlsLS4wMzMgNDcuMzU2em03LjczMi0xNi42NjNsMTguMzI5LTEwLjU2NCAxOC4zNjIgMTAuNTY0djIxLjEyOGwtMTguMjk2IDEwLjU2NUw2NS4xMyA5NS4wNzZsLS4wMzMtMjEuMTI4eiIvPjwvc3ZnPg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "OpenAI" - camel.apache.org/kamelet.namespace: "AI" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "OpenAI Classification Action" - description: | - Classifies a sentence using the OpenAI API. - - It requires an OpenAI account (beta accounts available at https://beta.openai.com/). - - Training data for classification can be provided in advance by uploading a file with purpose="classifications", see: https://beta.openai.com/docs/api-reference/files/upload. - - The Kamelet accepts data in: - - - `text/plain` format (default) - - `application/json` format: see reference at https://beta.openai.com/docs/api-reference/classifications/create - - required: - - authorizationToken - type: object - properties: - authorizationToken: - title: Authorization Token - description: The authorization token to use to contact the openAI API - type: string - format: password - x-descriptors: - - urn:camel:group:credentials - format: - title: Format - description: The response format ('text/plain' or 'application/json' are supported) - type: string - default: text/plain - engine: - title: Engine - description: The OpenAI engine to use - type: string - default: davinci - file: - title: Examples File - description: The ID of an uploaded file containing examples for classification - type: string - example: "file-9HbeJXxtG7pg1YTXRx1v1fmn" - types: - in: - mediaType: text/plain - out: - mediaType: text/plain - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0-SNAPSHOT" - - "camel:jackson" - - "camel:jsonpath" - - "camel:core" - - "camel:kamelet" - - "camel:http" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[Content-Type]} == null || ${header[Content-Type]} == 'text/plain'" - steps: - - convertBodyTo: - type: "java.lang.String" - - transform: - simple: "${bean:type:java.util.Map?method=of('query', ${body})}" - - marshal: - json: {} - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - choice: - when: - - simple: "${body.has('model')} == false" - steps: - - setProperty: - name: "field" - constant: "model" - - setProperty: - name: "value" - constant: "{{engine}}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" - - setProperty: - name: "file" - constant: "{{file:}}" - - choice: - when: - - simple: "${body.has('file')} == false && ${exchangeProperty.file} != null" - steps: - - setProperty: - name: "field" - constant: "file" - - setProperty: - name: "value" - simple: "${exchangeProperty.file}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" - - marshal: - json: {} - - setHeader: - name: "Authorization" - simple: "Bearer {{authorizationToken}}" - - setHeader: - name: "Content-Type" - constant: "application/json" - - to: "https://api.openai.com/v1/classifications" - - removeHeader: - name: "Authorization" - - setProperty: - name: format - constant: "{{format}}" - - choice: - when: - - simple: "${exchangeProperty.format} == 'text/plain'" - steps: - - transform: - jsonpath: "$.label" - - setHeader: - name: "Content-Type" - constant: "text/plain" diff --git a/library/camel-kamelets/src/main/resources/kamelets/openai-completion-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/openai-completion-action.kamelet.yaml deleted file mode 100644 index fbea55dc4..000000000 --- a/library/camel-kamelets/src/main/resources/kamelets/openai-completion-action.kamelet.yaml +++ /dev/null @@ -1,109 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Kamelet -metadata: - name: openai-completion-action - annotations: - camel.apache.org/kamelet.support.level: "Stable" - camel.apache.org/catalog.version: "4.7.0-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODk0IiBoZWlnaHQ9IjE3MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNjI1LjU1IDM1LjIyYy0xMy43NSAwLTIzLjU3IDQuNy0yOC4zOSAxMy41OWwtMi41OSA0Ljc5VjM3LjU0aC0yMi40djk3Ljg1aDIzLjU2Vjc3LjE4YzAtMTMuOTEgNy41NS0yMS44OSAyMC43My0yMS44OSAxMi41NiAwIDE5Ljc2IDcuNzYgMTkuNzYgMjEuMzF2NTguNzloMjMuNTZ2LTYzYzAtMjMuMjYtMTIuOC0zNy4xNy0zNC4yMy0zNy4xN3ptLTExNC4yMiAwYy0yNy43OSAwLTQ1LjA2IDE3LjMzLTQ1LjA2IDQ1LjI1djEzLjc0YzAgMjYuODMgMTcuNDIgNDMuNTEgNDUuNDUgNDMuNTEgMTguNzQgMCAzMS44OC02Ljg4IDQwLjE1LTIxbC0xNC42MS04LjM5Yy02LjExIDguMTUtMTUuODYgMTMuMTktMjUuNTQgMTMuMTktMTQuMTkgMC0yMi42Ny04Ljc2LTIyLjY3LTIzLjQ0di0zLjg5aDY1Ljc5Vjc3Ljk1YzAtMjYtMTcuMDgtNDIuNzMtNDMuNTEtNDIuNzN6bTIyLjA4IDQzLjE0aC00NC4zNnYtMi4zNGMwLTE2LjEyIDcuOTEtMjUgMjIuMjgtMjUgMTMuODMgMCAyMi4wOCA4Ljc2IDIyLjA4IDIzLjQ0djMuOXptMzYwLjI0LTU2LjkzVjIuNzFIODEyLjJ2MTguNzJoMjguNTZ2OTUuMjVIODEyLjJ2MTguNzFoODEuNDV2LTE4LjcxaC0yOC41NlYyMS40M2gyOC41NnpNMjc2IDBjLTM2LjM5IDAtNTkgMjIuNjgtNTkgNTkuMTh2MTkuNzRjMCAzNi41MSAyMi42IDU5LjE4IDU5IDU5LjE4czU5LTIyLjY3IDU5LTU5LjE4VjU5LjE4QzMzNC45OSAyMi42OCAzMTIuMzggMCAyNzYgMHptMzQuNjYgODAuMjdjMCAyNC4yNC0xMi42MyAzOC4xNS0zNC42NiAzOC4xNS0yMi4wMyAwLTM0LjY3LTEzLjkxLTM0LjY3LTM4LjE1VjU3LjgzYzAtMjQuMjQgMTIuNjMtMzguMTUgMzQuNjYtMzguMTUgMjIuMDMgMCAzNC42NiAxMy45MSAzNC42NiAzOC4xNWwuMDEgMjIuNDR6bTk4LjMxLTQ1Yy0xMi4zNiAwLTIzLjA3IDUuMTEtMjguNjQgMTMuNjlsLTIuNTQgMy45VjM3LjU0SDM1NS40djEzMS41MmgyMy41NXYtNDcuNjNsMi41MyAzLjc0YzUuMyA3Ljg1IDE1LjY1IDEyLjU1IDI3LjY4IDEyLjU1IDIwLjMxIDAgNDAuOC0xMy4yOCA0MC44LTQyLjkzVjc4LjEzYzAtMjEuMzUtMTIuNjMtNDIuOTEtNDEtNDIuOTFsLjAxLjA1em0xNy40NCA1OC40YzAgMTUuNzctOS4yIDI1LjU3LTI0IDI1LjU3LTEzLjggMC0yMy40NC0xMC4zNS0yMy40NC0yNS4xOHYtMTQuN2MwLTE1LjA2IDkuNzItMjUuNTcgMjMuNjMtMjUuNTcgMTQuNyAwIDIzLjgzIDkuOCAyMy44MyAyNS41N2wtLjAyIDE0LjMxek03MjQuODggMi43NmwtNDcuNTUgMTMyLjYzaDIzLjlsOS4xLTI4LjQ0aDU0LjY1bC4wOS4yOCA5IDI4LjE2SDc5OEw3NTAuNDEgMi43MWwtMjUuNTMuMDV6bS04LjY3IDg1LjUybDIxLjQ0LTY3LjE1IDIxLjIzIDY3LjA3LTQyLjY3LjA4ek0xNTUuODA4IDY5LjE4MmE0Mi4xNTcgNDIuMTU3IDAgMCAwLTMuNjMyLTM0LjU5MmMtOS4yMjItMTYuMDUxLTI3Ljc1Ni0yNC4zMDgtNDUuODU2LTIwLjQyOWE0Mi43MjQgNDIuNzI0IDAgMCAwLTcyLjM4NCAxNS4yOTcgNDIuMTU3IDQyLjE1NyAwIDAgMC0yOC4xNiAyMC40MjljLTkuMzIyIDE2LjAyNS03LjIwNiAzNi4yNCA1LjIzMiA0OS45ODhhNDIuMTI0IDQyLjEyNCAwIDAgMCAzLjYgMzQuNTkyYzkuMjMyIDE2LjA1NyAyNy43NzggMjQuMzEzIDQ1Ljg4OSAyMC40MjlhNDIuMTU3IDQyLjE1NyAwIDAgMCAzMS43NiAxNC4xNjNjMTguNTUyLjAxNyAzNC45OS0xMS45NiA0MC42NTYtMjkuNjI2YTQyLjE5IDQyLjE5IDAgMCAwIDI4LjE2LTIwLjQyOWM5LjIxLTE1Ljk5NyA3LjA4NS0zNi4xMDMtNS4yNjUtNDkuODIyem0tNjMuNTUyIDg4LjgxM2EzMS41MjYgMzEuNTI2IDAgMCAxLTIwLjI2Mi03LjMzMWwxLS41NjcgMzMuNjU5LTE5LjQyOWE1LjU5OSA1LjU5OSAwIDAgMCAyLjc2Ni00Ljc5OVY3OC40MTNsMTQuMjMgOC4yMzJhLjUuNSAwIDAgMSAuMjY3LjM2NnYzOS4zMjVjLS4wMzcgMTcuNDctMTQuMTkgMzEuNjIzLTMxLjY2IDMxLjY2em0tNjguMDUxLTI5LjA2YTMxLjQ5MyAzMS40OTMgMCAwIDEtMy43NjYtMjEuMjI4bDEgLjYgMzMuNjkyIDE5LjQyOGE1LjQzMiA1LjQzMiAwIDAgMCA1LjQ5OSAwbDQxLjE1Ny0yMy43Mjd2MTYuNDNhLjU2Ny41NjcgMCAwIDEtLjIzMy40MzJsLTM0LjA5MiAxOS42NjNjLTE1LjE1IDguNzI3LTM0LjUwNSAzLjUzOC00My4yNTctMTEuNTk4ek0xNS4zNCA1NS42MmEzMS41OTMgMzEuNTkzIDAgMCAxIDE2LjY2My0xMy44OTd2MzkuOTlhNS4zOTkgNS4zOTkgMCAwIDAgMi43MzMgNC43NjZsNDAuOTU3IDIzLjYyOC0xNC4yMyA4LjIzMmEuNTMzLjUzMyAwIDAgMS0uNSAwbC0zNC4wMjUtMTkuNjNDMTEuODE4IDg5Ljk0NiA2LjYzMyA3MC42MDUgMTUuMzQgNTUuNDUzdi4xNjd6bTExNi45MDcgMjcuMTZsLTQxLjA5LTIzLjg2MSAxNC4xOTYtOC4xOThhLjUzMy41MzMgMCAwIDEgLjUgMGwzNC4wMjYgMTkuNjYyYTMxLjY2IDMxLjY2IDAgMCAxLTQuNzY2IDU3LjA4N1Y4Ny40NzhhNS41NjUgNS41NjUgMCAwIDAtMi44NjYtNC42OTl6bTE0LjE2My0yMS4yOTVsLTEtLjYtMzMuNjI1LTE5LjU5NWE1LjQ2NSA1LjQ2NSAwIDAgMC01LjUzMiAwTDY1LjEyOSA2NS4wMTZ2LTE2LjQzYS40NjcuNDY3IDAgMCAxIC4yLS40MzJsMzQuMDI1LTE5LjYzYTMxLjY5MyAzMS42OTMgMCAwIDEgNDcuMDU2IDMyLjgyN3YuMTMzek01Ny4zNjQgOTAuNjExbC0xNC4yMy04LjE5OGEuNTY3LjU2NyAwIDAgMS0uMjY3LS40VjQyLjc4OEEzMS42OTMgMzEuNjkzIDAgMCAxIDk0LjgyMiAxOC40NmwtMSAuNTY3LTMzLjY1OSAxOS40MjlhNS41OTkgNS41OTkgMCAwIDAtMi43NjYgNC43OTlsLS4wMzMgNDcuMzU2em03LjczMi0xNi42NjNsMTguMzI5LTEwLjU2NCAxOC4zNjIgMTAuNTY0djIxLjEyOGwtMTguMjk2IDEwLjU2NUw2NS4xMyA5NS4wNzZsLS4wMzMtMjEuMTI4eiIvPjwvc3ZnPg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "OpenAI" - camel.apache.org/kamelet.namespace: "AI" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "OpenAI Completion Action" - description: | - Completes a sentence using the OpenAI API. - - It requires an OpenAI account (beta accounts available at https://beta.openai.com/). - - The Kamelet accepts data in: - - - `text/plain` format (default) - - `application/json` format: see reference at https://beta.openai.com/docs/api-reference/completions/create - - required: - - authorizationToken - type: object - properties: - authorizationToken: - title: Authorization Token - description: The authorization token to use to contact the openAI API - type: string - format: password - x-descriptors: - - urn:camel:group:credentials - format: - title: Format - description: The response format ('text/plain' or 'application/json' are supported) - type: string - default: text/plain - engine: - title: Engine - description: The OpenAI engine to use - type: string - default: davinci - types: - in: - mediaType: text/plain - out: - mediaType: text/plain - dependencies: - - "camel:jackson" - - "camel:jsonpath" - - "camel:core" - - "camel:kamelet" - - "camel:http" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[Content-Type]} == null || ${header[Content-Type]} == 'text/plain'" - steps: - - convertBodyTo: - type: "java.lang.String" - - transform: - simple: "${bean:type:java.util.Map?method=of('prompt', ${body})}" - - marshal: - json: {} - - setHeader: - name: "Authorization" - simple: "Bearer {{authorizationToken}}" - - setHeader: - name: "Content-Type" - constant: "application/json" - - to: "https://api.openai.com/v1/engines/{{engine}}/completions" - - removeHeader: - name: "Authorization" - - setProperty: - name: format - constant: "{{format}}" - - choice: - when: - - simple: "${exchangeProperty.format} == 'text/plain'" - steps: - - transform: - jsonpath: "$.choices[0].text" - - setHeader: - name: "Content-Type" - constant: "text/plain"