Use @ainative/next-sdk to add AI chat to Next.js apps (App Router + Pages Router). Use when (1) Installing @ainative/next-sdk, (2) Setting up a streaming chat API route, (3) Protecting routes with AINative auth middleware, (4) Using the server client for API calls, (5) Building full-stack AI apps with Next.js. Published npm package v1.0.1.
用于 Next.js 的服务端 AINative 客户端,支持 App Router、流式聊天和认证中间件。
bash
npm install @ainative/next-sdk
typescript
// 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.AINATIVEAPIKEY!,
});
// 非流式
const result = await client.chat.completions.create({
model: claude-3-5-sonnet-20241022,
messages,
max_tokens: 1024,
});
return Response.json(result);
}
typescript
// 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.AINATIVEAPIKEY! });
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,
},
});
}
typescript
// middleware.ts (仓库根目录或 src/)
import { createMiddleware } from @ainative/next-sdk/middleware;
export const middleware = createMiddleware({
apiKey: process.env.AINATIVEAPIKEY!,
protectedPaths: [/dashboard, /api/protected],
loginPath: /login,
publicPaths: [/, /about, /api/chat],
});
export const config = {
matcher: [/((?!next/static|next/image|favicon.ico).*)],
};
typescript
// 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}
)}typescript
// 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.AINATIVEAPIKEY! });
const result = await client.chat.completions.create({
model: claude-3-5-sonnet-20241022,
messages: req.body.messages,
});
res.json(result);
}
bash
切勿将 AINATIVEAPIKEY 暴露给客户端——仅在服务端代码中使用(路由处理器、Server Actions、getServerSideProps)。
typescript
import { createServerClient } from @ainative/next-sdk/server;
import { createMiddleware } from @ainative/next-sdk/middleware;
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 ainative-nextjs-sdk-1776063732 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 ainative-nextjs-sdk-1776063732 技能
skillhub install ainative-nextjs-sdk-1776063732
文件大小: 2.16 KB | 发布时间: 2026-4-14 14:04