AI 集成文本流式生成

文本流式生成

ShipAny 支持市面上大部分的 AI 文本模型流式生成内容。

首先参考 文本生成 章节,配置对应的模型。

然后实现一个流式生成 API,用非阻塞的方式返回文本流。

API 调用参考代码

app/api/demo/gen-text/route.ts
import { LanguageModelV1, streamText } from "ai";
 
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
import { openai } from "@ai-sdk/openai";
import { respErr } from "@/lib/resp";
 
export async function POST(req: Request) {
  try {
    const { prompt, provider, model } = await req.json();
    if (!prompt || !provider || !model) {
      return respErr("invalid params");
    }
 
    let textModel: LanguageModelV1;
 
    switch (provider) {
      case "openai":
        textModel = openai(model);
        break;
      case "openrouter":
        const openrouter = createOpenRouter({
          apiKey: process.env.OPENROUTER_API_KEY,
        });
        textModel = openrouter(model);
        break;
      case "zhipu":
        const zhipu = createOpenAICompatible({
          name: "zhipu",
          apiKey: process.env.ZHIPU_API_KEY,
          baseURL: process.env.ZHIPU_BASE_URL,
        });
        textModel = zhipu(model);
        break;
      default:
        return respErr("invalid provider");
    }
 
    const result = await streamText({
      model: textModel,
      prompt: prompt,
      onFinish: async () => {
        console.log("finish", await result.text);
      },
    });
 
    return result.toTextStreamResponse();
  } catch (err) {
    console.log("gen text stream failed:", err);
    return respErr("gen text stream failed");
  }
}

参考