TurboJet
AI

AI chatbot

Chat streaming terautentikasi lewat POST /api/ai/chat dan @repo/ai.

TurboJet menyertakan API chat streaming yang dibangun di atas Vercel AI SDK. Completion melewati Vercel AI Gateway dan mengembalikan stream pesan UI yang cocok untuk useChat / DefaultChatTransport.

Belum ada UI chatbot

Belum ada UI chat di apps/marketing. Package dan route API siap dipakai client yang Anda tambahkan sendiri (dashboard, modal, atau halaman khusus).

Fitur yang bisa Anda bangun

Backend mendukung bagian yang dibutuhkan untuk pengalaman chatbot lengkap:

  • Respons streaming (createUIMessageStreamResponse)
  • Array pesan multi-turn (context percakapan)
  • modelId dan system prompt opsional lewat helper @repo/ai
  • Akses terautentikasi dan rate limit write pada route

Daftar sesi, riwayat tersimpan, dan UI yang dipoles adalah urusan aplikasi yang Anda tambahkan di atasnya.

Route API

Router Hono di-mount di /api/ai dari app marketing:

packages/api/src/modules/ai/router.ts
export const aiRouter = new Hono<AuthEnv>().post(
	"/chat",
	rateLimit("WRITE"),
	requireAuth,
	async (c) => {
		if (!env.AI_GATEWAY_API_KEY) {
			fail(503, "AI Gateway is not configured");
		}

		const body = await c.req.json<{ messages?: unknown }>();
		if (!Array.isArray(body.messages)) {
			fail(400, "messages must be an array");
		}

		return createChatUIMessageResponse({
			messages: body.messages as UIMessage[],
		});
	},
);
DetailNilai
Method / pathPOST /api/ai/chat
AuthWajib (requireAuth)
Rate limitWRITE
Body{ messages: UIMessage[] }
SuksesRespons stream pesan UI
Key gateway hilang503
Body tidak valid400 — messages must be an array

Logika streaming ada di packages/ai/src/chat.ts (createChatUIMessageResponse).

Menghubungkan client

Gunakan useChat dari AI SDK dengan transport yang mem-post ke /api/ai/chat. Cookie sesi harus dikirim agar Better Auth dapat mengautentikasi request:

"use client";

import { useChat } from "@ai-sdk/react";
import { DefaultChatTransport } from "ai";

export function AiChat() {
	const { messages, sendMessage, status } = useChat({
		transport: new DefaultChatTransport({
			api: "/api/ai/chat",
			credentials: "include",
		}),
	});

	// Render messages dan input yang memanggil sendMessage...
}

Install @ai-sdk/react di app yang menyajikan UI jika belum menjadi dependency. Lihat dokumentasi Vercel AI SDK untuk detail useChat.

Terkait

Di halaman ini