VisibleBase
快速开始

现在怎么用

用默认数据库、AdminClient 和 UserClient 跑通一条完整调用链。

如果你想先按仓库里的现成产品体验,入口是:

  • products/server
  • products/client

这两个产品目录里的示例仍然是最快跑通 Base、product、user_tokenUserClient 的方式。

跑通后,你会得到这个调用链:

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 里的套餐、限额、日志和扣费

下一步:

目录