Merge branch 'main' of https://github.com/vercel-labs/ai-chatbot into update-deps

This commit is contained in:
Lee Robinson 2023-11-26 20:13:31 -06:00
commit 845a93a237
3 changed files with 14 additions and 2 deletions

View file

@ -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

View file

@ -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 (

View file

@ -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',