provider_options.go

 1package anthropic
 2
 3import "charm.land/fantasy"
 4
 5type ProviderOptions struct {
 6	SendReasoning          *bool                   `json:"send_reasoning"`
 7	Thinking               *ThinkingProviderOption `json:"thinking"`
 8	DisableParallelToolUse *bool                   `json:"disable_parallel_tool_use"`
 9}
10
11func (o *ProviderOptions) Options() {}
12
13type ThinkingProviderOption struct {
14	BudgetTokens int64 `json:"budget_tokens"`
15}
16
17type ReasoningOptionMetadata struct {
18	Signature    string `json:"signature"`
19	RedactedData string `json:"redacted_data"`
20}
21
22func (*ReasoningOptionMetadata) Options() {}
23
24type ProviderCacheControlOptions struct {
25	CacheControl CacheControl `json:"cache_control"`
26}
27
28func (*ProviderCacheControlOptions) Options() {}
29
30type CacheControl struct {
31	Type string `json:"type"`
32}
33
34func NewProviderOptions(opts *ProviderOptions) fantasy.ProviderOptions {
35	return fantasy.ProviderOptions{
36		Name: opts,
37	}
38}
39
40func NewProviderCacheControlOptions(opts *ProviderCacheControlOptions) fantasy.ProviderOptions {
41	return fantasy.ProviderOptions{
42		Name: opts,
43	}
44}
45
46func ParseOptions(data map[string]any) (*ProviderOptions, error) {
47	var options ProviderOptions
48	if err := fantasy.ParseOptions(data, &options); err != nil {
49		return nil, err
50	}
51	return &options, nil
52}