1package anthropic
2
3import "github.com/charmbracelet/fantasy/ai"
4
5const OptionsKey = "anthropic"
6
7type ProviderOptions struct {
8 SendReasoning *bool `json:"send_reasoning"`
9 Thinking *ThinkingProviderOption `json:"thinking"`
10 DisableParallelToolUse *bool `json:"disable_parallel_tool_use"`
11}
12
13func (o *ProviderOptions) Options() {}
14
15type ThinkingProviderOption struct {
16 BudgetTokens int64 `json:"budget_tokens"`
17}
18
19type ReasoningOptionMetadata struct {
20 Signature string `json:"signature"`
21 RedactedData string `json:"redacted_data"`
22}
23
24func (*ReasoningOptionMetadata) Options() {}
25
26type ProviderCacheControlOptions struct {
27 CacheControl CacheControl `json:"cache_control"`
28}
29
30func (*ProviderCacheControlOptions) Options() {}
31
32type CacheControl struct {
33 Type string `json:"type"`
34}
35
36func NewProviderOptions(opts *ProviderOptions) ai.ProviderOptions {
37 return ai.ProviderOptions{
38 OptionsKey: opts,
39 }
40}
41
42func NewProviderCacheControlOptions(opts *ProviderCacheControlOptions) ai.ProviderOptions {
43 return ai.ProviderOptions{
44 OptionsKey: opts,
45 }
46}