--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.14.0 name: aiservices.hub.traefik.io 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: type: string required: - token type: object azureOpenai: description: AzureOpenAI configures AzureOpenAI. properties: apiKey: type: string 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: - apiKey - 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: type: string required: - token type: object gemini: description: Gemini configures Gemini backend. properties: apiKey: 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: - apiKey type: object mistral: description: Mistral configures Mistral AI backend. properties: apiKey: 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: - apiKey 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: 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: type: string required: - token type: object type: object type: object served: true storage: true