|
| 1 | +# Adding a new provider to Cagent |
| 2 | + |
| 3 | +## Add provider alias |
| 4 | + |
| 5 | +Add a new `Alias` to `ProviderAliases` [`pkg/model/provider/provider.go`](https://github.com/docker/cagent/blob/main/pkg/model/provider/provider.go) |
| 6 | + |
| 7 | +```go |
| 8 | +var ProviderAliases = map[string]Alias{ |
| 9 | + "requesty": { |
| 10 | + ApiType: "openai", |
| 11 | + BaseURL: "https://router.requesty.ai/v1", |
| 12 | + TokenEnvVar: "REQUESTY_API_KEY", |
| 13 | + }, |
| 14 | + "azure": { |
| 15 | + ApiType: "openai", |
| 16 | + TokenEnvVar: "AZURE_API_KEY", |
| 17 | + }, |
| 18 | + "YOUR_PROVIDER": { |
| 19 | + ApiType: "openai" |
| 20 | + TokenEnvVar: "YOUR_PROVIDER_API_KEY" |
| 21 | + BaseURL: "https://your-provider.ai/v1" |
| 22 | + } |
| 23 | +} |
| 24 | +``` |
| 25 | + |
| 26 | +## Add custom config if needed (optional) |
| 27 | + |
| 28 | +If your provider requires custom config, like Azure's `api_version` |
| 29 | + |
| 30 | +```yaml |
| 31 | +models: |
| 32 | + azure_model: |
| 33 | + provider: azure |
| 34 | + model: gpt-4o |
| 35 | + base_url: https://your-llm.openai.azure.com |
| 36 | + provider_opts: |
| 37 | + api_version: 2024-12-01-preview |
| 38 | + # custom option example |
| 39 | + your_model: |
| 40 | + provider: your_provider |
| 41 | + model: gpt-4o |
| 42 | + provider_opts: |
| 43 | + your_custom_option: your_custom_value |
| 44 | +``` |
| 45 | +
|
| 46 | +edit [`pkg/model/provider/openai/client.go`](https://github.com/docker/cagent/blob/main/pkg/model/provider/openai/client.go) |
| 47 | + |
| 48 | +```go |
| 49 | +switch cfg.Provider { //nolint:gocritic |
| 50 | + case "azure": |
| 51 | + if apiVersion, exists := cfg.ProviderOpts["api_version"]; exists { |
| 52 | + slog.Debug("Setting API version", "api_version", apiVersion) |
| 53 | + if apiVersionStr, ok := apiVersion.(string); ok { |
| 54 | + openaiConfig.APIVersion = apiVersionStr |
| 55 | + } |
| 56 | + } |
| 57 | + case "your_provider": |
| 58 | + if yourCustomOption, exists := cfg.ProviderOpts["your_custom_option"]; exists { |
| 59 | + slog.Debug("Setting your custom option", "your_custom_option", yourCustomOption) |
| 60 | + if yourCustomOptionStr, ok := yourCustomOption.(string); ok { |
| 61 | + openaiConfig.yourCustomOption = yourCustomOptionStr |
| 62 | + } |
| 63 | + } |
| 64 | + } |
| 65 | +``` |
0 commit comments