news 2026/9/15 13:53:17

DocsGPT 的 Artifact 工具怎么生成并迭代编辑 PPT、Word 和 PDF 文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DocsGPT 的 Artifact 工具怎么生成并迭代编辑 PPT、Word 和 PDF 文档

DocsGPT 的 Artifact 工具怎么生成并迭代编辑 PPT、Word 和 PDF 文档

【免费下载链接】DocsGPTPrivate AI platform for agents, assistants and enterprise search. Built-in Agent Builder, Deep research, Document analysis, Multi-model support, and API connectivity for agents.项目地址: https://gitcode.com/GitHub_Trending/do/DocsGPT

在 DocsGPT 里让 AI 直接产出可下载的演示文稿、Word 文档或 PDF,并且能在后续对话中逐版修改,而不是每次重新生成——这是 Artifact 工具的核心任务。前提是部署中有一个正在运行的 sandbox runner(代码与渲染都在沙箱中执行),然后在 Agent 的工具选择器里启用artifact_generator。完成后,助手回复下方会出现 Artifact 芯片,可以预览、下载,也可以继续提出修改要求,每次修改都会追加一个新版本,历史版本可以查看和回退。

准备条件:先让 sandbox runner 跑起来

Artifact 依赖沙箱,DocsGPT 没有把它放进默认配置:普通的docker compose up不会启动docsgpt-sandbox,没有 runner 时该工具每次调用都会失败。启用方式是叠加 sandbox overlay 并设置一个共享的网关令牌(令牌是强制的,未设置时网关会拒绝启动,详见 deployment/sandbox/README.md):

export SANDBOX_GATEWAY_AUTH_TOKEN=$(openssl rand -hex 32) docker compose \ -f deployment/docker-compose.yaml \ -f deployment/optional/docker-compose.optional.sandbox.yaml up

overlay 会把 backend 和 worker 挂到sandbox-net,让它们通过http://docsgpt-sandbox:8888访问 runner,并配好SANDBOX_KERNEL_NAME=docsgpt-python与共享令牌,不需要手工接线。-hub-azure两种 compose 变体同样叠加这个 sandbox overlay。

可选加固:如果希望限制沙箱出站流量(SSRF 防护),再叠加 egress overlay:

docker compose \ -f deployment/docker-compose.yaml \ -f deployment/optional/docker-compose.optional.sandbox.yaml \ -f deployment/optional/docker-compose.optional.sandbox-egress.yaml up

开发阶段也可以单独跑 runner,然后把应用指过去(deployment/sandbox/README.md 给出的方式):

docker build -t docsgpt-sandbox deployment/sandbox docker run --rm -p 8888:8888 -e SANDBOX_GATEWAY_AUTH_TOKEN=devtoken docsgpt-sandbox # 在应用的 .env 中: # SANDBOX_GATEWAY_URL=http://localhost:8888 # SANDBOX_GATEWAY_AUTH_TOKEN=devtoken

启用 Artifact 工具

Artifact 和 Code Executor 都是 opt-in 的:新建的 Agent 默认不启用任何工具。按 docs/content/Tools/artifacts-and-code-execution.mdx 的说法,常规路径是在agent 的工具选择器(tool picker)里按 Agent 启用artifact_generator

如果你希望这些工具出现在每一次普通对话(而不是按 Agent 配置),可以把它们加进DEFAULT_CHAT_TOOLS

DEFAULT_CHAT_TOOLS = ["memory", "read_webpage", "scheduler", "code_executor", "artifact_generator"]

文档说明这两者被刻意排除在出厂默认之外:它们都经由 sandbox runner 执行,在没有 runner 的部署上每次调用都会失败。

在对话中生成 PPT、Word 和 PDF

用启用了该工具的 Agent 发起对话,直接说明你要的文档类型即可。Artifact 工具支持以下 kind 与产出格式:

  • presentation.pptx
  • document.docx
  • spreadsheet.xlsx
  • pdf
  • html

工具的工作机制是:保留一份结构化 spec 作为唯一事实来源,文件由 spec 渲染而来(渲染在沙箱中执行一个固定程序,把 spec 当数据读入,spec 里的文本不会被当作代码执行,实现见 docsgpt/agents/tools/artifact_generator.py)。字节存在服务器端,不经过模型,所以大文件也能快速、低成本地处理。

生成成功时的判定方式:助手回复下方出现一个 Artifact 芯片(文档示例文案为 "Artifact")。点开它可以:

  1. 在侧边栏预览内容(HTML 等类型会内联渲染);
  2. 下载文件;
  3. 提出修改要求——这会创建一个新版本。

迭代编辑:edit、rewrite 与版本历史

Artifact 工具对外暴露三个动作,对应不同的修改粒度:

  • create:从 kind 和 spec 创建新 Artifact;
  • edit:对已有 Artifact 做针对性修改(小改动优先用它),实现上是对当前 spec 打一个 merge-patch 并追加一个版本;
  • rewrite:用完整的新 spec 整体替换。

由于"编辑 = 修改 spec 后重新渲染",版本历史是干净、可 diff 的:每次编辑都会向同一个 Artifact 追加新版本,而不是另起一份文件,你可以查看或回退到较早的版本。对读者来说的实际操作就是:在同一个对话里继续用自然语言描述要改的内容,每次改动落一个新版本,芯片上查看历史即可。

可选分支:使用 Daytona 后端时的渲染库问题

如果部署用的是 Daytona 托管沙箱(SANDBOX_BACKEND=daytona,需设置DAYTONA_API_KEY,并用DAYTONA_TARGET选区域),要注意一个坑:Artifact 渲染会在沙箱内导入python-pptxpython-docxopenpyxlreportlab。自建 Jupyter runner 自带这些库,但 Daytona 的默认镜像没有——在默认镜像下 presentation、document、spreadsheet、pdf 的渲染会以render failed: ExecutionError(沙箱内的ModuleNotFoundError)失败;HTML 和 markdown 不需要额外库,任何镜像都能用。

解法是把渲染库打进一个快照,然后让 Daytona 使用它(deployment/sandbox/README.md 给出的命令):

# 从环境读取 DAYTONA_API_KEY / DAYTONA_API_URL / DAYTONA_TARGET: python scripts/build_daytona_snapshot.py # 构建 "docsgpt-artifacts-py312" # 然后在 .env 中设置: # DAYTONA_SNAPSHOT=docsgpt-artifacts-py312

快照存在于你自己的 Daytona 账号里,每个部署要自己构建一次;脚本是幂等的,同名快照已存在时会跳过。保持 scripts/build_daytona_snapshot.py 里的版本钉住与 backend venv 同步,可以让 Daytona 与 Jupyter 后端的渲染输出一致。

跨租户或不信任代码的场景,README 也建议用 Daytona 后端(每个会话独立 VM),而不是共享 uid 的自建 runner。

相关配置项

与本文场景直接相关的设置(docs/content/Tools/artifacts-and-code-execution.mdx):

  • SANDBOX_BACKENDjupyter(默认,自建 runner)或daytona
  • SANDBOX_EXEC_TIMEOUT:单次运行的墙上时钟上限(秒);
  • SANDBOX_MAX_TTL:保活会话的最长存活时间上限;
  • DAYTONA_API_KEYDAYTONA_TARGETDAYTONA_SNAPSHOT:Daytona 云配置;
  • 每个用户有独立的 artifact 配额,限制可持有的 Artifact 数量与存储量。

边界与限制

  • 没有 sandbox runner 的部署上,Artifact 每次调用都会失败,这是刻意从默认配置中排除的原因。
  • Daytona 默认镜像下只有 HTML/markdown 能渲染,先建快照再启用DAYTONA_SNAPSHOT,否则 PPT、Word、PDF 都会失败。
  • 单个自建 Jupyter runner 是一个信任域:所有会话跑在同一容器、同一 uid 下,按工作目录隔离,适合同一信任边界内使用;多租户隔离应改用 Daytona 后端并叠加 deployment/k8s/network-policies/sandbox-egress-policy.yaml 一类的出站策略(K8s 场景)。

按上面的路径走完后,验证结果就是固定的:对话里出现 Artifact 芯片、可以下载目标格式文件(.pptx/.docx/.pdf),且每次提出修改都会追加可回退的新版本。

【免费下载链接】DocsGPTPrivate AI platform for agents, assistants and enterprise search. Built-in Agent Builder, Deep research, Document analysis, Multi-model support, and API connectivity for agents.项目地址: https://gitcode.com/GitHub_Trending/do/DocsGPT

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 13:51:27

OpenHarmony上跑通Flutter:环境搭建完整实战指南

宠辱不惊地讲,在 OpenHarmony 生态还没完全“傻瓜化”的今天,能把 Flutter 和 OHOS 的这套工具链从零拼起来,本身就是一场跟版本、签名、构建缓存斗智斗勇的过程。我这次踩的版本是 oh-3.44.9-dev ,算是 Flutter 对 OpenHarmony…

作者头像 李华
网站建设 2026/9/15 13:51:13

Flink StandAlone模式作业提交全流程:打包、提交与排坑指南

你有没有遇到过这种情况:本地开发环境里跑得好好的Flink任务,一拿到测试环境就各种幺蛾子,要么类冲突,要么提交后TaskManager一直连不上,要么作业运行几分钟就内存溢出。折腾一圈下来,发现大多数问题都不是…

作者头像 李华
网站建设 2026/9/15 13:49:57

Unity移动端录屏实战:Natcorder实现录屏、拍照与GIF生成

前几天有个朋友在群里问:Unity 游戏要上线应用商店,商店需要演示视频,有没有能在移动端直接录屏、还能顺手生成 GIF 的插件?我第一反应就是 Natcorder。这个插件我用了快两年,录屏、拍照、GIF 三件事全都能干&#xff…

作者头像 李华