当前位置: 首页 > news >正文

OpenMontage:开源AI视频自动化流水线,打通从文本到成片全链路

你是不是也遇到过这样的困境:想用 AI 制作一个短视频,却发现整个过程像在玩“打地鼠”——刚用 A 工具生成了文案,又得切到 B 工具去生成语音,接着用 C 工具找素材,最后还得在剪辑软件里手忙脚乱地拼接。流程割裂、工具繁多、成本高昂,让很多创意止步于想法。

今天要聊的OpenMontage,正是为了解决这个痛点而生。它在 GitHub 上获得了超过 12K 的星标,核心目标很明确:用一个开源项目,打通从文本到成片的全链路 AI 视频制作。它不是一个单一的 AI 模型,而是一个“视频制作组”的自动化调度中心。

这篇文章不会只告诉你 OpenMontage 很火,而是要深入分析:它到底是如何工作的?作为开发者或内容创作者,我们该如何上手并应用到实际项目中?它真的能替代传统工作流吗,还是说只是一个“玩具”?我们将从原理拆解、环境搭建、实战演示到避坑指南,为你提供一份完整的落地指南。

1. OpenMontage 要解决的核心问题:流程自动化,而非单点替代

在深入代码之前,我们必须先理解 OpenMontage 的设计哲学。市面上有很多优秀的单点 AI 工具:ChatGPT 写文案,DALL-E 或 Midjourney 做图, ElevenLabs 生成语音,Sora 或 Runway 生成视频片段。但问题在于,这些工具是“孤岛”。

传统 AI 视频制作流程的典型痛点:

  1. 上下文割裂:你需要手动将上一个工具的产出(如文案)整理成适合下一个工具(如 TTS)的输入格式。
  2. 风格不统一:在不同工具中调整参数以保证视频、语音、画面的风格一致,极其耗时。
  3. 资产管理混乱:生成的图片、音频、视频片段散落在各处,整合过程容易出错。
  4. 编程门槛高:想要自动化调用这些工具的 API,需要熟悉多种 SDK、处理认证、计费和错误处理,对非专业开发者不友好。

OpenMontage 的解决方案是“编排(Orchestration)”。它预设了一个标准的视频制作流水线(Pipeline),将文案生成、语音合成、图片/视频生成、背景音乐、字幕添加、最终剪辑等环节串联起来。你只需要提供初始指令(如一个主题),它就能自动调用后端的各种 AI 服务(如 OpenAI, Stability AI, ElevenLabs 等),完成所有中间步骤,输出一个完整的视频文件。

关键判断:OpenMontage 的核心价值不在于其使用的某个 AI 模型有多尖端,而在于它通过工程化的方式,标准化和自动化了“多模型协作”的流程。它降低的不是某个环节的门槛,而是从“想法”到“成片”整个工作流的门槛。

2. 核心架构与概念拆解

要有效使用 OpenMontage,需要理解其几个核心概念,这有助于后续的配置和问题排查。

2.1 核心组件:Pipeline(流水线)

这是 OpenMontage 的心脏。一个 Pipeline 定义了一个视频从无到有所需经历的所有阶段(Stage)。典型的阶段包括:

  • Script Generation:根据主题生成视频文案/脚本。
  • Voice Synthesis:将文案转换为语音。
  • Visual Asset Generation:根据文案段落生成对应的图片或视频片段。
  • Background Music Selection:匹配背景音乐。
  • Subtitle Generation:生成并合成字幕。
  • Final Assembly:将所有音频、视频、字幕轨道合成为最终视频。

每个阶段都是一个可插拔的模块,你可以配置使用哪个 AI 服务提供商(如 OpenAI 的 GPT 用于文案,Stable Diffusion 用于绘图)。

2.2 核心概念:AI Service Provider(AI 服务提供商)

OpenMontage 本身不提供 AI 能力,它是一个调度框架。所有 AI 能力都来自外部服务的 API。因此,你需要配置并授权这些服务。

  • LLM Provider:用于文案和创意生成。例如:OpenAI GPT, Anthropic Claude, 或本地部署的 Llama。
  • TTS Provider:用于文本转语音。例如:ElevenLabs, Microsoft Azure TTS, Google TTS。
  • Image/Video Generation Provider:用于生成视觉素材。例如:Stability AI (Stable Diffusion), OpenAI DALL-E, 或 RunwayML。

2.3 工作流程

一个简化的工作流程如下:

用户输入主题 -> Pipeline启动 -> 调用LLM生成脚本 -> 脚本分段 -> 并行调用TTS和文生图 -> 收集所有素材 -> 合成时间线 -> 渲染输出视频

整个过程是异步的,并且具有重试、错误处理等机制。

2.4 输出资产

OpenMontage 不仅输出最终视频(如final_video.mp4),通常还会保留中间产物:

  • script.json:结构化的视频脚本。
  • voice_audio.mp3:合成的完整语音。
  • image_1.png,image_2.jpg:生成的图片素材。
  • subtitle.srt:字幕文件。
  • timeline_config.json:剪辑时间线配置。

这对于调试和后续手动微调非常有帮助。

3. 环境准备与安装部署

OpenMontage 是一个 Python 项目,因此你需要一个基本的 Python 开发环境。

3.1 基础环境要求

  • Python 版本:>= 3.8(推荐 3.9 或 3.10)。使用python --version检查。
  • 包管理工具pip(通常随 Python 安装)。
  • 版本控制git(用于克隆项目)。
  • FFmpeg这是最重要的依赖之一!OpenMontage 依赖 FFmpeg 进行视频和音频的编码、解码、合成。必须在系统全局安装。
    • macOS:brew install ffmpeg
    • Ubuntu/Debian:sudo apt update && sudo apt install ffmpeg
    • Windows: 从 FFmpeg 官网 下载可执行文件,并将其所在目录添加到系统环境变量PATH中。
  • 虚拟环境(强烈推荐):使用venvconda创建独立环境,避免包冲突。

3.2 获取项目代码

打开终端,克隆仓库并进入目录:

git clone https://github.com/OpenMontage/OpenMontage.git cd OpenMontage

3.3 安装 Python 依赖

在项目根目录下,通常会有requirements.txtpyproject.toml文件。

# 创建虚拟环境(以 venv 为例) python -m venv venv # 激活虚拟环境 # macOS/Linux: source venv/bin/activate # Windows: # venv\Scripts\activate # 安装依赖 pip install -r requirements.txt

如果项目使用poetry管理,则运行poetry install

注意:安装过程可能会因网络问题导致某些包(特别是与深度学习相关的,如torch)下载缓慢或失败。可以考虑使用国内镜像源,如pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3.4 配置 AI 服务 API 密钥

这是最关键的一步。OpenMontage 需要凭据来调用外部 AI 服务。配置方式通常是通过环境变量或.env文件。

  1. 在项目根目录创建或复制环境变量文件:
    cp .env.example .env
  2. 打开.env文件,填入你从各服务商处获取的 API Key。
    # .env 文件示例 OPENAI_API_KEY=sk-your-openai-api-key-here ELEVENLABS_API_KEY=your-elevenlabs-api-key-here STABILITY_API_KEY=sk-your-stability-ai-key-here # 可根据需要添加其他服务的 KEY
    重要提醒
    • 妥善保管你的.env文件,不要将其提交到公开的 Git 仓库。确保.env已在.gitignore中。
    • 这些 API 调用可能会产生费用,请务必了解各服务商的计价方式,初期可使用免费额度进行测试。

4. 核心配置与 Pipeline 定义详解

安装完成后,你需要理解如何配置一个属于自己的视频生成流水线。OpenMontage 的核心配置通常由一个 YAML 或 JSON 文件定义。

4.1 理解配置文件结构

以下是一个高度简化的配置示例,展示了核心部分:

# config/pipeline_default.yaml pipeline: name: "tech_explainer_video" stages: - name: "script_generation" provider: "openai" model: "gpt-4" parameters: system_prompt: "你是一个科技视频脚本作家,擅长用通俗易懂的语言解释复杂概念。" creativity: 0.8 - name: "voice_synthesis" provider: "elevenlabs" voice_id: "21m00Tcm4TlvDq8ikWAM" # 某个特定音色的ID parameters: stability: 0.5 similarity_boost: 0.8 - name: "image_generation" provider: "stability" model: "stable-diffusion-xl-1024-v1-0" parameters: style_preset: "digital-art" steps: 30 - name: "assembly" provider: "ffmpeg" parameters: resolution: "1920x1080" fps: 30 background_music: "assets/background.mp3"

配置解读

  • 每个stage对应流水线的一个环节。
  • provider指定使用哪个后端服务,这需要与你在.env中配置的 API_KEY 对应。
  • parameters是传递给该 provider 的具体参数,不同 provider 参数差异很大。

4.2 如何选择与配置 Provider

这是最具灵活性的部分。你需要根据质量、成本、速度需求进行权衡。

  1. 文案生成(LLM Provider)

    • OpenAI GPT-4:质量高,成本也高,响应快。
    • Anthropic Claude:长文本和逻辑性强,适合深度解说。
    • 本地模型(如通过 Ollama):零成本,隐私好,但需要较强的本地 GPU 和调试能力。配置时,provider可能为ollamamodelllama3
    • 关键配置system_prompt(定义角色和风格)、max_tokens(控制长度)、temperature(控制创造性)。
  2. 语音合成(TTS Provider)

    • ElevenLabs:音质自然,情感丰富,是主流选择。需在官网选择喜欢的voice_id
    • Microsoft Azure TTS:性价比高,支持多种语言和方言。
    • Google Cloud TTS:类似 Azure。
    • 关键配置voice_id(音色)、stability(稳定性)、similarity_boost(相似度)。
  3. 图像生成(Image Provider)

    • Stability AI:开源模型代表,通过 DreamStudio API 调用,可控性强。
    • OpenAI DALL-E 3:对于遵循复杂提示词(Prompt)和生成文字方面表现更好。
    • Midjourney:通常没有官方 API,需通过非官方渠道,不稳定,不推荐生产环境使用。
    • 关键配置prompt(通常由上一阶段的脚本自动生成)、negative_prompt(不希望出现的内容)、steps(生成步数,影响质量与时间)。

4.3 自定义与扩展 Pipeline

如果你觉得默认的流水线不符合需求,可以修改或创建新的配置文件。

  1. 调整阶段顺序:例如,你可以先生成图片,再根据图片内容让 AI 撰写配套文案。
  2. 添加新阶段:比如添加一个“事实核查”阶段,在文案生成后调用另一个 AI 模型进行校验。
  3. 并行化处理:在配置中,可以将voice_synthesisimage_generation设置为并行执行,以缩短总耗时。

5. 实战:从零生成你的第一个 AI 视频

现在,让我们用一个完整的例子,跑通整个流程。假设我们要制作一个关于“量子计算简介”的 60 秒科普短视频。

5.1 准备输入与配置文件

首先,创建一个简单的输入文件input.json,定义视频的元数据:

{ "topic": "量子计算简介:为什么它比传统计算机更快?", "duration_target_seconds": 60, "target_audience": "对科技感兴趣的大学生和上班族", "style": "生动有趣,多用类比,避免复杂公式" }

接着,我们基于之前的示例,创建一个专用的配置文件config/quantum_pipeline.yaml

5.2 编写运行脚本

在项目根目录创建一个 Python 脚本run_generation.py

#!/usr/bin/env python3 # run_generation.py import os import yaml import json from openmontage.core.pipeline import PipelineExecutor # 假设的模块路径,请以实际项目为准 def main(): # 1. 加载配置 config_path = "config/quantum_pipeline.yaml" with open(config_path, 'r', encoding='utf-8') as f: pipeline_config = yaml.safe_load(f) # 2. 加载输入 input_path = "input.json" with open(input_path, 'r', encoding='utf-8') as f: user_input = json.load(f) # 3. 初始化执行器 # 注意:实际类名和初始化参数请参考项目文档 executor = PipelineExecutor(config=pipeline_config) # 4. 执行流水线 print("开始执行 AI 视频生成流水线...") try: # 假设 execute 方法接收输入字典并返回结果对象 result = executor.execute(input_data=user_input) # 5. 处理结果 if result.success: print(f"视频生成成功!") print(f"最终视频路径: {result.final_video_path}") print(f"脚本文件: {result.script_path}") print(f"所有中间资产保存在: {result.assets_dir}") # 可以在这里添加自动播放或移动文件的逻辑 # import subprocess # subprocess.run(['open', result.final_video_path]) # macOS # subprocess.run(['xdg-open', result.final_video_path]) # Linux else: print(f"视频生成失败: {result.error_message}") # 可以查看更详细的日志 if hasattr(result, 'stage_errors'): for stage, error in result.stage_errors.items(): print(f" 阶段 '{stage}' 错误: {error}") except Exception as e: print(f"执行过程中发生未预期错误: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()

5.3 执行与监控

在终端运行你的脚本:

# 确保虚拟环境已激活 python run_generation.py

执行过程可能会持续几分钟到几十分钟,具体取决于视频长度、使用的 AI 模型和网络状况。控制台会输出类似以下的信息:

开始执行 AI 视频生成流水线... [INFO] 阶段 ‘script_generation’ 开始... [INFO] 调用 OpenAI API 完成,耗时 3.2s。 [INFO] 阶段 ‘voice_synthesis’ 开始... [INFO] 下载 ElevenLabs 音频完成,耗时 15.1s。 [INFO] 阶段 ‘image_generation’ 开始 (并行任务: 4个)... [INFO] 图像生成进度: 1/4... [INFO] 阶段 ‘assembly’ 开始... [INFO] 使用 FFmpeg 合成视频... 视频生成成功! 最终视频路径: ./output/quantum_computing_intro_20240527_142356.mp4

5.4 结果验证

运行结束后,检查output目录(或配置中指定的输出目录):

output/ ├── quantum_computing_intro_20240527_142356.mp4 # 最终视频 ├── script.json # 结构化脚本 ├── voice.mp3 # 合成语音 ├── image_1.png # 为第一段文案生成的图 ├── image_2.png ├── subtitles.srt # 字幕文件 └── timeline.json # 内部时间线数据

播放最终视频,检查:

  1. 音画同步:语音和画面切换是否匹配?
  2. 内容连贯性:AI 生成的脚本逻辑是否通顺?图片是否贴合文案?
  3. 质量:语音是否自然?图片是否清晰?字幕有无错别字?

6. 常见问题与深度排查指南

在实际使用中,你几乎一定会遇到问题。以下是按问题模块整理的排查思路。

问题现象可能原因排查步骤解决方案
启动失败,报错ModuleNotFoundError1. 依赖未正确安装。
2. 虚拟环境未激活。
3. Python 路径问题。
1. 运行pip list查看关键包(如openmontage,openai,elevenlabs)是否存在。
2. 确认终端提示符前有(venv)字样。
3. 使用which pythonwhere python确认 Python 解释器位置。
1. 重新运行pip install -r requirements.txt
2. 激活虚拟环境。
3. 在 IDE 中正确配置解释器。
API 调用失败,报错401Invalid API Key1. API Key 未设置或错误。
2. 环境变量未加载。
3. 服务商账户欠费或禁用。
1. 检查.env文件中的 KEY 是否正确,前后有无空格。
2. 在 Python 中打印os.getenv(‘OPENAI_API_KEY’)前几位(勿打印完整)确认是否加载。
3. 登录对应服务商控制台检查额度和状态。
1. 修正.env文件。
2. 重启终端或 IDE 以重新加载环境变量。
3. 充值或启用账户。
FFmpeg 相关错误1. FFmpeg 未安装。
2. FFmpeg 不在系统 PATH。
3. 编码器不支持。
1. 在终端运行ffmpeg -version
2. 检查 OpenMontage 配置中 FFmpeg 的路径设置。
3. 查看完整错误日志,确认是哪个编码步骤出错。
1. 根据系统安装 FFmpeg。
2. 将 FFmpeg 可执行文件目录添加到系统 PATH。
3. 在配置中尝试更换视频编码器(如从libx264换为h264_videotoolboxon macOS)。
生成的视频没有声音/黑屏1. TTS 阶段失败,未生成音频。
2. 图片生成阶段全部失败。
3. 合成阶段输入文件路径错误。
1. 检查output/目录下是否有voice.mp3文件。
2. 检查是否有任何image_*.png文件。
3. 查看timeline.json,检查其中引用的素材文件路径是否存在。
1. 单独测试 TTS Provider 的 API。
2. 检查图片生成 Provider 的 API Key 和网络。
3. 确认 OpenMontage 的工作目录和文件路径解析逻辑。
视频内容质量差(文案无聊、图片不相关)1. 提示词(Prompt)不够精确。
2. 使用的 AI 模型能力不足。
3. 各阶段间信息传递丢失。
1. 查看script.json,分析 AI 生成的原始脚本。
2. 查看图片生成阶段使用的具体提示词(通常在日志或中间文件里)。
3. 检查流水线配置,是否将脚本的关键信息传递给了图像生成阶段。
1. 优化system_prompt和用户输入topic,使其更具体、更具引导性。
2. 升级模型(如从gpt-3.5-turbogpt-4)。
3. 修改流水线逻辑,例如从脚本中提取关键词再生成图片。
生成过程非常缓慢1. 图片生成是串行的。
2. 网络延迟高。
3. 使用了高精度、慢速的模型参数。
1. 观察日志,看是否在等待一张图片生成完才生成下一张。
2. 测试直接调用 API 的响应速度。
3. 检查配置中steps(对于 SD)、quality(对于 TTS)等参数。
1. 修改配置,将可并行的阶段(如图片生成)设置为异步并行。
2. 考虑使用代理或更换服务器地域。
3. 降低生成参数以换取速度(如steps: 20)。

7. 最佳实践与进阶应用

当你成功运行基础流程后,以下实践能帮助你提升视频质量、可靠性和效率。

7.1 提示词工程是质量核心

OpenMontage 的产出质量 80% 取决于你给 AI 的“指令”。

  • 为每个 Stage 精心设计 System Prompt:不要只用默认提示词。例如,为“文案生成”阶段设计角色:“你是一位拥有百万粉丝的科普视频博主,擅长用比喻和故事讲解前沿科技,语言节奏明快,每段文案控制在 80 字以内,便于搭配画面。”
  • 提供示例(Few-Shot):在配置或输入中,可以提供一两个优秀的脚本样例,让 AI 模仿其结构和风格。
  • 迭代优化:将第一次生成的script.json拿出来,手动修改不满意的地方,然后将修改后的脚本作为“金标准”反馈给 AI,调整提示词,进行第二轮生成。

7.2 引入人工审核与编辑节点

全自动化在初期往往不完美。一个稳健的生产流程应包含“人机回环”。

  • 在关键阶段后插入“人工审核”:例如,在script_generation之后,让脚本暂停,等待人工确认或修改后,再继续后续的 TTS 和绘图。这可以通过修改流水线逻辑,在特定阶段将结果输出到文件并等待一个外部信号(如某个文件被更新)来实现。
  • 使用中间产物进行手动微调:你可以用专业工具(如 Premiere, DaVinci Resolve)导入timeline.json或素材,进行精细的剪辑、调色、音效添加,再将 OpenMontage 作为强大的“初稿生成器”。

7.3 成本与性能优化

  • 缓存策略:对于相同的脚本段落或图片提示词,其生成结果可以缓存起来,避免重复调用 API 产生费用。可以自行实现一个基于文件哈希的简单缓存层。
  • 降级方案:在配置中设置主备 Provider。例如,主要使用 ElevenLabs 生成语音,当其失败或额度用尽时,自动降级到免费的 Edge TTS。
  • 本地模型替代:对于成本敏感或隐私要求高的场景,逐步将部分环节替换为本地模型。例如,使用 Ollama 运行 Llama 3 生成文案,使用 Stable Diffusion WebUI 的 API 生成图片。这能极大降低长期成本。

7.4 扩展与集成

OpenMontage 的开源特性允许你将其集成到更大的系统中。

  • 作为服务:你可以将 OpenMontage 包装成一个 REST API 服务(使用 FastAPI 或 Flask),供其他系统(如内容管理平台、教育系统)调用。
  • 触发自动化:结合 GitHub Actions、Airflow 或 Cron 作业,定期自动生成特定主题的视频,并发布到社交媒体。
  • 自定义 Provider:如果项目支持的 Provider 不满足需求,你可以参照现有代码,实现自己的 Provider 类,接入任何具有 API 的服务。

8. 总结:OpenMontage 的定位与未来

经过以上的拆解和实践,我们可以更清晰地定位 OpenMontage:

它是什么:一个开源的、可编程的“AI 视频制作流水线”框架。它通过标准化接口,将分散的 AI 服务组合成一个连贯的自动化工作流。

它解决了什么问题:主要解决了多工具协作的复杂度和手动操作的成本问题,让开发者能通过代码定义和生成视频内容。

它的局限性

  1. 质量天花板受限于底层 AI 模型:如果 GPT-4 写的文案平淡,Stable Diffusion 画的图扭曲,OpenMontage 无法魔法般地提升它们。
  2. 创意控制是间接的:你通过提示词和参数“引导”AI,而非直接控制每一帧。对于需要精确视觉表达的场景,目前仍不如专业剪辑。
  3. 并非零代码:虽然它简化了流程,但配置、调试、扩展仍需一定的开发和运维能力。

谁最适合使用它

  • 个人开发者/技术爱好者:想要快速制作技术演示、个人博客配图视频、自动化内容创作。
  • 中小型内容团队:需要批量生成格式固定的短视频(如产品功能介绍、新闻快讯、社交媒体内容),作为素材基础。
  • 教育科技公司:用于快速将文本课程转化为视频课程。
  • AI 应用开发者:将其作为视频生成能力模块,集成到自己的产品中。

给你的建议:不要期望它一步到位产出完美无缺的成品。而是将其视为一个“超级初稿工具”“视频原型生成器”。用它快速验证创意、生成基础素材,再结合人工的审美和判断进行优化和调整,这才是人机协作的高效模式。

OpenMontage 代表了 AIGC 应用开发的一个趋势:从追求“单个模型更强”到追求“多个模型协同工作更智能”。作为开发者,理解并掌握这类编排框架,意味着你掌握了利用现有 AI 能力构建复杂应用的关键技能。从配置一个流水线开始,逐步尝试修改、扩展、集成,你不仅能做出有趣的视频,更能深入理解 AI 时代软件自动化的工作范式。

http://www.jsqmd.com/news/1100754/

相关文章:

  • 青蓝送水商城小程序开发(快速上线)
  • 告别PI,试试MPTC:用Simulink手把手搭建永磁同步电机单矢量预测转矩控制模型
  • 蓝桥杯嵌入式备赛:用状态机思路搞定多屏切换,告别if-else地狱
  • 版本控制的重要性:为什么要用Git?
  • 多Agent协作系统:从单Agent到Agent Swarm
  • GoldHEN Cheats Manager技术评测:重新定义PS4游戏修改体验的开源解决方案
  • POD卖家实测:一张马克杯商品图,3秒提取高清印花(附完整操作)
  • iPhone拍视频也能做NeRF?手把手教你用COLMAP和LLFF脚本搞定数据集制作
  • 从按键消抖到中断响应:用STM32CubeMx和HAL库实现一个稳定可靠的按键检测模块
  • ComfyUI-KJNodes:让AI图像生成工作流像搭积木一样简单
  • 终极PS4游戏修改指南:GoldHEN Cheats Manager完全免费使用教程
  • KS-Downloader:轻松获取快手无水印视频与图片的智能工具
  • openbmc新手编译_网页生成_修改代码
  • 别再让LLM乱输出了!用LM-Format-Enforcer+Llama.cpp精准控制JSON格式(附完整代码)
  • 基于FFmpeg与Python的自动化音视频处理技术实践
  • AI重构全栈开发:基于Codex与Spec Coding的实战指南
  • XSS绕过核心技术:从基础过滤到WAF对抗的实战指南
  • 深入解析Iframe钓鱼攻击:原理、防御与实战安全编码
  • 嵌入式图像转换终极指南:LCD Image Converter核心引擎深度解析
  • R语言ggrcs包3.5版保姆级教程:从Cox回归到逻辑回归,一张图搞定非线性关系与阈值效应
  • 告别真机调试!用unidbg在Windows/Mac上模拟执行Android so文件(保姆级教程)
  • 别再只会用H5跳转了!Android Scheme协议从配置到实战避坑全解析
  • 文件加密软件有哪些?强烈推荐六个文件加密软件,建议码住试试
  • GoldHEN Cheats Manager:PS4游戏修改的终极解决方案
  • Sails.js性能测试实战:Artillery与k6工具选型及瓶颈定位
  • Python的__get__描述符的__set_name__参数的用途
  • 多模态AI如何革新GUI自动化测试:从原理到实践
  • 用西门子S7-200 PLC给立体仓库做个‘大脑’:从硬件选型到梯形图编程全流程拆解
  • LLM 是如何学会调用外部工具的?
  • 【Claude Code】----Claude Code 全套高效开发实战技巧|16个实战高效技巧,程序员必看AI编程提效干货