CokeAPI
SDK 与集成

Vercel AI SDK

用 Vercel AI SDK 在 Next.js / SvelteKit / Nuxt 里接入 CokeAPI,前后端流式一气呵成。

Vercel AI SDK 是 React/Vue/Svelte 生态的 AI 集成库,内置 @ai-sdk/openai provider 支持自定义 endpoint。

安装

npm install ai @ai-sdk/openai zod

Provider 配置 (服务端)

// lib/ai.ts
import { createOpenAI } from "@ai-sdk/openai";

export const cokeapi = createOpenAI({
  baseURL: "https://api.cokeapi.com/v1",
  apiKey: process.env.COKEAPI_KEY!,
});

generateText (一次性)

import { generateText } from "ai";
import { cokeapi } from "@/lib/ai";

const { text, usage } = await generateText({
  model: cokeapi("gpt-4o-mini"),
  prompt: "用一句话介绍 CokeAPI",
});

console.log(text);
console.log(`tokens: ${usage.totalTokens}`);

streamText (流式,前端 useChat)

Next.js Route Handler

// app/api/chat/route.ts
import { streamText, convertToModelMessages, type UIMessage } from "ai";
import { cokeapi } from "@/lib/ai";

export const runtime = "nodejs";

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();

  const result = streamText({
    model: cokeapi("grok-4.20-fast"),
    messages: convertToModelMessages(messages),
  });

  return result.toUIMessageStreamResponse();
}

React 前端

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

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat({
    api: "/api/chat",
  });

  return (
    <div>
      {messages.map((m) => (
        <div key={m.id}>
          <b>{m.role}:</b> {m.parts.map((p) => p.type === "text" ? p.text : "").join("")}
        </div>
      ))}
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
        <button type="submit">Send</button>
      </form>
    </div>
  );
}

结构化输出 (generateObject)

import { generateObject } from "ai";
import { z } from "zod";

const { object } = await generateObject({
  model: cokeapi("gpt-4o-mini"),
  schema: z.object({
    name: z.string(),
    tags: z.array(z.string()),
  }),
  prompt: "给 CokeAPI 起 3 个标签",
});

console.log(object); // { name: "CokeAPI", tags: [...] }

工具调用 (Tools)

import { generateText, tool } from "ai";
import { z } from "zod";

const { text } = await generateText({
  model: cokeapi("grok-4.20-expert"),
  prompt: "北京天气?",
  tools: {
    getWeather: tool({
      description: "查询某城市天气",
      parameters: z.object({ city: z.string() }),
      execute: async ({ city }) => `${city} 晴天 25°C`,
    }),
  },
});

图片生成 (experimental_generateImage)

import { experimental_generateImage as generateImage } from "ai";

const { image } = await generateImage({
  model: cokeapi.image("gpt-image-2"),
  prompt: "一只在京都樱花树下的赛博狐狸",
  size: "1024x1024",
});

console.log(image.base64); // base64 PNG

推荐模型矩阵

AI SDK 用法推荐 model
generateText 一次性问答gpt-4o-mini
streamText 实时聊天grok-4.20-fast
generateObject 结构化抽取gpt-4o-mini
Agent + toolsgrok-4.20-expert
图像gpt-image-2

On this page