apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
    controller-gen.kubebuilder.io/version: v0.17.1
  name: aiservices.hub.traefik.io
  namespace: traefik
spec:
  group: hub.traefik.io
  names:
    kind: AIService
    listKind: AIServiceList
    plural: aiservices
    singular: aiservice
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: AIService is a Kubernetes-like Service to interact with a text-based LLM provider. It defines the parameters and credentials required to interact with various LLM providers.
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: The desired behavior of this AIService.
              properties:
                anthropic:
                  description: Anthropic configures Anthropic backend.
                  properties:
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    token:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                  type: object
                azureOpenai:
                  description: AzureOpenAI configures AzureOpenAI.
                  properties:
                    apiKeySecret:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                    baseUrl:
                      type: string
                    deploymentName:
                      type: string
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                  required:
                    - baseUrl
                    - deploymentName
                  type: object
                bedrock:
                  description: Bedrock configures Bedrock backend.
                  properties:
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    region:
                      type: string
                    systemMessage:
                      type: boolean
                  type: object
                cohere:
                  description: Cohere configures Cohere backend.
                  properties:
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    token:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                  type: object
                deepSeek:
                  description: DeepSeek configures DeepSeek.
                  properties:
                    baseUrl:
                      type: string
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    token:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                  type: object
                gemini:
                  description: Gemini configures Gemini backend.
                  properties:
                    apiKey:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                  type: object
                mistral:
                  description: Mistral configures Mistral AI backend.
                  properties:
                    apiKey:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                  type: object
                ollama:
                  description: Ollama configures Ollama backend.
                  properties:
                    baseUrl:
                      type: string
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                  required:
                    - baseUrl
                  type: object
                openai:
                  description: OpenAI configures OpenAI.
                  properties:
                    baseUrl:
                      type: string
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    token:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                  type: object
                qWen:
                  description: QWen configures QWen.
                  properties:
                    baseUrl:
                      type: string
                    model:
                      type: string
                    params:
                      description: Params holds the LLM hyperparameters.
                      properties:
                        frequencyPenalty:
                          type: number
                        maxTokens:
                          type: integer
                        presencePenalty:
                          type: number
                        temperature:
                          type: number
                        topP:
                          type: number
                      type: object
                    token:
                      description: SecretReference references a kubernetes secret.
                      properties:
                        secretName:
                          maxLength: 253
                          type: string
                      required:
                        - secretName
                      type: object
                  type: object
              type: object
          type: object
      served: true
      storage: true
