Skip to content

Commit 8e45fe2

Browse files
committed
show them citations better on the side
1 parent 76fa7e5 commit 8e45fe2

File tree

2 files changed

+56
-11
lines changed

2 files changed

+56
-11
lines changed

src/client/components/ChatV2/ChatV2.tsx

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { SettingsModal } from './SettingsModal'
2222
import { Link } from 'react-router-dom'
2323
import { useScrollToBottom } from './useScrollToBottom'
2424
import { set } from 'lodash'
25+
import { CitationsBox } from './CitationsBox'
2526

2627
export const ChatV2 = () => {
2728
const { courseId } = useParams()
@@ -112,6 +113,7 @@ export const ChatV2 = () => {
112113
}
113114

114115
setMessages((prev: Message[]) => prev.concat({ role: 'assistant', content, citations }))
116+
setCitations([])
115117
} catch (err: any) {
116118
handleCompletionStreamError(err, fileName)
117119
} finally {
@@ -203,17 +205,20 @@ export const ChatV2 = () => {
203205
</Box>
204206
{courseId ? <Link to={'/v2'}>CurreChat</Link> : <Link to={'/v2/sandbox'}>Ohtu Sandbox</Link>}
205207
</Box>
206-
<Box ref={chatContainerRef}>
207-
<Conversation messages={messages} completion={completion} citations={citations} />
208-
<ChatBox
209-
disabled={false}
210-
onSubmit={(message) => {
211-
if (message.trim()) {
212-
handleSubmit(message)
213-
setMessage({ content: '' })
214-
}
215-
}}
216-
/>
208+
<Box sx={{ display: 'flex' }}>
209+
<Box ref={chatContainerRef}>
210+
<Conversation messages={messages} completion={completion} citations={citations} />
211+
<ChatBox
212+
disabled={false}
213+
onSubmit={(message) => {
214+
if (message.trim()) {
215+
handleSubmit(message)
216+
setMessage({ content: '' })
217+
}
218+
}}
219+
/>
220+
</Box>
221+
<CitationsBox messages={messages} citations={citations} />
217222
</Box>
218223
</Box>
219224
)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Box, Paper, Typography } from '@mui/material'
2+
import { FileCitation } from '../../../shared/types'
3+
import { Message } from '../../types'
4+
5+
const Citation = ({ citation }: { citation: FileCitation }) => {
6+
return (
7+
<Box>
8+
<Typography variant="body2" color="textSecondary">
9+
{citation.filename} (Index: {citation.index})
10+
</Typography>
11+
</Box>
12+
)
13+
}
14+
15+
const MessageCitations = ({ citations }: { citations: FileCitation[] }) => {
16+
return (
17+
<Box sx={{ mt: 1, fontSize: '0.875rem', color: 'gray' }}>
18+
Citations:
19+
{citations.map((citation, index) => (
20+
<Citation key={index} citation={citation} />
21+
))}
22+
</Box>
23+
)
24+
}
25+
26+
export const CitationsBox = ({ messages, citations }: { messages: Message[]; citations: FileCitation[] }) => {
27+
const messageCitations = [...messages.map((message) => (Array.isArray(message.citations) ? message.citations : [])), citations]
28+
29+
console.log('CitationsBox messageCitations', messageCitations)
30+
31+
return (
32+
<Paper>
33+
<Box sx={{ width: 300, padding: 2 }}>
34+
{messageCitations.map((c, index) => (
35+
<MessageCitations key={index} citations={c} />
36+
))}
37+
</Box>
38+
</Paper>
39+
)
40+
}

0 commit comments

Comments
 (0)