provider_options.go

 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}