SDK

SDK

Seeknetic 提供以下客户端 SDK,帮助你快速将平台能力集成到应用中。

SDK 示例

按工作流整理的 Python 和 JavaScript SDK 核心示例。

Python SDK

通过 PyPI 安装,快速完成服务端集成。

↗ 官方包页面

安装

pip install seeknetic

鉴权

通过环境变量 SEEKNETIC_API_KEY 传入 API Key。

NOTE: 请先安装 ffmpeg,并确保 ffmpeg/ffprobe 已加入 PATH。

快速开始

安装 SDK 后,先从最小文本 embedding 请求开始。

从 PyPI 安装
bash
pip install seeknetic
文本 embedding

首个示例使用同步 Python 客户端,只有在需要更高并发时再切到 async。

python
import os
from seeknetic import Seeknetic

client = Seeknetic(
    api_key=os.environ["SEEKNETIC_API_KEY"],
)

response = client.video_embedding.encode_text(
    text="a person walking on the beach"
)

print(len(response.embedding))

本地视频工作流

推荐

这是处理本地文件的推荐方式。使用 preprocess_and_upload(...) 前,请先安装 ffmpeg。

原始视频会保留在本地,这个工作流只上传预处理后的 tensors。service="embedding" 只应配合 video_embedding.encode_video.submit_async(...);service="tagging" 只应配合 video_tagging.submit_async_job(...)。

Embedding · 第 1 步 · 预处理并上传
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

upload = client.preprocess_and_upload(
    video_path="sample.mp4",
    service="embedding",
    request_id="emb-task-0001",
    start_ms=0,
    end_ms=10_000,
)

print(upload.request_id)
print(upload.r2_keys)
Embedding · 第 2 步 · 提交异步任务
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

upload = client.preprocess_and_upload(
    video_path="sample.mp4",
    service="embedding",
    request_id="emb-task-0001",
)

job = client.video_embedding.encode_video.submit_async(
    tensor={
        "video_input_key": upload.r2_keys["video_input"],
        "audio_input_key": upload.r2_keys["audio_input"],
    },
    request_id=upload.request_id,
)

print(job.request_id, job.status)
Embedding · 第 3 步 · 轮询结果
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

status = client.async_status.retrieve("emb-task-0001")

print(status.status)
print(status.embedding)
Tagging · 第 1 步 · 预处理并上传
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

upload = client.preprocess_and_upload(
    video_path="sample.mp4",
    service="tagging",
    request_id="tag-task-0001",
    start_ms=0,
    end_ms=10_000,
)

print(upload.request_id)
print(upload.r2_keys)
Tagging · 第 2 步 · 提交异步任务
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

upload = client.preprocess_and_upload(
    video_path="sample.mp4",
    service="tagging",
    request_id="tag-task-0001",
)

job = client.video_tagging.submit_async_job(
    tensor={
        "video_input_key": upload.r2_keys["video_input"],
        "video_kwargs_key": upload.r2_keys["video_kwargs"],
    },
    request_id=upload.request_id,
)

print(job.request_id, job.status)
Tagging · 第 3 步 · 轮询结果
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

status = client.async_status.retrieve("tag-task-0001")

print(status.status)
print(status.tags)

远程或已上传视频工作流

如果不需要本地预处理,可以直接提交 video_url。

Embedding · 第 1 步 · 提交 video_url
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

job = client.video_embedding.encode_video.submit_async(
    video_url="https://example.com/video.mp4",
)

print(job.request_id, job.status)
Embedding · 第 2 步 · 轮询结果
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

status = client.async_status.retrieve("emb-task-0001")

print(status.status)
print(status.embedding)
Tagging · 第 1 步 · 提交 video_url
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

job = client.video_tagging.submit_async_job(
    video_url="https://example.com/video.mp4",
)

print(job.request_id, job.status)
Tagging · 第 2 步 · 轮询结果
python
import os
from seeknetic import Seeknetic

client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])

status = client.async_status.retrieve("tag-task-0001")

print(status.status)
print(status.tags)

异步客户端

README 还提供了基于 aiohttp 的更高并发用法。

安装 aiohttp 扩展
bash
pip install seeknetic[aiohttp]
结合 DefaultAioHttpClient 使用 AsyncSeeknetic
python
import os
import asyncio
from seeknetic import DefaultAioHttpClient
from seeknetic import AsyncSeeknetic


async def main() -> None:
    async with AsyncSeeknetic(
        api_key=os.environ.get("SEEKNETIC_API_KEY"),
        http_client=DefaultAioHttpClient(),
    ) as client:
        response = await client.video_embedding.encode_text(
            text="a person walking on the beach"
        )
        print(len(response.embedding))


asyncio.run(main())