1. Install the Lopus AI SDK
Install lopus-ai
in your React project:
npm install lopus-ai@latest
2. Set up shadcn/ui
Currently, the SDK requires you to setup shadcn/ui
separately in order to render the generated components (we internally use these components for clean default styling). If you prefer installation guidelines given by the shadcn/ui
website, head on to the Installation instructions.
If you’re using a framework like Next.js, Gatsby, Remix or Astro, you can use the shadcn/ui
CLI to set this up. If you’re using plain React.js, head on to the Manual Installation Guide .
Install and initialize shadcn/ui in your React-based project:
npx shadcn-ui@latest init
During initialization, answer the questions as you want.
Add the Lopus AI components to your tailwind.config.ts
content array:
import type { Config } from 'tailwindcss' ;
export default {
darkMode: [ 'class' ] ,
content: [
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}' ,
'./src/components/**/*.{js,ts,jsx,tsx,mdx}' ,
'./src/app/**/*.{js,ts,jsx,tsx,mdx}' ,
'./node_modules/lopus-ai/dist/**/*.{js,ts,jsx,tsx}' , // Add this line
] ,
theme: {
extend: {
// ... rest of your theme config
},
} ,
plugins: [ require ( 'tailwindcss-animate' )] ,
} satisfies Config ;
Make sure to add the highlighted line to your Tailwind config to properly
style the Lopus AI components.
4. Initialize the useLopusChat
Hook
Import and initialize the useLopusChat
hook in your React component:
'use client' ;
import { useLopusChat } from 'lopus-ai' ;
export default function ChatComponent () {
const { messages , sendQuery , isLoading } = useLopusChat ({
apiKey: 'your_api_key_here' ,
});
return (
< div >
{ messages . map (( message , index ) => (
< div key = { index } > { String ( message . content ) } </ div >
)) }
</ div >
);
}
Replace your_api_key_here
with your actual Lopus AI API key. You can find
your API key in the dashboard .
The useLopusChat
hook provides:
messages
: An array of chat messages
sendQuery
: A function to send new messages
isLoading
: A boolean indicating if a response is being generated
You should see a confirmation that you are authenticated:
Authentication confirmation from Lopus AI
5. Design Chat Components
Create 3 necessary components for Messages, Message List, and Chat Input. Each component includes error handling, type checking, and styling.
Message.tsx
MessageList.tsx
ChatInput.tsx
import React , { ReactElement , JSXElementConstructor } from 'react' ;
export function Message ({ message } : MessageProps ) {
return (
< div
className = { `mb-2 p-2 rounded ${
message . sender === 'USER'
? 'bg-blue-600 text-white ml-auto'
: 'bg-gray-200 text-black'
} max-w-[80%]` }
>
{ (() => {
switch ( typeof message . content ) {
case 'string' :
return < div > { message . content } </ div > ;
case 'object' :
if ( React . isValidElement ( message . content )) {
return message . content ;
}
return < div > { JSON . stringify ( message . content ) } </ div > ;
default :
return < div > { String ( message . content ) } </ div > ;
}
})() }
</ div >
);
}
interface Message {
content : string | ReactElement < unknown , string | JSXElementConstructor < any >> | Record < string , unknown >;
sender : 'USER' | 'ASSISTANT' ;
}
interface MessageProps {
message : Message ;
}
Make sure to update your ChatComponent.tsx
to use the components:
'use client' ;
import { useLopusChat } from 'lopus-ai' ;
import { MessageList } from './components/MessageList' ;
import { ChatInput } from './components/ChatInput' ;
export default function ChatComponent () {
const { messages , sendQuery , isLoading } = useLopusChat ({
apiKey: 'your_api_key_here' ,
});
return (
< div className = 'flex flex-col h-screen p-4 bg-gray-100' >
< MessageList messages = { messages } isLoading = { isLoading } />
< ChatInput onSubmit = { sendQuery } isLoading = { isLoading } />
</ div >
);
}
For a complete implementation with advanced features like error handling and component rendering, see our example app:
Next Steps