Ainative Nextjs Sdk — Ainative Next.js SDK
v1.0.1使用 @ainative/next-sdk 将 AI 聊天功能添加到 Next.js 应用(App Router + Pages Router)中。使用场景包括:(1)安装 @ainative/next-sdk,(2)设置流式聊天 API 路由,(3)使用 AINative 身份验证中间件保护路由,(4)使用服务器客户端进行 API 调用,(5)使用 Next.js 构建全栈 AI 应用。已发布 npm 包 v1.0.1。
运行时依赖
安装命令
点击复制技能文档
@ainative/next-sdk Next.js , App Router , streaming , auth middleware npm install @ainative/next-sdk Server Client — Chat Completions // app/api/chat/route.ts import { createServerClient } from '@ainative/next-sdk/server'; export async function POST(request: Request) { const { messages } = await request.json(); const client = createServerClient({ apiKey: process.env.AINATIVE_API_KEY!, }); // const result = await client.chat.completions.create({ model: 'claude-3-5-sonnet-20241022', messages, max_tokens: 1024, }); return Response.json(result); }
Streaming Response // app/api/chat/route.ts import { createServerClient } from '@ainative/next-sdk/server'; export async function POST(request: Request) { const { messages } = await request.json(); const client = createServerClient({ apiKey: process.env.AINATIVE_API_KEY! }); const stream = await client.chat.completions.create({ model: 'claude-3-5-sonnet-20241022', messages, stream: true, }); return new Response(stream.body, { headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', }, }); }
Auth Middleware // middleware.ts ( import { createMiddleware } from '@ainative/next-sdk/middleware'; export const middleware = createMiddleware({ apiKey: process.env.AINATIVE_API_KEY!, protectedPaths: ['/dashboard', '/api/protected'], loginPath: '/login', publicPaths: ['/', '/about', '/api/chat'], }); export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], };
Client-Side (App Router) // app/components/Chat.tsx 'use client'; import { useState } from 'react'; export function Chat() { const [messages, setMessages] = useState<{ role: string; content: string }[]>([]); const [input, setInput] = useState(''); const send = async () => { const newMessages = [...messages, { role: 'user', content: input }]; setMessages(newMessages); setInput(''); const res = await fetch('/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages: newMessages }), }); const data = await res.json(); setMessages([...newMessages, data.choices[0].message]); }; return (
{m.role}: {m.content}
)} setInput(e.target.value)} /> SendPages Router (API ) // pages/api/chat.ts import type { NextApiRequest, NextApiResponse } from 'next'; import { createServerClient } from '@ainative/next-sdk/server'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { const client = createServerClient({ apiKey: process.env.AINATIVE_API_KEY! }); const result = await client.chat.completions.create({ model: 'claude-3-5-sonnet-20241022', messages: req.body.messages, }); res.json(result); }
Environment Variables # .env.local AINATIVE_API_KEY=ak_your_key AINATIVE_API_KEY —
import { createServerClient } from '@ainative/next-sdk/server'; import { createMiddleware } from '@ainative/next-sdk/middleware'; packages/sdks/nextjs/src/server/createServerClient.ts — Server client packages/sdks/nextjs/src/middleware/ — Auth middleware packages/sdks/nextjs/examples/app-router/ — packages/sdks/nextjs/src/index.ts —