1package openai
2
3import (
4 "github.com/charmbracelet/ai/ai"
5 "github.com/openai/openai-go/v2"
6)
7
8type ReasoningEffort string
9
10const (
11 ReasoningEffortMinimal ReasoningEffort = "minimal"
12 ReasoningEffortLow ReasoningEffort = "low"
13 ReasoningEffortMedium ReasoningEffort = "medium"
14 ReasoningEffortHigh ReasoningEffort = "high"
15)
16
17type ProviderFileOptions struct {
18 ImageDetail string
19}
20
21type ProviderMetadata struct {
22 Logprobs []openai.ChatCompletionTokenLogprob
23 AcceptedPredictionTokens int64
24 RejectedPredictionTokens int64
25}
26
27type ProviderOptions struct {
28 LogitBias map[string]int64
29 LogProbs *bool
30 TopLogProbs *int64
31 ParallelToolCalls *bool
32 User *string
33 ReasoningEffort *ReasoningEffort
34 MaxCompletionTokens *int64
35 TextVerbosity *string
36 Prediction map[string]any
37 Store *bool
38 Metadata map[string]any
39 PromptCacheKey *string
40 SafetyIdentifier *string
41 ServiceTier *string
42 StructuredOutputs *bool
43}
44
45func ReasoningEffortOption(e ReasoningEffort) *ReasoningEffort {
46 return &e
47}
48
49func NewProviderOptions(opts *ProviderOptions) ai.ProviderOptions {
50 return ai.ProviderOptions{
51 "openai": opts,
52 }
53}
54
55func NewProviderFileOptions(opts *ProviderFileOptions) ai.ProviderOptions {
56 return ai.ProviderOptions{
57 "openai": opts,
58 }
59}