Skip to content

Next.js Pages Router ​

Use Halo with Next.js Pages Router.

API Route ​

Create pages/api/chat.ts:

ts
import { Halo } from "@halo-ai/core";
import { DeepSeekAdapter } from "@halo-ai/adapters";
import { toDataStream } from "@halo-ai/stream";
import type { NextApiRequest, NextApiResponse } from "next";

const halo = new Halo({
  adapter: new DeepSeekAdapter({
    apiKey: process.env.DEEPSEEK_API_KEY!,
  }),
});

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { messages } = req.body;
  const agent = halo.agent({
    system: "You are a helpful assistant.",
  });
  // toDataStream returns a Response — convert for Pages Router
  const response = toDataStream(agent.sdkStream(messages));
  res.writeHead(200, Object.fromEntries(response.headers));
  const reader = response.body?.getReader();
  if (!reader) return res.end();
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    res.write(value);
  }
  res.end();
}

Client Component ​

Same useChat usage as App Router:

tsx
import { useChat } from "@ai-sdk/react";
// ... identical to App Router chat component

Released under the MIT License.