anthropic_types/
models.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
5pub struct ModelInfo {
6 pub id: String,
8
9 pub display_name: String,
11
12 pub max_tokens: u32,
14
15 pub provider: String,
17
18 pub pricing: Option<ModelPricing>,
20}
21
22#[derive(Serialize, Deserialize, Debug, Clone)]
24pub struct ModelPricing {
25 pub input_cost_per_million_tokens: f64,
27
28 pub output_cost_per_million_tokens: f64,
30}
31
32impl ModelInfo {
33 pub fn get_max_tokens(model_id: &str) -> u32 {
35 match model_id {
36 "claude-3-7-sonnet-20250219" => 200000,
38
39 "claude-3-5-sonnet-20241022"
41 | "claude-3-5-haiku-20241022"
42 | "claude-3-5-sonnet-20240620" => 200000,
43
44 "claude-3-opus-20240229" => 200000,
46 "claude-3-sonnet-20240229" => 200000,
47 "claude-3-haiku-20240307" => 200000,
48
49 "claude-2.1" | "claude-2.0" => 100000,
51
52 _ => 100000, }
55 }
56
57 pub fn get_pricing(model_id: &str) -> ModelPricing {
59 match model_id {
60 "claude-3-7-sonnet-20250219" => ModelPricing {
62 input_cost_per_million_tokens: 3.00,
63 output_cost_per_million_tokens: 15.00,
64 },
65
66 "claude-3-5-sonnet-20241022" | "claude-3-5-sonnet-20240620" => ModelPricing {
68 input_cost_per_million_tokens: 3.00,
69 output_cost_per_million_tokens: 15.00,
70 },
71 "claude-3-5-haiku-20241022" => ModelPricing {
72 input_cost_per_million_tokens: 0.80,
73 output_cost_per_million_tokens: 4.00,
74 },
75
76 "claude-3-opus-20240229" => ModelPricing {
78 input_cost_per_million_tokens: 15.00,
79 output_cost_per_million_tokens: 75.00,
80 },
81 "claude-3-haiku-20240307" => ModelPricing {
82 input_cost_per_million_tokens: 0.25,
83 output_cost_per_million_tokens: 1.25,
84 },
85 "claude-3-sonnet-20240229" => ModelPricing {
86 input_cost_per_million_tokens: 3.00,
87 output_cost_per_million_tokens: 15.00,
88 },
89
90 _ => ModelPricing {
92 input_cost_per_million_tokens: 8.00,
93 output_cost_per_million_tokens: 24.00,
94 },
95 }
96 }
97}