@ -1,34 +1,33 @@
import React from 'react'
import '../remix-ai.css'
import { DefaultModels , GenerationParams , ChatHistory , HandleStreamResponse , HandleSimpleResponse } from '@remix/remix-ai-core'
import { ConversationStarter , StreamSend , StreamingAdapterObserver , useAiChatApi } from '@nlux/react'
import { AiChat , useAsStreamAdapter , ChatItem } from '@nlux/react'
import { JsonStreamParser } from '@remix/remix-ai-core'
import { user , assistantAvatar } from './personas'
import { DefaultModels , GenerationParams , ChatHistory , HandleStreamResponse , HandleSimpleResponse } from '@remix/remix-ai-core' ;
import { ConversationStarter , StreamSend , StreamingAdapterObserver , useAiChatApi } from '@nlux/react' ;
import { AiChat , useAsStreamAdapter , ChatItem } from '@nlux/react' ;
import { JsonStreamParser } from '@remix/remix-ai-core' ;
import { user , assistantAvatar } from './personas' ;
import { highlighter } from '@nlux/highlighter'
import './color.css'
import '@nlux/themes/unstyled.css'
import '@nlux/themes/unstyled.css' ;
export let ChatApi = null
export const Default = ( props ) = > {
const send : StreamSend = async ( prompt : string , observer : StreamingAdapterObserver ) = > {
const send : StreamSend = async (
prompt : string ,
observer : StreamingAdapterObserver ,
) = > {
GenerationParams . stream_result = true
GenerationParams . return_stream_response = GenerationParams . stream_result
let response = null
if ( await props . plugin . call ( 'remixAI' , 'isChatRequestPending' ) ) {
response = await props . plugin . call ( 'remixAI' , 'ProcessChatRequestBuffer' , GenerationParams )
if ( await props . plugin . call ( 'remixAI' , 'isChatRequestPending' ) ) {
response = await props . plugin . call ( 'remixAI' , 'ProcessChatRequestBuffer' , GenerationParams ) ;
} else {
response = await props . plugin . call ( 'remixAI' , 'solidity_answer' , prompt + 'write all codes in this format ```(markdown language)```' , GenerationParams )
response = await props . plugin . call ( 'remixAI' , 'solidity_answer' , prompt + "write all codes in this format ```(markdown language)" , GenerationParams )
}
if ( GenerationParams . return_stream_response )
HandleStreamResponse (
response ,
( text ) = > {
observer . next ( text )
} ,
if ( GenerationParams . return_stream_response ) HandleStreamResponse ( response ,
( text ) = > { observer . next ( text ) } ,
( result ) = > {
observer . next ( ' ' ) // Add a space to flush the last message
ChatHistory . pushHistory ( prompt , result )
@ -39,36 +38,46 @@ export const Default = (props) => {
observer . next ( response )
observer . complete ( )
}
}
ChatApi = useAiChatApi ( )
const conversationStarters : ConversationStarter [ ] = [ { prompt : 'Explain what is a solidity contract!' } , { prompt : 'Explain briefly the current file in Editor' } ]
} ;
ChatApi = useAiChatApi ( ) ;
const conversationStarters : ConversationStarter [ ] = [
{ prompt : 'Explain what is a solidity contract!' } ,
{ prompt : 'Explain briefly the current file in Editor' } ]
// Define initial messages
const initialMessages : ChatItem [ ] = [
{
role : 'assistant' ,
message : 'Welcome to RemixAI! How can I assist you today?' ,
} ,
]
const adapter = useAsStreamAdapter ( send , [ ] )
message : 'Welcome to RemixAI! How can I assist you today?'
}
] ;
const adapter = useAsStreamAdapter ( send , [ ] ) ;
return (
< AiChat
api = { ChatApi }
adapter = { adapter }
adapter = { adapter }
personaOptions = { {
assistant : {
name : 'RemixAI' ,
tagline : 'Your Web3 AI Assistant' ,
avatar : assistantAvatar ,
name : "RemixAI" ,
tagline : "Your Web3 AI Assistant" ,
avatar : assistantAvatar
} ,
user ,
user
} }
//initialConversation={initialMessages}
conversationOptions = { { layout : 'bubbles' , conversationStarters } }
displayOptions = { { colorScheme : 'auto' , themeId : 'remix_ai_theme' } }
composerOptions = { { placeholder : 'Type your query' , submitShortcut : 'Enter' , hideStopButton : false } }
messageOptions = { { showCodeBlockCopyButton : true , streamingAnimationSpeed : 2 , waitTimeBeforeStreamCompletion : 1000 , syntaxHighlighter : highlighter } }
displayOptions = { { colorScheme : "auto" , themeId : "remix_ai_theme" } }
composerOptions = { { placeholder : "Type your query" ,
submitShortcut : 'Enter' ,
hideStopButton : false ,
} }
messageOptions = { { showCodeBlockCopyButton : true ,
streamingAnimationSpeed : 2 ,
waitTimeBeforeStreamCompletion : 1000 ,
syntaxHighlighter : highlighter
} }
/ >
)
}
) ;
} ;