首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Skill 化中台:把 AI 办公、自媒体、短视频与电商通关串成一条流水线

Skill 化中台:把 AI 办公、自媒体、短视频与电商通关串成一条流水线

原创
作者头像
IT大佬 jzit-top
发布于 2026-10-23 16:59:52
发布于 2026-10-23 16:59:52
740
举报

同一条流水线:采集素材 → 加工生产 → 多端分发 → 转化履约 → 数据复盘。一人或小团队做多业务,唯一可行的架构不是"每件事各买一套工具",而是把每个环节抽象成带输入输出契约的 Skill,由统一编排器调度。本文给出这套中台的代码骨架。

一、Skill 协议:一切能力的统一容器

Skill 不是 prompt 集合,而是有 schema、有幂等性、有失败语义的函数。先把契约钉死。

代码语言:javascript
复制
from abc import ABC, abstractmethod
from pydantic import BaseModel
from typing import Any

class SkillInput(BaseModel): ...
class SkillOutput(BaseModel): ...

class Skill(ABC):
    name: str
    version: str
    @abstractmethod
    def run(self, data: SkillInput) -> SkillOutput: ...
    def can_retry(self, err: Exception) -> bool:
        return isinstance(err, (TimeoutError, ConnectionError))

REGISTRY: dict[str, Skill] = {}
def register(s: Skill):
    REGISTRY[f"{s.name}@{s.version}"] = s

要点:version 让技能可灰度升级;can_retry 把可重试与不可重试错误分开,避免"重试把重复内容又发了一遍"。

二、AI 办公:非结构化素材转结构化资产

办公场景的价值在抽取与汇总,不在"让模型写点东西"。用 schema 校验守住数据质

代码语言:javascript
复制
from pydantic import Field

class SheetIn(SkillInput):
    rows: list[dict[str, Any]]
    ask: str

class ReportOut(SkillOutput):
    summary: str
    anomalies: list[dict] = Field(default_factory=list)

class OfficeReport(Skill):
    name, version = "office.report", "1.2.0"

    def __init__(self, llm): self.llm = llm

    def run(self, data: SheetIn) -> ReportOut:
        import json
        prompt = f"数据:{json.dumps(data.rows, ensure_ascii=False)}\n任务:{data.ask}\n" \
                 "只输出JSON: {summary, anomalies:[{row, reason}]}"
        raw = self.llm.complete(prompt, temperature=0)
        return ReportOut(**json.loads(raw))   # 校验失败即抛错,不静默放行

三、自媒体:一稿多平台改写,结构不变语义适配

同一份内容适配公众号、小红书、X,核心是平台规格表驱动,而不是每次重写 prompt。

代码语言:javascript
复制
PLATFORM_SPEC = {
    "wechat":  {"max": 4000, "style": "长文,小标题分段"},
    "xhs":     {"max": 900,  "style": "口语化,emoji,首句钩子"},
    "twitter": {"max": 260,  "style": "短句,结论前置"},
}

class Repurpose(Skill):
    name, version = "media.repurpose", "2.0.0"
    def __init__(self, llm): self.llm = llm

    def run(self, data):
        out = {}
        for p, spec in PLATFORM_SPEC.items():
            text = self.llm.complete(
                f"改写为{spec['style']},不超过{spec['max']}字,保留事实不改数字:\n{data.text}",
                temperature=0.4)
            out[p] = text[: spec["max"]]
        return out

要点:保留事实不改数字 是硬约束——AI 改写最大的风险是悄悄篡改数据,这类约束必须写进每次调用。

四、短视频:用 ffmpeg 做确定性切片与字幕

短视频的可规模化部分不是创意,是切条、字幕、封面这些确定性工序。它们应当被封装成不依赖模型的 Skill。

代码语言:javascript
复制
import subprocess

class ShortVideo(Skill):
    name, version = "video.clip", "1.0.0"

    def run(self, data):
        clips = []
        for i, (start, dur) in enumerate(data.segments):
            dst = f"{data.out_dir}/clip_{i:02d}.mp4"
            subprocess.run([
                "ffmpeg", "-y", "-ss", str(start), "-i", data.src,
                "-t", str(dur), "-vf", "scale=1080:-2,subtitles=auto.srt",
                "-c:v", "libx264", "-preset", "fast", dst
            ], check=True, capture_output=True)
            clips.append(dst)
        return {"clips": clips}

要点:check=True 让失败即抛错;切片参数来自结构化分镜表而非模型即时发挥,保证批量产出的可复现性。

五、电商通关:合规校验是硬门禁

跨境/平台电商的"通关"本质是规则校验:类目属性必填、禁限售词、HS 编码与申报要素。这类环节绝不能交给模型自由判断,必须做成规则引擎 + 模型兜底。

代码语言:javascript
复制
BANNED = {"最", "第一", "国家级", "绝对"}
REQUIRED_ATTRS = {"electronics": {"voltage", "cert"}, "apparel": {"fabric", "size_chart"}}

class Listing(Skill):
    name, version = "ecom.listing", "3.1.0"

    def run(self, data):
        errors = []
        if REQUIRED_ATTRS.get(data.category, set()) - data.attrs.keys():
            errors.append(f"缺少必填属性: {REQUIRED_ATTRS[data.category] - data.attrs.keys()}")
        hit = BANNED & set(data.title.split())
        if hit:
            errors.append(f"标题含违禁词: {hit}")
        if errors:
            raise ValueError("; ".join(errors))     # 阻断上架,不进人工复核队列
        return {"status": "pass", "hs_code": self.classify(data)}

要点:规则命中直接阻断,不做"提示后继续"——通关类错误一旦漏放,成本远高于重跑。

六、复盘闭环:技能产出必须可归因

最后一个 Skill 是复盘:把各环节指标按技能版本聚合,才能回答"改版后转化涨了没有"。

代码语言:javascript
复制
def retro(events: list[dict]) -> dict:
    agg = {}
    for e in events:
        k = (e["skill"], e["version"], e["platform"])
        s = agg.setdefault(k, {"n": 0, "conv": 0})
        s["n"] += 1; s["conv"] += e["converted"]
    return {f"{a}@{b}/{c}": round(v["conv"] / v["n"], 4) for (a, b, c), v in agg.items()}

结语

五个业务表面各异,专业解法却是同一个:把不确定性关进 Skill 的契约里。办公靠 schema 校验、自媒体靠平台规格表、短视频靠确定性 ffmpeg 工序、电商靠规则门禁、复盘靠版本归因。判断一套中台是否成立只需一问:某个环节出错时,能不能定位到具体技能的具体版本并单独重跑?能,才叫中台;不能,只是拼凑的工具箱。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、Skill 协议:一切能力的统一容器
  • 二、AI 办公:非结构化素材转结构化资产
  • 三、自媒体:一稿多平台改写,结构不变语义适配
  • 四、短视频:用 ffmpeg 做确定性切片与字幕
  • 五、电商通关:合规校验是硬门禁
  • 六、复盘闭环:技能产出必须可归因
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档