@aeye/replicate

中文文档
0.4.0发布于 2026/11/05GPL-3.0TypeScriptESM + CJS近 30 天下载 6739

@ aeye 复制 - 复制集成为 @ aeye

中文使用文档
文档目录42 节
  1. 特征
  2. 安装
  3. 重要说明
  4. 快速启动
  5. 配置
  6. 基本配置
  7. 自定义基础 URL
  8. 模型适配器
  9. 使用内建适应器
  10. 创建自定义适配器
  11. 用法实例
  12. 聊天补全
  13. 流出聊天
  14. 图像生成
  15. 音频译名
  16. 使用特定的模型版本
  17. 直接 API 用法
  18. 列出可用的模型
  19. 搜索模式
  20. 配置选项
  21. 复制配置
  22. 模型转换接口
  23. 内建适应器
  24. 聊天模式
  25. 图像生成
  26. 音频
  27. 嵌入层
  28. 处理错误
  29. 模型格式
  30. 最佳做法
  31. 创建模型适配器
  32. API 参考
  33. 复制
  34. 支持的特性
  35. 查找模式
  36. 获取 API 密钥
  37. 相关软件包
  38. 链接
  39. 许可证
  40. 捐款
  41. 贡献适应器
  42. 支助

@aey/复制

复制@aeye (AI TypeScript) 框架的提供者 。 这个软件包为在云中运行AI模型提供了与Repect的平台的集成.

特征

  • 千人模式: 访问庞大的开源AI模型库
  • 模型适配器: 处理模型特定计划的灵活性适配器系统
  • 多重能力: 支持聊天、图像生成、复制等
  • 流线: 支持模型的实时流线
  • 自定义模型: 部署和使用自己的模型
  • 版本控制: 用于复制的特定模型版本

安装

npm install @aeye/replicate @aeye/ai @aeye/core replicate zod

重要说明

复制没有一致的 API - 每个模型都有自己的输入/输出计划。 这意味着您需要为您想要使用的每个模型注册模型适配器. @aeye框架提供了一个灵活的适配器系统来处理这个问题.

快速启动

import { ReplicateProvider } from '@aeye/replicate';
import { AI } from '@aeye/ai';
import { createLlama3Adapter } from '@aeye/replicate';

// Create provider with adapters
const replicate = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    'meta/meta-llama-3-70b-instruct': createLlama3Adapter(),
  },
});

// Use with AI instance
const ai = AI.with()
  .providers({ replicate })
  .create();

// Make a request
const response = await ai.chat.get([
  { role: 'user', content: 'Explain neural networks' }
], {
  metadata: { model: 'meta/meta-llama-3-70b-instruct' }
});

console.log(response.content);

配置

基本配置

import { ReplicateProvider, ReplicateConfig } from '@aeye/replicate';

const config: ReplicateConfig = {
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    // Register adapters for models you want to use
    'meta/meta-llama-3-70b-instruct': createLlama3Adapter(),
    'stability-ai/sdxl': createSDXLAdapter(),
  },
};

const provider = new ReplicateProvider(config);

自定义基础 URL

const provider = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  baseUrl: 'https://custom.replicate.com', // Optional custom endpoint
  transformers: {
    // ... your adapters
  },
});

模型适配器

模型适配器在@aeye标准接口和每个模型的具体输入/输出格式之间翻译.

使用内建适应器

import {
  createLlama3Adapter,
  createSDXLAdapter,
  createWhisperAdapter,
} from '@aeye/replicate';

const provider = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    // Chat model
    'meta/meta-llama-3-70b-instruct': createLlama3Adapter(),

    // Image generation
    'stability-ai/sdxl': createSDXLAdapter(),

    // Audio transcription
    'openai/whisper': createWhisperAdapter(),
  },
});

创建自定义适配器

TODO: 正确的例子

用法实例

聊天补全

import { AI } from '@aeye/ai';
import { ReplicateProvider, createLlama3Adapter } from '@aeye/replicate';

const replicate = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    'meta/meta-llama-3-70b-instruct': createLlama3Adapter(),
  },
});

const ai = AI.with()
  .providers({ replicate })
  .create();

const response = await ai.chat.get([
  { role: 'system', content: 'You are a helpful assistant.' },
  { role: 'user', content: 'What is machine learning?' }
], {
  metadata: { model: 'meta/meta-llama-3-70b-instruct' }
});

console.log(response.content);

流出聊天

for await (const chunk of ai.chat.stream([
  { role: 'user', content: 'Write a story about a robot' }
], {
  metadata: { model: 'meta/meta-llama-3-70b-instruct' }
})) {
  if (chunk.content) {
    process.stdout.write(chunk.content);
  }
}

图像生成

import { createSDXLAdapter } from '@aeye/replicate';

const replicate = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    'stability-ai/sdxl': createSDXLAdapter(),
  },
});

const ai = AI.with()
  .providers({ replicate })
  .create();

const imageResponse = await ai.image.generate.get({
  prompt: 'A serene mountain landscape at sunset',
  size: '1024x1024',
}, {
  metadata: { model: 'stability-ai/sdxl' }
});

console.log('Generated image URL:', imageResponse.images[0].url);

音频译名

import { createWhisperAdapter } from '@aeye/replicate';
import fs from 'fs';

const replicate = new ReplicateProvider({
  apiKey: process.env.REPLICATE_API_KEY!,
  transformers: {
    'openai/whisper': createWhisperAdapter(),
  },
});

const ai = AI.with()
  .providers({ replicate })
  .create();

const audioBuffer = fs.readFileSync('audio.mp3');

const transcription = await ai.transcribe.get({
  audio: audioBuffer,
}, {
  metadata: { model: 'openai/whisper' }
});

console.log('Transcription:', transcription.text);

使用特定的模型版本

// Pin to a specific version for reproducibility
const response = await ai.chat.get(messages, {
  metadata: {
    model: 'meta/meta-llama-3-70b-instruct',
    version: 'fbfb20b472b2f3bdd101412a9f70a0ed4fc0ced78a77ff00970ee7a2383c575d',
  }
});

直接 API 用法

const executor = replicate.createExecutor();

const response = await executor(
  {
    messages: [
      { role: 'user', content: 'Hello!' }
    ],
    temperature: 0.7,
    maxTokens: 500,
  },
  {},
  { model: 'meta/meta-llama-3-70b-instruct' }
);

列出可用的模型

const models = await replicate.listModels();

models.forEach(model => {
  console.log(`${model.id}`);
  console.log(`  Description: ${model.metadata.description}`);
  console.log(`  Runs: ${model.metadata.runCount}`);
  console.log(`  Capabilities: ${Array.from(model.capabilities).join(', ')}`);
});

搜索模式

您可以搜索具有特定能力的模型 :

// Using the Replicate client directly
const client = new Replicate({ auth: process.env.REPLICATE_API_KEY! });

const results = await client.models.search({
  query: 'text generation',
});

for await (const model of results) {
  console.log(model.owner + '/' + model.name);
}

配置选项

复制配置

财产类型需求说明
apiKeystring对复制 API 密钥从 https://retravel.com/count/api-tokens 页面存档备份,存于互联网档案馆
baseUrlstring没有API 端点自定义基础 URL
transformersRecord<string, ModelTransformer>没有用于请求/答复转换的模型适配器

模型转换接口

interface ModelTransformer {
  // Convert @aeye request to model input
  transformRequest: (request: Request) => Record<string, unknown>;

  // Convert model output to @aeye response
  transformResponse: (output: unknown) => Response;

  // Optional: convert stream chunks
  transformStreamChunk?: (chunk: unknown) => Chunk;

  // Optional: convert image request
  transformImageRequest?: (request: ImageGenerationRequest) => Record<string, unknown>;

  // Optional: convert image response
  transformImageResponse?: (output: unknown) => ImageGenerationResponse;

  // Optional: convert transcription request
  transformTranscriptionRequest?: (request: TranscriptionRequest) => Record<string, unknown>;

  // Optional: convert transcription response
  transformTranscriptionResponse?: (output: unknown) => TranscriptionResponse;
}

内建适应器

该套件包括了流行型号的适配器:

聊天模式

  • createLlama3Adapter(): Meta Llama 3 型号
    • meta/meta-llama-3-8b-instruct
    • meta/meta-llama-3-70b-instruct

图像生成

  • createSDXLAdapter(): 稳定扩散XL

    • stability-ai/sdxl
  • createFluxAdapter(): 豪华型

    • black-forest-labs/flux-schnell
    • black-forest-labs/flux-dev

音频

  • createWhisperAdapter(): OpenAI 低语
    • openai/whisper

嵌入层

  • createBGEAdapter(): BGE 嵌入
    • replicate/bge-large-en-v1.5

定期增加更多的适配器。 检查套件导出的最新列表 .

处理错误

try {
  const response = await ai.chat.get(messages, {
    metadata: { model: 'meta/meta-llama-3-70b-instruct' }
  });
} catch (error) {
  if (error.message.includes('No transformer registered')) {
    console.error('Missing model adapter - register a transformer for this model');
  } else if (error.message.includes('Rate limit')) {
    console.error('Rate limit exceeded');
  } else {
    console.error('Error:', error);
  }
}

模型格式

复制模型使用格式 owner/model-name数字 :

  • meta/meta-llama-3-70b-instruct
  • stability-ai/sdxl
  • openai/whisper
  • mistralai/mixtral-8x7b-instruct-v0.1

要使用特定版本,请附加版本ID:

  • meta/meta-llama-3-70b-instruct:fbfb20b472b2f3bdd101412a9f70a0ed4fc0ced78a77ff00970ee7a2383c575d

最佳做法

  1. 注册适配器: 总是为您使用的模型注册适配器

    transformers: {
      'owner/model': createAdapter(),
    }
    
  2. Pin 版本: 在生产中使用特定版本

    model: 'owner/model:version-id'
    
  3. 处理缺失的适配器: 提供有用的错误

    if (!transformer) {
      throw new Error('No adapter registered for ' + model);
    }
    
  4. 缓存模式列表: 复制的模型列表很大

    const models = await replicate.listModels();
    // Cache the results
    
  5. 监视器使用: 每项预测的复制费

    console.log('Tokens used:', response.usage.totalTokens);
    
  6. 测试适配器: 用测试数据验证适配器行为

    const testRequest = { messages: [{ role: 'user', content: 'test' }] };
    const input = adapter.transformRequest(testRequest);
    console.log('Model input:', input);
    

创建模型适配器

以下是创建适配器的完整例子:

import { ModelTransformer } from '@aeye/ai';
import type { Request, Response, Chunk } from '@aeye/core';

export function createMyModelAdapter(): ModelTransformer {
  return {
    transformRequest: (request: Request) => {
      // Extract the last user message as the prompt
      const lastMessage = request.messages[request.messages.length - 1];
      const prompt = typeof lastMessage.content === 'string'
        ? lastMessage.content
        : lastMessage.content.map(c => c.content).join(' ');

      // Build model-specific input
      return {
        prompt,
        temperature: request.temperature ?? 0.7,
        max_length: request.maxTokens ?? 500,
        top_p: request.topP,
        stop_sequences: Array.isArray(request.stop)
          ? request.stop
          : request.stop
            ? [request.stop]
            : undefined,
      };
    },

    transformResponse: (output: unknown): Response => {
      const result = output as {
        output: string[];
        metrics?: { predict_time?: number };
      };

      // Combine output array into single string
      const content = result.output.join('');

      return {
        content,
        finishReason: 'stop',
        usage: {
          text: { input: 0, output: 0 },
        },
      };
    },

    transformStreamChunk: (chunk: unknown) => {
      const data = chunk as { output?: string };

      return {
        content: data.output,
      };
    },
  };
}

API 参考

复制

构造器数字 : new ReplicateProvider(config: ReplicateConfig)

方法数字 :

  • createExecutor<TContext, TMetadata>(config?) - 用适配器创建执行器
  • createStreamer<TContext, TMetadata>(config?) - 用适配器创建流体
  • listModels(config?) - 列出可复制的模型
  • generateImage<TContext>(request, ctx, config?) - 生成图像
  • transcribe<TContext>(request, ctx, config?) - 录音
  • embed<TContext>(request, ctx, config?) - 生成嵌入

支持的特性

  • QQ 聊天补全( 有适配器)
  • ++ 流 (依赖模型)
  • QQ 图像生成( 有适配器)
  • * 音频复制(带有适配器)
  • * 嵌入(带有适配器)
  • 自定义模型
  • QQ 版本针入
  • 函数调用( 依赖模型)
  • * 结构化产出(依赖模型)

特性可用性取决于具体的模型和适配器.

查找模式

浏览可用的模型 :

流行模式类别:

  • 语言模型:Llama,米斯特拉尔,米斯特拉尔等.
  • 图像生成: SDXL,Flux,ControlNet等.
  • 音频:华声,MusicGen等.
  • 视频:稳定视频传播等.
  • 图像增强:升起,面相还原等.

获取 API 密钥

  1. 访问 https://repe.com (中文(简体) )
  2. 创建账户或签名于
  3. 导航到 https://retravel.com/count/api-tokens 页面存档备份,存于互联网档案馆
  4. 生成新的 API 令牌
  5. 在环境变量中安全存储

许可证

GPL-3.0 (英语)

捐款

欢迎贡献,特别是新的模型适配器! 请看主线 @ aeye 仓库 捐款准则.

贡献适应器

提供一个新的模型适配器:

  1. 在 src/adapters.ts
  2. 导出它从 src/index.ts
  3. 为适配器添加测试
  4. 用用法示例更新此 README
  5. 提交拉动请求

支助

关于议题和问题清单:

版本与发布记录

@aeye/replicate 共发布 13 个版本,首次发布于 2025/11/17;过去 12 个月发布了 13 个版本。

版本发布日期距今
0.4.0latest2026/11/05今天
0.3.92026/07/123 个月前
0.3.82026/04/057 个月前
0.3.72026/03/058 个月前
0.3.62026/03/058 个月前
0.3.52026/02/118 个月前

关于 @aeye/replicate 的常见问题

@aeye/replicate 是什么?

@ aeye 复制 - 复制集成为 @ aeye

如何安装 @aeye/replicate?

在项目目录运行 npm install @aeye/replicate,或使用 pnpm add / yarn add / bun add。

@aeye/replicate 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aeye/replicate 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aeye/replicate 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aeye/replicate 可以商用吗?

@aeye/replicate 使用 GPL-3.0 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以 GPL-3.0 兼容许可开源,并附带专利与反锁定条款。仅内部使用不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@aeye/replicate 的下载量有多少?

根据 npm 官方下载统计,@aeye/replicate 在 2026/10/05 – 2026/11/03 这 30 天内被下载 6,739 次,日均约 225 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aeye/replicate 还在维护吗?

最新版本 0.4.0 发布于 2026/11/05(今天);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2025/11/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。