Cài và tạo provider
Provider là lớp mỏng trên API AnyRouter, triển khai interface provider của AI SDK. Cài cùng AI SDK, rồi gọi createAnyRouter() — nó đọc ANYROUTER_API_KEY từ môi trường khi bạn bỏ key.
npm install @anyr/ai-sdk-provider ai zodimport { createAnyRouter } from "@anyr/ai-sdk-provider"
import { generateText } from "ai"
const anyrouter = createAnyRouter()
const { text } = await generateText({
model: anyrouter("z-ai/glm-4.7-flash"),
prompt: "What is AnyRouter?",
})
console.log(text)Stream, và đổi model id
Mọi hàm AI SDK nhận cùng factory model, nên streamText là cùng lời gọi với helper khác. Và vì model id là chuỗi provider/model thường, đổi model chạy là sửa một chuỗi — không client mới, không key mới.
import { createAnyRouter } from "@anyr/ai-sdk-provider"
import { streamText } from "ai"
const anyrouter = createAnyRouter()
const { textStream } = await streamText({
// swap freely: "anthropic/claude-opus-4-5" or the free tier "anyrouter/free"
model: anyrouter("z-ai/glm-4.7-flash"),
prompt: "Write a haiku about the ocean.",
})
for await (const chunk of textStream) {
process.stdout.write(chunk)
}| Model id | Route tới |
|---|---|
| z-ai/glm-4.7-flash | Z.AI GLM-4.7 Flash |
| anthropic/claude-opus-4-5 | Anthropic Claude Opus 4.5 |
| anyrouter/free | Tầng miễn phí — không tốn credit |
Output có cấu trúc với generateObject
generateObject cũng vậy — truyền schema zod và provider trả object có kiểu. Điều này giữ giữa các model, nên bạn chuyển tác vụ structured-output sang model rẻ hơn hoặc mạnh hơn mà không đụng schema.
import { createAnyRouter } from "@anyr/ai-sdk-provider"
import { generateObject } from "ai"
import { z } from "zod"
const anyrouter = createAnyRouter()
const { object } = await generateObject({
model: anyrouter("z-ai/glm-4.7-flash"),
schema: z.object({
title: z.string(),
summary: z.string(),
tags: z.array(z.string()),
}),
prompt: "Summarise the latest AI news in a structured format.",
})
console.log(object.title, object.tags)Không dùng AI SDK? Dùng @anyr/sdk
Nếu app không dùng Vercel AI SDK, SDK TypeScript thuần nói chuyện với cùng gateway bằng cùng key. Nó lộ client dạng OpenAI — chat, embeddings, Responses API, và Anthropic Messages API — với request và response có kiểu.
import { AnyRouter } from "@anyr/sdk"
// Reads ANYROUTER_API_KEY when omitted.
const client = new AnyRouter()
const completion = await client.chat.completions.create({
model: "z-ai/glm-4.7-flash",
messages: [{ role: "user", content: "Hello!" }],
})
console.log(completion.choices[0].message.content)Cả hai package đọc ANYROUTER_API_KEY — tạo một key để bắt đầu.
Tạo keyBài liên quan
Run the Claude Agent SDK on any model
The Claude Agent SDK reads ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY, the same two variables Claude Code uses. Point them at AnyRouter and every catalog model is available to query() behind the Anthropic /messages dialect — in TypeScript or Python.
Use the OpenAI SDK with any model
The official openai package for Python and TypeScript doesn't have to mean OpenAI models. Override base_url and api_key, keep every other call the same, and address 170+ models across 28+ providers as provider/model strings — including OpenAI's own.
Free LLM API: 150+ models with a real free tier
You don't need a credit card to start building with large language models. A free LLM API should give you real models, an OpenAI-compatible endpoint, and a way to keep costs at zero as you grow — here's how that works in practice.
Gửi request đầu trong hai phút
Bắt đầu miễn phí với key của bạn, hoặc nạp rồi trả theo token. Go: $4 credit/tháng — $2/tháng, hoặc miễn phí khi góp một provider key.
Bắt đầu miễn phí