Skip to content

Commit 44d28fe

Browse files
committed
fix: separate and correctly accumulate real and demo session costs by tagging messages
1 parent cc47920 commit 44d28fe

2 files changed

Lines changed: 8 additions & 20 deletions

File tree

frontend/src/components/ChatInterface.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,11 @@ const ChatInterface = () => {
9090

9191
// Calculate real and demo session costs
9292
const realCost = messages
93-
.filter(m => m.role === 'assistant' && m.usage && typeof m.usage.cost === 'number' && !demoMode)
93+
.filter(m => m.role === 'assistant' && m.usage && typeof m.usage.cost === 'number' && m.demo === false)
94+
.reduce((sum, m) => sum + m.usage.cost, 0);
95+
const demoCost = messages
96+
.filter(m => m.role === 'assistant' && m.usage && typeof m.usage.cost === 'number' && m.demo === true)
9497
.reduce((sum, m) => sum + m.usage.cost, 0);
95-
const demoCost = demoUsage?.cost || 0;
9698

9799
// SettingsPanel props
98100
const settingsPanelProps = {

frontend/src/hooks/useChat.js

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,6 @@ const useChat = () => {
5151
const [model, setModel] = useState('gpt-3.5-turbo');
5252
const [demoMode, setDemoMode] = useState(false);
5353

54-
// Demo usage state
55-
const [demoUsage, setDemoUsage] = useState({
56-
promptTokens: 0,
57-
completionTokens: 0,
58-
totalTokens: 0,
59-
cost: 0
60-
});
61-
6254
// Clear error state
6355
const clearError = useCallback(() => setError(null), []);
6456

@@ -100,13 +92,6 @@ const useChat = () => {
10092
const completionTokens = DEMO_COMPLETION_TOKENS;
10193
const totalTokens = promptTokens + completionTokens;
10294
const cost = +calculateDemoCost(model, promptTokens, completionTokens).toFixed(6);
103-
const newUsage = {
104-
promptTokens: demoUsage.promptTokens + promptTokens,
105-
completionTokens: demoUsage.completionTokens + completionTokens,
106-
totalTokens: demoUsage.totalTokens + totalTokens,
107-
cost: +(demoUsage.cost + cost).toFixed(6)
108-
};
109-
setDemoUsage(newUsage);
11095
setMessages(prev => [
11196
...prev,
11297
{
@@ -117,7 +102,8 @@ const useChat = () => {
117102
completionTokens,
118103
totalTokens,
119104
cost
120-
}
105+
},
106+
demo: true
121107
}
122108
]);
123109
} else {
@@ -134,7 +120,8 @@ const useChat = () => {
134120
const assistantMessage = {
135121
role: 'assistant',
136122
content: response.data.content,
137-
usage: response.data.usage
123+
usage: response.data.usage,
124+
demo: false
138125
};
139126
setMessages(prev => [...prev, assistantMessage]);
140127
}
@@ -173,7 +160,6 @@ const useChat = () => {
173160
apiKey,
174161
model,
175162
demoMode,
176-
demoUsage,
177163

178164
// State setters
179165
setApiKey,

0 commit comments

Comments
 (0)