diff --git a/components/shared/conversation-view.tsx b/components/shared/conversation-view.tsx
index 975ca44a..5ff7f1b8 100644
--- a/components/shared/conversation-view.tsx
+++ b/components/shared/conversation-view.tsx
@@ -85,7 +85,7 @@ export default function ConversationView({
)}
{role}
= {
};
export const ANTHROPIC_PRICING: Record = {
+ "claude-3-5-sonnet": {
+ input: 0.003,
+ output: 0.015,
+ },
+ "claude-3-5-haiku": {
+ input: 0.001,
+ output: 0.005,
+ },
"claude-3-haiku": {
input: 0.00025,
output: 0.00125,
@@ -166,18 +174,6 @@ export const ANTHROPIC_PRICING: Record = {
input: 0.015,
output: 0.075,
},
- "claude-2.1": {
- input: 0.008,
- output: 0.024,
- },
- "claude-2.0": {
- input: 0.008,
- output: 0.024,
- },
- "claude-instant": {
- input: 0.0008,
- output: 0.0024,
- },
};
// https://docs.perplexity.ai/docs/pricing --> slightly unclear
diff --git a/lib/utils.ts b/lib/utils.ts
index 1f04919a..6ac8f0f4 100644
--- a/lib/utils.ts
+++ b/lib/utils.ts
@@ -520,6 +520,7 @@ export function calculatePriceFromUsage(
): any {
if (!model) return { total: 0, input: 0, output: 0 };
let costTable: CostTableEntry | undefined = undefined;
+ // set vendor correctly if vendor is ai
if (vendor === "ai") {
if (model.startsWith("gpt-4") || model.includes("gpt-4")) {
vendor = "openai";
@@ -541,7 +542,9 @@ export function calculatePriceFromUsage(
) {
vendor = "groq";
}
- } else if (vendor === "litellm") {
+ }
+
+ if (vendor === "litellm" || vendor.includes("bedrock")) {
let correctModel = model;
if (model.includes("gpt") || model.includes("o1")) {
if (model.includes("gpt-4o-mini")) {
@@ -558,18 +561,16 @@ export function calculatePriceFromUsage(
costTable = OPENAI_PRICING[correctModel];
} else if (model.includes("claude")) {
let cmodel = "";
- if (model.includes("opus")) {
+ if (model.includes("3-opus")) {
cmodel = "claude-3-opus";
- } else if (model.includes("sonnet")) {
+ } else if (model.includes("3-sonnet")) {
cmodel = "claude-3-sonnet";
- } else if (model.includes("haiku")) {
+ } else if (model.includes("3-haiku")) {
cmodel = "claude-3-haiku";
- } else if (model.includes("claude-2.1")) {
- cmodel = "claude-2.1";
- } else if (model.includes("claude-2.0")) {
- cmodel = "claude-2.0";
- } else if (model.includes("instant")) {
- cmodel = "claude-instant";
+ } else if (model.includes("3-5-sonnet")) {
+ cmodel = "claude-3-5-sonnet";
+ } else if (model.includes("3-5-haiku")) {
+ cmodel = "claude-3-5-haiku";
} else {
return 0;
}
@@ -600,18 +601,16 @@ export function calculatePriceFromUsage(
costTable = OPENAI_PRICING[correctModel];
} else if (vendor === "anthropic") {
let cmodel = "";
- if (model.includes("opus")) {
+ if (model.includes("3-opus")) {
cmodel = "claude-3-opus";
- } else if (model.includes("sonnet")) {
+ } else if (model.includes("3-sonnet")) {
cmodel = "claude-3-sonnet";
- } else if (model.includes("haiku")) {
+ } else if (model.includes("3-haiku")) {
cmodel = "claude-3-haiku";
- } else if (model.includes("claude-2.1")) {
- cmodel = "claude-2.1";
- } else if (model.includes("claude-2.0")) {
- cmodel = "claude-2.0";
- } else if (model.includes("instant")) {
- cmodel = "claude-instant";
+ } else if (model.includes("3-5-sonnet")) {
+ cmodel = "claude-3-5-sonnet";
+ } else if (model.includes("3-5-haiku")) {
+ cmodel = "claude-3-5-haiku";
} else {
return 0;
}