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 upoverlay 会把 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 - html
工具的工作机制是:保留一份结构化 spec 作为唯一事实来源,文件由 spec 渲染而来(渲染在沙箱中执行一个固定程序,把 spec 当数据读入,spec 里的文本不会被当作代码执行,实现见 docsgpt/agents/tools/artifact_generator.py)。字节存在服务器端,不经过模型,所以大文件也能快速、低成本地处理。
生成成功时的判定方式:助手回复下方出现一个 Artifact 芯片(文档示例文案为 "Artifact")。点开它可以:
- 在侧边栏预览内容(HTML 等类型会内联渲染);
- 下载文件;
- 提出修改要求——这会创建一个新版本。
迭代编辑: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-pptx、python-docx、openpyxl和reportlab。自建 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_BACKEND:jupyter(默认,自建 runner)或daytona;SANDBOX_EXEC_TIMEOUT:单次运行的墙上时钟上限(秒);SANDBOX_MAX_TTL:保活会话的最长存活时间上限;DAYTONA_API_KEY、DAYTONA_TARGET、DAYTONA_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),仅供参考