1package openai
2
3import (
4 "github.com/charmbracelet/ai/ai"
5 "github.com/openai/openai-go/v2"
6)
7
8const OptionsKey = "openai"
9
10type ReasoningEffort string
11
12const (
13 ReasoningEffortMinimal ReasoningEffort = "minimal"
14 ReasoningEffortLow ReasoningEffort = "low"
15 ReasoningEffortMedium ReasoningEffort = "medium"
16 ReasoningEffortHigh ReasoningEffort = "high"
17)
18
19type ProviderMetadata struct {
20 Logprobs []openai.ChatCompletionTokenLogprob
21 AcceptedPredictionTokens int64
22 RejectedPredictionTokens int64
23}
24
25func (*ProviderMetadata) Options() {}
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 (*ProviderOptions) Options() {}
46
47type ProviderFileOptions struct {
48 ImageDetail string
49}
50
51func (*ProviderFileOptions) Options() {}
52
53func ReasoningEffortOption(e ReasoningEffort) *ReasoningEffort {
54 return &e
55}
56
57func NewProviderOptions(opts *ProviderOptions) ai.ProviderOptions {
58 return ai.ProviderOptions{
59 OptionsKey: opts,
60 }
61}
62
63func NewProviderFileOptions(opts *ProviderFileOptions) ai.ProviderOptions {
64 return ai.ProviderOptions{
65 OptionsKey: opts,
66 }
67}