Change summary
providers/examples/simple/main.go | 3 ++-
providers/examples/stream/main.go | 3 ++-
providers/openai.go | 22 ----------------------
3 files changed, 4 insertions(+), 24 deletions(-)
Detailed changes
@@ -3,13 +3,14 @@ package main
import (
"context"
"fmt"
+ "os"
"github.com/charmbracelet/crush/internal/ai"
"github.com/charmbracelet/crush/internal/ai/providers"
)
func main() {
- provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey("$OPENAI_API_KEY"))
+ provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey(os.Getenv("OPENAI_API_KEY")))
model := provider.LanguageModel("gpt-4o")
response, err := model.Generate(context.Background(), ai.Call{
@@ -4,13 +4,14 @@ import (
"context"
"encoding/json"
"fmt"
+ "os"
"github.com/charmbracelet/crush/internal/ai"
"github.com/charmbracelet/crush/internal/ai/providers"
)
func main() {
- provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey("$OPENAI_API_KEY"))
+ provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey(os.Getenv("OPENAI_API_KEY")))
model := provider.LanguageModel("gpt-4o")
stream, err := model.Stream(context.Background(), ai.Call{
@@ -11,8 +11,6 @@ import (
"strings"
"github.com/charmbracelet/crush/internal/ai"
- "github.com/charmbracelet/crush/internal/config"
- "github.com/charmbracelet/crush/internal/env"
"github.com/google/uuid"
"github.com/openai/openai-go/v2"
"github.com/openai/openai-go/v2/option"
@@ -59,7 +57,6 @@ type openAIProviderOptions struct {
name string
headers map[string]string
client option.HTTPClient
- resolver config.VariableResolver
}
type OpenAIOption = func(*openAIProviderOptions)
@@ -72,31 +69,18 @@ func NewOpenAIProvider(opts ...OpenAIOption) ai.Provider {
o(&options)
}
- if options.resolver == nil {
- // use the default resolver
- options.resolver = config.NewShellVariableResolver(env.New())
- }
- options.apiKey, _ = options.resolver.ResolveValue(options.apiKey)
- options.baseURL, _ = options.resolver.ResolveValue(options.baseURL)
if options.baseURL == "" {
options.baseURL = "https://api.openai.com/v1"
}
- options.name, _ = options.resolver.ResolveValue(options.name)
if options.name == "" {
options.name = "openai"
}
- for k, v := range options.headers {
- options.headers[k], _ = options.resolver.ResolveValue(v)
- }
-
- options.organization, _ = options.resolver.ResolveValue(options.organization)
if options.organization != "" {
options.headers["OpenAI-Organization"] = options.organization
}
- options.project, _ = options.resolver.ResolveValue(options.project)
if options.project != "" {
options.headers["OpenAI-Project"] = options.project
}
@@ -148,12 +132,6 @@ func WithOpenAIHttpClient(client option.HTTPClient) OpenAIOption {
}
}
-func WithOpenAIVariableResolver(resolver config.VariableResolver) OpenAIOption {
- return func(o *openAIProviderOptions) {
- o.resolver = resolver
- }
-}
-
// LanguageModel implements ai.Provider.
func (o *openAIProvider) LanguageModel(modelID string) ai.LanguageModel {
openaiClientOptions := []option.RequestOption{}