philschmid HF staff commited on
Commit
67dfb22
1 Parent(s): 1ae14ee

fix filtered data

Browse files
Files changed (2) hide show
  1. src/App.tsx +17 -11
  2. src/lib/data.ts +5 -5
src/App.tsx CHANGED
@@ -32,7 +32,7 @@ const App: React.FC = () => {
32
 
33
  useEffect(() => {
34
  setData(mockData)
35
- setComparisonModels(['OpenAI:GPT-4o', 'Anthropic:Claude 3.5 (Sonnet)', 'Google Vertex AI:Gemini 1.5 Pro'])
36
  }, [])
37
 
38
  const calculatePrice = (price: number, tokens: number): number => {
@@ -42,15 +42,15 @@ const App: React.FC = () => {
42
  const calculateComparison = (modelPrice: number, comparisonPrice: number): string => {
43
  return (((modelPrice - comparisonPrice) / comparisonPrice) * 100).toFixed(2)
44
  }
45
- const filteredData = data.filter((provider) => {
46
- if (selectedProviders.length > 0 && !selectedProviders.includes(provider.provider)) {
47
- return false
48
- }
49
- if (selectedModels.length > 0) {
50
- return provider.models.some((model) => selectedModels.includes(model.name))
51
- }
52
- return true
53
- })
54
 
55
  const toggleProviderExpansion = (provider: string) => {
56
  setExpandedProviders((prev) => (prev.includes(provider) ? prev.filter((p) => p !== provider) : [...prev, provider]))
@@ -169,7 +169,13 @@ const App: React.FC = () => {
169
  options={
170
  data
171
  .flatMap((provider) => provider.models)
172
- .map((model) => ({ label: model.name, value: model.name })) || []
 
 
 
 
 
 
173
  }
174
  defaultValue={selectedModels}
175
  onValueChange={setSelectedModels}
 
32
 
33
  useEffect(() => {
34
  setData(mockData)
35
+ setComparisonModels(['OpenAI:GPT-4o', 'Anthropic:Claude 3.5 (Sonnet)', 'Google:Gemini 1.5 Pro'])
36
  }, [])
37
 
38
  const calculatePrice = (price: number, tokens: number): number => {
 
42
  const calculateComparison = (modelPrice: number, comparisonPrice: number): string => {
43
  return (((modelPrice - comparisonPrice) / comparisonPrice) * 100).toFixed(2)
44
  }
45
+ const filteredData = data
46
+ .filter((provider) => selectedProviders.length === 0 || selectedProviders.includes(provider.provider))
47
+ .map((provider) => ({
48
+ ...provider,
49
+ models: provider.models.filter((model) => selectedModels.length === 0 || selectedModels.includes(model.name)),
50
+ }))
51
+ .filter((provider) => provider.models.length > 0)
52
+
53
+ console.log(filteredData)
54
 
55
  const toggleProviderExpansion = (provider: string) => {
56
  setExpandedProviders((prev) => (prev.includes(provider) ? prev.filter((p) => p !== provider) : [...prev, provider]))
 
169
  options={
170
  data
171
  .flatMap((provider) => provider.models)
172
+ .map((model) => ({ label: model.name, value: model.name }))
173
+ .reduce((acc, curr) => {
174
+ if (acc.findIndex((m) => m.label === curr.label) === -1) {
175
+ acc.push(curr)
176
+ }
177
+ return acc
178
+ }, []) || []
179
  }
180
  defaultValue={selectedModels}
181
  onValueChange={setSelectedModels}
src/lib/data.ts CHANGED
@@ -21,7 +21,7 @@ export const mockData: Provider[] = [
21
  ],
22
  },
23
  {
24
- provider: 'Google Vertex AI',
25
  uri: 'https://ai.google.dev/pricing?hl=en',
26
  models: [
27
  { name: 'Gemini 1.5 Pro', inputPrice: 3.5, outputPrice: 7.0 },
@@ -42,8 +42,8 @@ export const mockData: Provider[] = [
42
  models: [
43
  { name: 'mistral-large-2402', inputPrice: 4.0, outputPrice: 12.0 },
44
  { name: 'codestral-2405', inputPrice: 1.0, outputPrice: 3.0 },
45
- { name: 'open-mixtral-8x22b', inputPrice: 2.0, outputPrice: 6.0 },
46
- { name: 'open-mixtral-8x7b', inputPrice: 0.7, outputPrice: 0.7 },
47
  ],
48
  },
49
  {
@@ -58,7 +58,7 @@ export const mockData: Provider[] = [
58
  provider: 'Anyscale',
59
  uri: 'https://www.anyscale.com/pricing-detail',
60
  models: [
61
- { name: 'Mistral-small (8x7B)', inputPrice: 0.5, outputPrice: 0.5 },
62
  { name: 'Llama 3 70b', inputPrice: 1.0, outputPrice: 1.0 },
63
  ],
64
  },
@@ -67,7 +67,7 @@ export const mockData: Provider[] = [
67
  provider: 'Together.AI',
68
  uri: 'https://www.together.ai/pricing',
69
  models: [
70
- { name: 'Mistral-small (8x7B)', inputPrice: 0.6, outputPrice: 0.6 },
71
  { name: 'Llama 3 70b', inputPrice: 0.9, outputPrice: 0.9 },
72
  ],
73
  },
 
21
  ],
22
  },
23
  {
24
+ provider: 'Google',
25
  uri: 'https://ai.google.dev/pricing?hl=en',
26
  models: [
27
  { name: 'Gemini 1.5 Pro', inputPrice: 3.5, outputPrice: 7.0 },
 
42
  models: [
43
  { name: 'mistral-large-2402', inputPrice: 4.0, outputPrice: 12.0 },
44
  { name: 'codestral-2405', inputPrice: 1.0, outputPrice: 3.0 },
45
+ { name: 'Mixtral 8x22B', inputPrice: 2.0, outputPrice: 6.0 },
46
+ { name: 'Mixtral 8x7B', inputPrice: 0.7, outputPrice: 0.7 },
47
  ],
48
  },
49
  {
 
58
  provider: 'Anyscale',
59
  uri: 'https://www.anyscale.com/pricing-detail',
60
  models: [
61
+ { name: 'Mixtral 8x7B', inputPrice: 0.5, outputPrice: 0.5 },
62
  { name: 'Llama 3 70b', inputPrice: 1.0, outputPrice: 1.0 },
63
  ],
64
  },
 
67
  provider: 'Together.AI',
68
  uri: 'https://www.together.ai/pricing',
69
  models: [
70
+ { name: 'Mixtral 8x7B', inputPrice: 0.6, outputPrice: 0.6 },
71
  { name: 'Llama 3 70b', inputPrice: 0.9, outputPrice: 0.9 },
72
  ],
73
  },