Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions helm/kagent/templates/modelconfig.yaml
Original file line number Diff line number Diff line change
@@ -1,33 +1,42 @@
{{- $dot := . }}
{{- $defaultProfider := .Values.providers.default | default "openAI" }}
{{- $model := index .Values.providers $defaultProfider }}
{{- if hasKey .Values.providers $defaultProfider | not }}
{{- fail (printf "Provider key=%s is not found under .Values.providers" $defaultProfider) }}
{{- $defaultProvider := .Values.providers.default | default "openAI" }}
{{- if hasKey .Values.providers $defaultProvider | not }}
{{- fail (printf "Provider key=%s is not found under .Values.providers" $defaultProvider) }}
{{- end }}
{{- range $providerKey, $model := .Values.providers }}
{{- if ne $providerKey "default" }}
---
apiVersion: kagent.dev/v1alpha2
kind: ModelConfig
metadata:
{{- if eq $providerKey $defaultProvider }}
name: {{ include "kagent.defaultModelConfigName" $dot | quote }}
namespace: {{ include "kagent.namespace" . }}
{{- else }}
name: {{ printf "%s-model-config" $providerKey| lower }}
{{- end }}
namespace: {{ include "kagent.namespace" $dot }}
labels:
{{- include "kagent.labels" $dot | nindent 4 }}
kagent.dev/provider: {{ $providerKey | quote }}
{{- if eq $providerKey $defaultProvider }}
kagent.dev/default: "true"
{{- end }}
spec:
{{- with $model }}
provider: {{ .provider | quote }}
model: {{ .model | quote }}
provider: {{ $model.provider | quote }}
model: {{ $model.model | quote }}
{{- if $model.apiKeySecretRef }}
apiKeySecret: {{.apiKeySecretRef}}
apiKeySecret: {{ $model.apiKeySecretRef }}
{{- end }}
{{- if $model.apiKeySecretKey }}
apiKeySecretKey: {{.apiKeySecretKey}}
apiKeySecretKey: {{ $model.apiKeySecretKey }}
{{- end }}
{{- if hasKey $model "defaultHeaders" }}
defaultHeaders:
{{- toYaml $model.defaultHeaders | nindent 4 }}
{{- end }}
{{- if $model.config }}
{{ $dot.Values.providers.default }}:
{{ $providerKey }}:
{{- toYaml $model.config | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
39 changes: 37 additions & 2 deletions helm/kagent/tests/modelconfig_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,79 +5,108 @@ tests:
- it: should render modelconfig with default provider
asserts:
- hasDocuments:
count: 1
count: 5
- equal:
path: metadata.name
value: default-model-config
documentIndex: 4
- equal:
path: spec.provider
value: "OpenAI"
documentIndex: 4
- equal:
path: spec.model
value: "gpt-4.1-mini"
documentIndex: 4

- it: should use openai configuration by default
asserts:
- equal:
path: spec.provider
value: "OpenAI"
documentIndex: 4
- equal:
path: spec.model
value: "gpt-4.1-mini"
documentIndex: 4
- equal:
path: spec.apiKeySecret
value: kagent-openai
documentIndex: 4
- equal:
path: spec.apiKeySecretKey
value: OPENAI_API_KEY
documentIndex: 4

- it: should use anthropic when set as default provider
set:
providers:
default: anthropic
asserts:
- equal:
path: metadata.name
value: default-model-config
documentIndex: 0
- equal:
path: spec.provider
value: "Anthropic"
documentIndex: 0
- equal:
path: spec.model
value: "claude-3-5-haiku-20241022"
documentIndex: 0
- equal:
path: spec.apiKeySecret
value: kagent-anthropic
documentIndex: 0
- equal:
path: spec.apiKeySecretKey
value: ANTHROPIC_API_KEY
documentIndex: 0

- it: should use azure openai when set as default provider
set:
providers:
default: azureOpenAI
asserts:
- equal:
path: metadata.name
value: default-model-config
documentIndex: 1
- equal:
path: spec.provider
value: "AzureOpenAI"
documentIndex: 1
- equal:
path: spec.model
value: "gpt-4.1-mini"
documentIndex: 1
- equal:
path: spec.apiKeySecret
value: kagent-azure-openai
documentIndex: 1
- equal:
path: spec.apiKeySecretKey
value: AZUREOPENAI_API_KEY
documentIndex: 1

- it: should configure ollama provider
set:
providers:
default: ollama
asserts:
- equal:
path: metadata.name
value: default-model-config
documentIndex: 3
- equal:
path: spec.provider
value: "Ollama"
documentIndex: 3
- equal:
path: spec.model
value: "llama3.2"
documentIndex: 3

- it: should use custom model when configured
set:
Expand All @@ -88,29 +117,35 @@ tests:
- equal:
path: spec.model
value: "gpt-4-turbo"
documentIndex: 4

- it: should have correct labels
asserts:
- equal:
path: metadata.labels["app.kubernetes.io/name"]
value: kagent
documentIndex: 4
- equal:
path: metadata.labels["app.kubernetes.io/instance"]
value: RELEASE-NAME
documentIndex: 4
- equal:
path: metadata.labels["app.kubernetes.io/managed-by"]
value: Helm
documentIndex: 4

- it: should be in correct namespace
asserts:
- equal:
path: metadata.namespace
value: NAMESPACE
documentIndex: 4

- it: should use custom namespace when overridden
set:
namespaceOverride: "custom-namespace"
asserts:
- equal:
path: metadata.namespace
value: custom-namespace
value: custom-namespace
documentIndex: 4
Loading