Logo
RavenSaaS Docs

Text Generation

RavenSaaS supports popular AI text generation models on the market.

Using OpenAI Models

First register an account on the OpenAI platform and generate an API Key.

1. Configure OpenAI API Key

.env
1OPENAI_API_KEY = "sk-xxx"

2. Select OpenAI Model to Generate Text

app/api/gen-text/route.ts
1import { generateText } from "ai";
2import { openai } from "@ai-sdk/openai";
3
4const prompt = "You are a useful assistant.";
5const model = "gpt-4o";
6
7const textModel = openai(model);
8
9const { text, warnings } = await generateText({
10  model: textModel,
11  prompt: prompt,
12});
13
14if (warnings && warnings.length > 0) {
15  throw new Error("Text generation Warning");
16}
17
18console.log("Text generation Result:", text);

Using OpenAI API Compatible Models

Most AI text models on the market are compatible with OpenAI API interfaces. You just need to change the API prefix and API Key to call according to OpenAI interface conventions.

Taking Zhipu AI as an example, use OpenAI API compatible models to generate text:

1. First Generate Corresponding API Key on the Open Platform

2. Configure OpenAI API Compatible Parameters

.env
1ZHIPU_BASE_URL = "https://open.bigmodel.cn/api/paas/v4"
2ZHIPU_API_KEY = "xxx"

3. Generate Text

app/api/demo/gen-text/route.ts
1import { generateText } from "ai";
2import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
3
4const zhipu = createOpenAICompatible({
5  name: "zhipu",
6  apiKey: process.env.ZHIPU_API_KEY,
7  baseURL: process.env.ZHIPU_BASE_URL,
8});
9
10const prompt = "who are you?";
11const model = "glm-4-flash";
12
13const textModel = zhipu(model);
14
15const { text, warnings } = await generateText({
16  model: textModel,
17  prompt: prompt,
18});
19
20if (warnings && warnings.length > 0) {
21  throw new Error("gen text failed");
22}
23
24console.log("gen text ok:", text);

Using OpenRouter Aggregated Models

First register an account on the OpenRouter platform, bind a bank card to purchase credits, and generate an API Key.

1. Set OpenRouter API Key in Configuration File

.env
1OPENROUTER_API_KEY = "sk-or-v1-xxx"

2. Select a Model on OpenRouter to Generate Text

app/api/demo/gen-text/route.ts
1import { generateText } from "ai";
2import { createOpenRouter } from "@openrouter/ai-sdk-provider";
3
4const openrouter = createOpenRouter({
5  apiKey: process.env.OPENROUTER_API_KEY,
6});
7
8const prompt = "who are you?";
9const model = "deepseek/deepseek-r1";
10
11const textModel = openrouter(model);
12
13const { text, warnings } = await generateText({
14  model: textModel,
15  prompt: prompt,
16});
17
18if (warnings && warnings.length > 0) {
19  throw new Error("gen text failed");
20}
21
22console.log("gen text ok:", text);

API Call Reference Code

app/api/demo/gen-text/route.ts
1import { LanguageModelV1, generateText } from "ai";
2import { respData, respErr } from "@/lib/resp";
3
4import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
5import { createOpenRouter } from "@openrouter/ai-sdk-provider";
6import { openai } from "@ai-sdk/openai";
7
8export async function POST(req: Request) {
9  try {
10    const { prompt, provider, model } = await req.json();
11    if (!prompt || !provider || !model) {
12      return respErr("invalid params");
13    }
14
15    let textModel: LanguageModelV1;
16
17    switch (provider) {
18      case "openai":
19        textModel = openai(model);
20        break;
21      case "openrouter":
22        const openrouter = createOpenRouter({
23          apiKey: process.env.OPENROUTER_API_KEY,
24        });
25        textModel = openrouter(model);
26        break;
27      case "zhipu":
28        const zhipu = createOpenAICompatible({
29          name: "zhipu",
30          apiKey: process.env.ZHIPU_API_KEY,
31          baseURL: process.env.ZHIPU_BASE_URL,
32        });
33        textModel = zhipu(model);
34        break;
35      default:
36        return respErr("invalid provider");
37    }
38
39    const { text, warnings } = await generateText({
40      model: textModel,
41      prompt: prompt,
42    });
43
44    if (warnings && warnings.length > 0) {
45      console.log("gen text warnings:", provider, warnings);
46      return respErr("gen text failed");
47    }
48
49    return respData(text);
50  } catch (err) {
51    console.log("gen text failed:", err);
52    return respErr("gen text failed");
53  }
54}

Reference

AI SDK Generate Text

AI SDK Generate Text documentation

View Docs

AI SDK Provider

AI SDK Provider documentation

View Docs