Node.js SDK
SeeAny Node.js / TypeScript SDK,完全兼容 OpenAI 接口规范
安装
bash
npm install seeany快速开始
typescript
import SeeAny from "seeany";
const client = new SeeAny({
apiKey: "sk-xxxxx", // 您的 API Key
baseURL: "https://api.seeany.com/v1", // 可选,默认即为此值
});图片生成
多模型对比出图
typescript
const result = await client.images.generate({
model: ["seedance4.5", "nano-banana-pro", "gpt-image-2"],
prompt: "一只戴着赛博朋克墨镜的橘猫,霓虹灯街道,8k电影光影",
size: "1024x1024",
});
result.results.forEach((item) => {
console.log(`${item.model}: ${item.data[0].url}`);
console.log(`费用: ¥${item.usage.cost}`);
});单模型出图
typescript
const result = await client.images.generate({
model: "seedance4.5",
prompt: "极简白色背景上的一瓶高级香水,水珠特写,自然光影",
size: "2048x2048",
});
console.log(`图片URL: ${result.results[0].data[0].url}`);电商套图
typescript
const result = await client.images.ecommerce.generate({
image: fs.createReadStream("./product.jpg"),
platform: "amazon", // amazon / taobao / tmall
package: "full", // full / main_only / scene_only
style: "minimal", // minimal / lifestyle / luxury
});
result.images.forEach((img) => {
console.log(`${img.description}: ${img.url}`);
});
console.log(`总费用: ¥${result.totalCost.amount}`);AI 模特试穿
typescript
// 使用预置模特
const result = await client.images.tryon.generate({
garmentImage: fs.createReadStream("./dress.jpg"),
modelId: "female_model_01",
prompt: "自然站姿,商场背景",
size: "1024x1792",
});
// 使用自定义模特图
const result2 = await client.images.tryon.generate({
garmentImage: fs.createReadStream("./dress.jpg"),
modelImage: fs.createReadStream("./model.jpg"),
size: "1024x1792",
});
console.log(`试穿效果图: ${result.data[0].url}`);图像处理
typescript
// 背景替换
const result = await client.images.edits({
image: fs.createReadStream("./product.jpg"),
prompt: "将背景替换为海边沙滩日落场景",
model: "nano-banana-pro",
});
// 局部修改(需要 mask)
const result2 = await client.images.edits({
image: fs.createReadStream("./product.jpg"),
mask: fs.createReadStream("./mask.png"),
prompt: "将衣服颜色改为红色",
});
console.log(`编辑结果: ${result.data[0].url}`);视频生成
文生视频
typescript
// 提交任务
const task = await client.videos.generate({
model: "kling-v3",
prompt: "白色运动鞋在旋转展示台上缓慢旋转,studio灯光",
duration: 5,
resolution: "720p",
audio: false,
webhookUrl: "https://your-app.com/webhook", // 可选:Webhook 回调
});
console.log(`任务已提交: ${task.id}`);
// 等待结果
const result = await client.tasks.waitFor(task.id, {
timeout: 300, // 超时时间(秒)
interval: 10, // 轮询间隔(秒)
onProgress: (status) => {
console.log(`进度: ${status.progress}%`);
},
});
console.log(`视频URL: ${result.videoUrl}`);图生视频
typescript
const task = await client.videos.imageToVideo({
image: fs.createReadStream("./product.png"),
model: "seedance-2.0",
prompt: "镜头缓慢推进,产品微微旋转展示",
duration: 5,
motionStrength: 0.5,
});
console.log(`任务已提交: ${task.id}`);查询余额
typescript
const balance = await client.account.getBalance();
console.log(`可用余额: ¥${balance.amount}`);
console.log(`本月消费: ¥${balance.usedThisMonth}`);错误处理
typescript
import SeeAny, { SeeAnyError } from "seeany";
const client = new SeeAny({ apiKey: "sk-xxxxx" });
try {
const result = await client.images.generate({
model: "seedance4.5",
prompt: "一只可爱的猫",
});
} catch (error) {
if (error instanceof SeeAnyError) {
console.log(`错误代码: ${error.code}`);
console.log(`错误信息: ${error.message}`);
console.log(`请求ID: ${error.requestId}`);
console.log(`HTTP状态码: ${error.statusCode}`);
}
}配置选项
typescript
const client = new SeeAny({
apiKey: "sk-xxxxx",
baseURL: "https://api.seeany.com/v1", // API 基础地址
timeout: 60000, // 请求超时(毫秒)
maxRetries: 3, // 最大重试次数
});使用 OpenAI SDK 兼容
typescript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-xxxxx",
baseURL: "https://api.seeany.com/v1",
});
const response = await client.images.generate({
model: "seedance4.5",
prompt: "一只可爱的橘猫",
size: "1024x1024",
});
console.log(response.data[0].url);提示
- SDK 支持 TypeScript 类型定义
- 所有方法均支持 async/await
- 建议使用环境变量管理 API Key
- 详细源码和示例请访问 GitHub