Skip to content

Commit 5dd7bb7

Browse files
authored
Merge pull request #163 from dgageot/gather-models
Gather model names instead of api token names
2 parents 92174f4 + e920680 commit 5dd7bb7

4 files changed

Lines changed: 29 additions & 25 deletions

File tree

pkg/config/models.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package config
2+
3+
import (
4+
"sort"
5+
6+
latest "github.com/docker/cagent/pkg/config/v2"
7+
)
8+
9+
func GatherModelNames(cfg *latest.Config) []string {
10+
modelNames := map[string]bool{}
11+
for _, model := range cfg.Models {
12+
modelNames[model.Provider+"/"+model.Model] = true
13+
}
14+
15+
var names []string
16+
for e := range modelNames {
17+
names = append(names, e)
18+
}
19+
sort.Strings(names)
20+
21+
return names
22+
}

pkg/oci/Dockerfile.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ LABEL com.docker.agent.runtime="cagent"
1717
LABEL org.opencontainers.image.description="{{ .Description }}"
1818
LABEL org.opencontainers.image.licenses="{{ .Licenses }}"
1919
LABEL com.docker.agent.mcp-servers="{{ .McpServers }}"
20-
LABEL com.docker.agent.secrets="{{ .Secrets }}"
20+
LABEL com.docker.agent.models="{{ .Models }}"

pkg/oci/build.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
_ "embed"
7+
"fmt"
78
"log/slog"
89
"os"
910
"os/exec"
@@ -12,7 +13,6 @@ import (
1213
"text/template"
1314

1415
"github.com/docker/cagent/pkg/config"
15-
"github.com/docker/cagent/pkg/secrets"
1616
)
1717

1818
//go:embed Dockerfile.template
@@ -32,7 +32,7 @@ func BuildDockerImage(ctx context.Context, agentFilePath, dockerImageName string
3232
}
3333

3434
// Analyze the config to find which secrets are needed
35-
modelSecrets := secrets.GatherEnvVarsForModels(cfg)
35+
modelNames := config.GatherModelNames(cfg)
3636
mcpServers := config.GatherMCPServerReferences(cfg)
3737

3838
// Generate the Dockerfile
@@ -44,13 +44,15 @@ func BuildDockerImage(ctx context.Context, agentFilePath, dockerImageName string
4444
"Description": cfg.Agents["root"].Description,
4545
"Licenses": cfg.Metadata.License,
4646
"McpServers": strings.Join(mcpServers, ","),
47-
"Secrets": strings.Join(modelSecrets, ","),
47+
"Models": strings.Join(modelNames, ","),
4848
}); err != nil {
4949
return err
5050
}
5151

5252
dockerfile := dockerfileBuf.String()
53-
slog.Debug("Generated Dockerfile", "dockerfile", dockerfile)
53+
if slog.Default().Enabled(ctx, slog.LevelDebug) {
54+
fmt.Println(dockerfile)
55+
}
5456

5557
// Run docker build
5658
buildArgs := []string{"build"}

pkg/secrets/gather.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"fmt"
66
"sort"
7-
"strings"
87

98
"github.com/docker/cagent/pkg/config"
109
latest "github.com/docker/cagent/pkg/config/v2"
@@ -73,25 +72,6 @@ func GatherEnvVarsForModels(cfg *latest.Config) []string {
7372
}
7473
}
7574

76-
for _, agent := range cfg.Agents {
77-
model := agent.Model
78-
79-
for prefix, alias := range provider.ProviderAliases {
80-
if strings.HasPrefix(model, prefix+"/") && alias.TokenEnvVar != "" {
81-
requiredEnv[alias.TokenEnvVar] = true
82-
}
83-
}
84-
85-
switch {
86-
case strings.HasPrefix(model, "openai/"):
87-
requiredEnv["OPENAI_API_KEY"] = true
88-
case strings.HasPrefix(model, "anthropic/"):
89-
requiredEnv["ANTHROPIC_API_KEY"] = true
90-
case strings.HasPrefix(model, "google/"):
91-
requiredEnv["GOOGLE_API_KEY"] = true
92-
}
93-
}
94-
9575
return mcpToSortedList(requiredEnv)
9676
}
9777

0 commit comments

Comments
 (0)