@eyepop.ai/eyepop

中文文档
4.0.0发布于 2026/11/14MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3610

EyePop.ai推论 API 的官方Node.js / Typescript 库

中文使用文档
文档目录19 节
  1. 安装
  2. 节点
  3. 浏览器
  4. 原生反应
  5. 认证
  6. 服务器- Side API 密钥
  7. 常务会议
  8. 浏览器和移动客户端
  9. 本地 Dashboard Demos 浏览器 OAuth
  10. 处理媒体
  11. 本地文件
  12. 可读流线
  13. 公开 URL
  14. 图像组( 多个图像, 一个结果)
  15. 取消任务
  16. 终点选项
  17. 可视化
  18. 数据端点预览
  19. 可编译的流行

EyePop.ai 节点SDK

EyePop.ai节点SDK提供JavaScript和TypeScript访问EyePop工人会话进行图像和视频推断.

安装

节点

CI验证了22号节点.

npm install --save @eyepop.ai/eyepop

见 节点示例 用于可运行的脚本.

浏览器

浏览器应用程序可以直接使用捆绑的 SDK :

<script src="https://cdn.jsdelivr.net/npm/@eyepop.ai/eyepop/dist/eyepop.min.js"></script>

API 密钥不能用于浏览器代码 。 浏览器应用程序应该与您信任的后端创建的会话连接 .

原生反应

反应原生应用程序应该使用反应原生软件包:

npm install --save @eyepop.ai/react-native-eyepop

见 反应本地示例。 。 。 .

认证

SDK支持这些认证模式:

  • 可信服务器侧码的 API 密钥认证 .
  • 持续工人会议选择,以进行规定的部署.
  • OAuth浏览仪表板用户创建本地演示.

服务器- Side API 密钥

设定 EYEPOP_API_KEY 在您的服务器环境中。 API密钥是机密,不得在浏览器捆绑,移动应用程序捆绑,或公共寄存器中被曝光.

export EYEPOP_API_KEY=<your_api_key>

在构建工人端点时创建带有流行的瞬间会话 。 这让 EyePop 在媒体处理前安排正确的计算.

import { EyePop } from '@eyepop.ai/eyepop'
;(async () => {
    const endpoint = await EyePop.workerEndpoint({
        pop: {
            components: [
                {
                    type: 'inference',
                    ability: 'eyepop.person:latest',
                    categoryName: 'person',
                },
            ],
        },
    }).connect()
    try {
        const results = await endpoint.process({ source: { path: 'examples/example.jpg' } })
        for await (const result of results) {
            console.log(result)
        }
    } finally {
        await endpoint.disconnect()
    }
})()

临时开庭,通过 pop 在尽可能创建终点时。 使用 endpoint.changePop(pop) 只有在一个已经连接的瞬间工人需要切换出"流行"时.

管道模式为默认,不运行工人会话; EYEPOP_ENV=staging|production|local 选择它的管道API。 与 isPipelineMode: false (或 EYEPOP_PIPELINE_MODE=false(没有) sessionUuid, SDK 创建计算会话 POST /v1/sessions?wait=true。 。 。 .

ModelLess CPU 流行使用相同的构造器-流行路径 :

const endpoint = await EyePop.workerEndpoint({
    pop: {
        components: [
            {
                type: 'inference',
                ability: 'eyepop.localize-objects:latest',
                categoryName: 'objects',
                params: {
                    prompts: [{ prompt: 'person' }],
                },
            },
        ],
    },
}).connect()

您也可以从服务器侧配置中明确传递密钥 :

const endpoint = await EyePop.workerEndpoint({
    apiKey: process.env.EYEPOP_API_KEY,
}).connect()

accessToken 被接受为同一无记名证书形状:

const endpoint = await EyePop.workerEndpoint({
    accessToken: process.env.EYEPOP_ACCESS_TOKEN,
}).connect()

被窝住 auth 选项仍然被支持,但已贬值。 过 apiKey, (中文(简体) ), accessToken, (中文(简体) ), session,或 oAuth2 用于新代码的顶层.

常务会议

如果EyePop为您的部署提供了持续工作段, 设置 EYEPOP_SESSION_UUID 或通过 sessionUuid 明确,取消管道模式(isPipelineMode: false) (中文(简体) ).

export EYEPOP_API_KEY=<your_api_key>
export EYEPOP_SESSION_UUID=<your_session_uuid>
import { EyePop } from '@eyepop.ai/eyepop'
;(async () => {
    const endpoint = await EyePop.workerEndpoint({
        sessionUuid: process.env.EYEPOP_SESSION_UUID,
        isPipelineMode: false,
    }).connect()

    try {
        const results = await endpoint.process({ source: { path: 'sample.mp4' } })
        for await (const result of results) {
            console.log(result)
        }
    } finally {
        await endpoint.disconnect()
    }
})()

持久性会话通常预设. 在这种情况下,直接处理媒体,不打电话 changePop() 除非你的部署是为了接受运行时间的改变.

持续的部署通过计算-api或EyePop工具生成. 例如,一个可信任的服务器可以用内置的流行创建持续部署,然后通过返回的 session_uuid 给SDK:

curl -sS -X POST "https://compute.eyepop.ai/v1/deployments?wait=true" \
  -H "Authorization: Bearer $EYEPOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "node-modeless-deployment",
    "pop": {
      "components": [
        {
          "type": "inference",
          "ability": "eyepop.localize-objects:latest",
          "categoryName": "objects",
          "params": {
            "prompts": [{ "prompt": "person" }]
          }
        }
      ]
    }
  }'

答复包括: session_uuid, (中文(简体) ), session_status, (中文(简体) ), status_url,以及工人访问元数据。 票价 status_url 直到部署达到 pipeline_ok,然后与 sessionUuid。 。 。 .

浏览器和移动客户端

别放 EYEPOP_API_KEY 在浏览器或移动应用程序代码中。 从信任的后端创建 EyePop 会话, 然后只将会话 JSON 传递给客户端 .

本地 Dashboard Demos 浏览器 OAuth

Dashboard 用户可以使用当前浏览器会话运行本地浏览器演示:

<script>
    document.addEventListener('DOMContentLoaded', async () => {
        const endpoint = await EyePop.workerEndpoint({ oAuth2: true }).connect()
        try {
            await endpoint.changePop({
                components: [
                    {
                        type: 'inference',
                        ability: 'eyepop.person:latest',
                        categoryName: 'person',
                    },
                ],
            })
        } finally {
            await endpoint.disconnect()
        }
    })
</script>

处理媒体

本地文件

const results = await endpoint.process({ source: { path: 'examples/example.jpg' } })
for await (const result of results) {
    console.log(result)
}

process() 返回一个 AsyncIterable 预测。 图像通常产生一个预测. 视频和动画图像容器每个帧产生一个预测.

可读流线

流需要明确的MIME类型 :

import fs from 'node:fs'

const stream = fs.createReadStream('examples/example.jpg')
const results = await endpoint.process({
    source: { stream, mimeType: 'image/jpeg' },
})

公开 URL

公共HTTP(S),RTSP,和RTMP URL可以在不从应用程序上传文件的情况下进行处理.

const results = await endpoint.process({
    source: { url: 'https://demo-eyepop-videos.s3.amazonaws.com/test1_vlog.mp4' },
})

图像组( 多个图像, 一个结果)

发送多个图像为 a 单人 来源为流行进程 一起行动 作为一推断单元——例如多图像的VLM快取. 组产量 一个 预测整个集,不同于下面的分批,每个图像都是独立的推论.

// Local files
const results = await endpoint.uploadGroup(['a.jpg', 'b.jpg', 'c.jpg'])
for await (const result of results) {
    console.log(result)
}

// In-memory streams (optional parallel MIME types)
import fs from 'node:fs'
import { Readable } from 'node:stream'
const stream1 = Readable.toWeb(fs.createReadStream('a.jpg'))
const stream2 = Readable.toWeb(fs.createReadStream('b.jpg'))
const results = await endpoint.uploadStreamGroup([stream1, stream2], ['image/jpeg', 'image/jpeg'])

// Remote URLs (the server fetches each)
const results = await endpoint.loadFromGroup(['https://example.com/a.jpg', 'https://example.com/b.jpg'])

图像顺序保存到端. 组合可能包含 最多16个图像 (强制服务器侧). Pop的能力必须是多相能;单相能递出一个组返回出错.

取消任务

排队和进行中的工作可以从结果执行器中取消:

const results = await endpoint.process({
    source: { url: 'https://demo-eyepop-videos.s3.amazonaws.com/test1_vlog.mp4' },
})

for await (const result of results) {
    console.log(result)
    if ((result.seconds ?? 0) >= 10) {
        results.cancel()
    }
}

终点选项

默认, EyePop.workerEndpoint({ pop }).connect() 需要时启动临时工,在连接时取消该工人的排队工作.

禁用工人启动 :

const endpoint = await EyePop.workerEndpoint({ pop, autoStart: false }).connect()

保留待完成的工作 :

const endpoint = await EyePop.workerEndpoint({ pop, stopJobs: false }).connect()

可视化

辅导员由 @eyepop.ai/eyepop-render-2d (英语)。 。 。 .

数据端点预览

EyePop.dataEndpoint() 为数据集管理和模型优化工作流程提供预览支持. 这个API是实验性的,可以改变.

可编译的流行

见 可编译的流行 用于客户端 Pop 构成.

版本与发布记录

@eyepop.ai/eyepop 共发布 153 个版本,首次发布于 2024/01/25;过去 12 个月发布了 51 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
4.0.0latest2026/11/14今天
4.0.0-rc.3next2026/11/14今天
4.0.0-rc.22026/11/13今天
4.0.0-rc.12026/11/131 天前
3.27.12026/11/131 天前
3.27.02026/11/104 天前

关于 @eyepop.ai/eyepop 的常见问题

@eyepop.ai/eyepop 是什么?

EyePop.ai推论 API 的官方Node.js / Typescript 库

如何安装 @eyepop.ai/eyepop?

在项目目录运行 npm install @eyepop.ai/eyepop,或使用 pnpm add / yarn add / bun add。

@eyepop.ai/eyepop 支持 TypeScript 吗?

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

@eyepop.ai/eyepop 支持 ESM 还是 CommonJS?

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

@eyepop.ai/eyepop 可以商用吗?

@eyepop.ai/eyepop 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@eyepop.ai/eyepop 的下载量有多少?

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

@eyepop.ai/eyepop 还在维护吗?

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