@@ -6,6 +6,7 @@ import DocumentPicker from 'react-native-document-picker'
66import type { DocumentPickerResponse } from 'react-native-document-picker'
77import { Chat , darkTheme } from '@flyerhq/react-native-chat-ui'
88import type { MessageType } from '@flyerhq/react-native-chat-ui'
9+ import json5 from 'json5'
910import ReactNativeBlobUtil from 'react-native-blob-util'
1011// eslint-disable-next-line import/no-unresolved
1112import { initLlama , LlamaContext , convertJsonSchemaToGrammar } from 'llama.rn'
@@ -73,7 +74,7 @@ export default function App() {
7374 }
7475 }
7576
76- const addSystemMessage = ( text : string , metadata = { } ) => {
77+ const addSystemMessage = ( text : string , metadata = { } ) => {
7778 const textMessage : MessageType . Text = {
7879 author : system ,
7980 createdAt : Date . now ( ) ,
@@ -119,7 +120,7 @@ export default function App() {
119120 '- /release: release the context\n' +
120121 '- /stop: stop the current completion\n' +
121122 '- /reset: reset the conversation' ,
122- '- /save-session: save the session tokens\n' +
123+ '- /save-session: save the session tokens\n' +
123124 '- /load-session: load the session tokens' ,
124125 )
125126 } )
@@ -166,12 +167,18 @@ export default function App() {
166167 const handleSendPress = async ( message : MessageType . PartialText ) => {
167168 if ( context ) {
168169 switch ( message . text ) {
170+ case '/info' :
171+ addSystemMessage (
172+ `// Model Info\n${ json5 . stringify ( context . model , null , 2 ) } ` ,
173+ { copyable : true } ,
174+ )
175+ return
169176 case '/bench' :
170177 addSystemMessage ( 'Heating up the model...' )
171178 const t0 = Date . now ( )
172179 await context . bench ( 8 , 4 , 1 , 1 )
173180 const tHeat = Date . now ( ) - t0
174- if ( tHeat > 1E4 ) {
181+ if ( tHeat > 1e4 ) {
175182 addSystemMessage ( 'Heat up time is too long, please try again.' )
176183 return
177184 }
@@ -186,15 +193,21 @@ export default function App() {
186193 ppStd,
187194 tgAvg,
188195 tgStd,
189- } = await context . bench ( 512 , 128 , 1 , 3 )
196+ } = await context . bench ( 512 , 128 , 1 , 3 )
190197
191- const size = `${ ( modelSize / 1024.0 / 1024.0 / 1024.0 ) . toFixed ( 2 ) } GiB`
198+ const size = `${ ( modelSize / 1024.0 / 1024.0 / 1024.0 ) . toFixed (
199+ 2 ,
200+ ) } GiB`
192201 const nParams = `${ ( modelNParams / 1e9 ) . toFixed ( 2 ) } B`
193202 const md =
194203 '| model | size | params | test | t/s |\n' +
195204 '| --- | --- | --- | --- | --- |\n' +
196- `| ${ modelDesc } | ${ size } | ${ nParams } | pp 512 | ${ ppAvg . toFixed ( 2 ) } ± ${ ppStd . toFixed ( 2 ) } |\n` +
197- `| ${ modelDesc } | ${ size } | ${ nParams } | tg 128 | ${ tgAvg . toFixed ( 2 ) } ± ${ tgStd . toFixed ( 2 ) } `
205+ `| ${ modelDesc } | ${ size } | ${ nParams } | pp 512 | ${ ppAvg . toFixed (
206+ 2 ,
207+ ) } ± ${ ppStd . toFixed ( 2 ) } |\n` +
208+ `| ${ modelDesc } | ${ size } | ${ nParams } | tg 128 | ${ tgAvg . toFixed (
209+ 2 ,
210+ ) } ± ${ tgStd . toFixed ( 2 ) } `
198211 addSystemMessage ( md , { copyable : true } )
199212 return
200213 case '/release' :
@@ -208,22 +221,30 @@ export default function App() {
208221 addSystemMessage ( 'Conversation reset!' )
209222 return
210223 case '/save-session' :
211- context . saveSession ( `${ dirs . DocumentDir } /llama-session.bin` ) . then ( tokensSaved => {
212- console . log ( 'Session tokens saved:' , tokensSaved )
213- addSystemMessage ( `Session saved! ${ tokensSaved } tokens saved.` )
214- } ) . catch ( e => {
215- console . log ( 'Session save failed:' , e )
216- addSystemMessage ( `Session save failed: ${ e . message } ` )
217- } )
224+ context
225+ . saveSession ( `${ dirs . DocumentDir } /llama-session.bin` )
226+ . then ( ( tokensSaved ) => {
227+ console . log ( 'Session tokens saved:' , tokensSaved )
228+ addSystemMessage ( `Session saved! ${ tokensSaved } tokens saved.` )
229+ } )
230+ . catch ( ( e ) => {
231+ console . log ( 'Session save failed:' , e )
232+ addSystemMessage ( `Session save failed: ${ e . message } ` )
233+ } )
218234 return
219235 case '/load-session' :
220- context . loadSession ( `${ dirs . DocumentDir } /llama-session.bin` ) . then ( details => {
221- console . log ( 'Session loaded:' , details )
222- addSystemMessage ( `Session loaded! ${ details . tokens_loaded } tokens loaded.` )
223- } ) . catch ( e => {
224- console . log ( 'Session load failed:' , e )
225- addSystemMessage ( `Session load failed: ${ e . message } ` )
226- } )
236+ context
237+ . loadSession ( `${ dirs . DocumentDir } /llama-session.bin` )
238+ . then ( ( details ) => {
239+ console . log ( 'Session loaded:' , details )
240+ addSystemMessage (
241+ `Session loaded! ${ details . tokens_loaded } tokens loaded.` ,
242+ )
243+ } )
244+ . catch ( ( e ) => {
245+ console . log ( 'Session load failed:' , e )
246+ addSystemMessage ( `Session load failed: ${ e . message } ` )
247+ } )
227248 return
228249 }
229250 }
0 commit comments