Merge branch 'main' of https://github.com/vercel-labs/ai-chatbot into update-deps
This commit is contained in:
commit
845a93a237
3 changed files with 14 additions and 2 deletions
|
|
@ -21,7 +21,7 @@
|
||||||
- [Next.js](https://nextjs.org) App Router
|
- [Next.js](https://nextjs.org) App Router
|
||||||
- React Server Components (RSCs), Suspense, and Server Actions
|
- React Server Components (RSCs), Suspense, and Server Actions
|
||||||
- [Vercel AI SDK](https://sdk.vercel.ai/docs) for streaming chat UI
|
- [Vercel AI SDK](https://sdk.vercel.ai/docs) for streaming chat UI
|
||||||
- Support for OpenAI (default), Anthropic, Hugging Face, or custom AI chat models and/or LangChain
|
- Support for OpenAI (default), Anthropic, Cohere, Hugging Face, or custom AI chat models and/or LangChain
|
||||||
- [shadcn/ui](https://ui.shadcn.com)
|
- [shadcn/ui](https://ui.shadcn.com)
|
||||||
- Styling with [Tailwind CSS](https://tailwindcss.com)
|
- Styling with [Tailwind CSS](https://tailwindcss.com)
|
||||||
- [Radix UI](https://radix-ui.com) for headless component primitives
|
- [Radix UI](https://radix-ui.com) for headless component primitives
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
## Model Providers
|
## Model Providers
|
||||||
|
|
||||||
This template ships with OpenAI `gpt-3.5-turbo` as the default. However, thanks to the [Vercel AI SDK](https://sdk.vercel.ai/docs), you can switch LLM providers to [Anthropic](https://anthropic.com), [Hugging Face](https://huggingface.co), or using [LangChain](https://js.langchain.com) with just a few lines of code.
|
This template ships with OpenAI `gpt-3.5-turbo` as the default. However, thanks to the [Vercel AI SDK](https://sdk.vercel.ai/docs), you can switch LLM providers to [Anthropic](https://anthropic.com), [Cohere](https://cohere.com/), [Hugging Face](https://huggingface.co), or using [LangChain](https://js.langchain.com) with just a few lines of code.
|
||||||
|
|
||||||
## Deploy Your Own
|
## Deploy Your Own
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import { useState } from 'react'
|
||||||
import { Button } from './ui/button'
|
import { Button } from './ui/button'
|
||||||
import { Input } from './ui/input'
|
import { Input } from './ui/input'
|
||||||
import { toast } from 'react-hot-toast'
|
import { toast } from 'react-hot-toast'
|
||||||
|
import { usePathname, useRouter } from 'next/navigation'
|
||||||
|
|
||||||
const IS_PREVIEW = process.env.VERCEL_ENV === 'preview'
|
const IS_PREVIEW = process.env.VERCEL_ENV === 'preview'
|
||||||
export interface ChatProps extends React.ComponentProps<'div'> {
|
export interface ChatProps extends React.ComponentProps<'div'> {
|
||||||
|
|
@ -28,6 +29,8 @@ export interface ChatProps extends React.ComponentProps<'div'> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Chat({ id, initialMessages, className }: ChatProps) {
|
export function Chat({ id, initialMessages, className }: ChatProps) {
|
||||||
|
const router = useRouter()
|
||||||
|
const path = usePathname()
|
||||||
const [previewToken, setPreviewToken] = useLocalStorage<string | null>(
|
const [previewToken, setPreviewToken] = useLocalStorage<string | null>(
|
||||||
'ai-token',
|
'ai-token',
|
||||||
null
|
null
|
||||||
|
|
@ -46,6 +49,12 @@ export function Chat({ id, initialMessages, className }: ChatProps) {
|
||||||
if (response.status === 401) {
|
if (response.status === 401) {
|
||||||
toast.error(response.statusText)
|
toast.error(response.statusText)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
onFinish() {
|
||||||
|
if (!path.includes('chat')) {
|
||||||
|
router.push(`/chat/${id}`, { shallow: true })
|
||||||
|
router.refresh()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,9 @@ const CodeBlock: FC<Props> = memo(({ language, value }) => {
|
||||||
background: 'transparent',
|
background: 'transparent',
|
||||||
padding: '1.5rem 1rem'
|
padding: '1.5rem 1rem'
|
||||||
}}
|
}}
|
||||||
|
lineNumberStyle={{
|
||||||
|
userSelect: "none",
|
||||||
|
}}
|
||||||
codeTagProps={{
|
codeTagProps={{
|
||||||
style: {
|
style: {
|
||||||
fontSize: '0.9rem',
|
fontSize: '0.9rem',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue