快速开始
现在怎么用
用默认数据库、AdminClient 和 UserClient 跑通一条完整调用链。
如果你想先按仓库里的现成产品体验,入口是:
products/serverproducts/client
这两个产品目录里的示例仍然是最快跑通 Base、product、user_token 和 UserClient 的方式。
跑通后,你会得到这个调用链:
Product Client
↓ AdminClient 创建 product / 签发 user_token
VisibleBase Base
↓ UserClient 携带 user_token + product_id 调用 service
service.default() 补齐 query fallback + match()1. 启动 Base
import { Base } from "@visiblebase/base";
const base = new Base();
base.text()
.default({ model: "gpt-5.4" })
.handle(async (ctx) => {
return {
id: crypto.randomUUID(),
role: "assistant",
parts: [
{
type: "text",
text: `Echo: ${ctx.query.prompt}`,
state: "done",
},
],
};
});
await base.serve({
host: "127.0.0.1",
port: 3001,
});然后往默认数据库写一条模型记录:
INSERT INTO visiblebase_models (
model_id,
name,
provider,
upstream_model,
description,
is_primary,
status,
config_json,
created_at,
updated_at
) VALUES (
'gpt-5.4',
'GPT-5.4',
'openai',
'gpt-5.4',
'Primary text model',
'true',
'active',
'{}',
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP
);2. 创建 product 并签发 token
import { AdminClient } from "@visiblebase/client";
const admin = new AdminClient({
base_url: "http://127.0.0.1:3001",
admin_secret_key: process.env.VISIBLEBASE_ADMIN_SECRET_KEY,
});
const product = await admin.products.create({
name: "Demo Product",
});
const user = await admin.tokens.apply({
product_id: product.product_id,
user_id: "user_123",
metadata: {
plan: "pro",
},
ttl: "7d",
});3. 产品侧调用
import { UserClient } from "@visiblebase/client";
const client = new UserClient({
base_url: "http://127.0.0.1:3001",
product_id: product.product_id,
user_token: user.user_token,
});
const models = await client.models();
const result = await client.text({
model: models.primary(),
prompt: "你好 VisibleBase",
});4. 你真正复用的是什么
多个产品接入后,复用的是这些东西:
.env中的 provider key- 数据库里的模型目录
user_token校验- service 路由逻辑
- hook 里的套餐、限额、日志和扣费
下一步: