
你寫完一篇技術文章最終想讓讀者能做什么答案是讓讀者把“配圖”這個經常被當作靈感的活兒壓縮成一條可重復執(zhí)行的個人工作流。人工找圖、裁剪、統(tǒng)一風格很費時間而大模型配合工具調用能夠把“閱讀理解文章結構 → 生成配圖計劃 → 調用工具取圖 → 校驗圖片 → 插入Markdown”這一套動作自動化。這篇文章就以“第5集-Agent自動配圖”為切入點講清楚Agent做自動配圖的核心機制、完整代碼實現、運行驗證和最容易踩的坑。關于Agent自動配圖我的核心判斷是它真正的價值不是“生成一張好看的圖”而是“把配圖決策流程穩(wěn)定地復制下來”。傳統(tǒng)腳本只能按規(guī)則硬匹配規(guī)則越多越脆弱Agent方案則把“規(guī)劃”交給大模型把“執(zhí)行”交給工具把“兜底”交給代碼校驗。所以它適合內容平臺批量創(chuàng)作、知識庫富文本化、PPT/課程配圖等場景而不適合需要極度精確、品牌一致性要求極高的商業(yè)設計。文章會從問題出發(fā)解釋Agent自動配圖的基本概念再做方案選型然后給出一套可直接運行的Python示例覆蓋環(huán)境準備、核心代碼、運行驗證、常見問題排查和工程建議。讀完你能自己搭一套“標題/文章 → Markdown配圖文稿”的自動化管線也明白后續(xù)往Multi-Agent、記憶、Skills方向擴展時該怎么下手。1. 這篇文章真正要解決的問題先聊一個非常實際的場景。很多做技術博客、公眾號排版、課程PPT的人每個星期都要處理大量配圖需求一篇3000字的文章可能需要4到6張配圖每一張都要符合段落語義、風格統(tǒng)一、版權安全。傳統(tǒng)做法是打開圖庫網站反復搜索、篩選、下載再手動改尺寸、重命名、上傳圖床最后回到Markdown編輯器里一張張插入。這個過程非常反鎖尤其當你有幾十篇文章待發(fā)布時它消耗的時間和注意力遠超你的預期。更麻煩的是配圖本身帶有判斷邏輯第一張圖應該強調核心概念中間章節(jié)需要展示流程或對比結尾通常是總結性視覺。這些判斷聽起來簡單但不同人執(zhí)行結果會差很多。而“判斷執(zhí)行”的組合恰恰是Agent擅長的事情。Agent自動配圖簡單來說就是讓大語言模型扮演“圖片編輯規(guī)劃師”先讀文章再決定每段配什么圖、用什么風格、從哪里取圖然后把取圖和生成圖的操作交給可執(zhí)行的工具函數。整個流程從“人工找圖手工插入”變成“輸入文章 → 輸出帶配圖的Markdown”執(zhí)行速度和一致性都大幅提升。這篇文章適合三類讀者需要批量生產內容的技術作者希望減少排版環(huán)節(jié)的重復勞動。正在學習Agent開發(fā)想找一個完整可落地案例的新手。已經在用LangChain或其他Agent框架但不知道如何把“工具調用”和“內容創(chuàng)作”結合起來的開發(fā)者。如果你只是偶爾給一篇隨筆配圖用在線圖庫手動選也夠用。但如果你想從“靠感覺”變成“靠流程”或者想把這個能力沉淀成團隊工具那么Agent自動配圖值得認真搭一次。2. Agent自動配圖的核心概念與工作原理在深入代碼之前先建立幾個概念。這里講的Agent不是一個玄學概念它的本質可以拆成三層規(guī)劃層大模型接收輸入文本根據任務目標生成步驟序列。例如“文章分為5段需要在第2段后放一張對比圖在第4段后放一張架構圖”。工具層一組預定義好的函數比如search_image表示搜索圖庫generate_image表示調用圖像生成模型。Agent通過函數調用機制選擇并執(zhí)行這些函數。反饋層工具執(zhí)行后會返回結果Agent讀取結果決定繼續(xù)或終止。例如搜圖失敗時Agent可以改用生成圖的方式兜底。在自動配圖場景里Agent的輸入是一篇文章或一個標題輸出是“配圖計劃 圖片文件 插入位置”。它不是一個單獨的大模型調用而是多次調用、多次工具執(zhí)行、多次校驗的循環(huán)過程。關于Agent開發(fā)經常被混淆的一個點是“Agent框架和Skill到底怎么理解”。簡單說框架解決的是“Agent怎么規(guī)劃、怎么調用工具、怎么維護上下文”相當于骨架Skill則是把一組專門能力打包比如“圖片版權審核”是一個Skill“圖片風格統(tǒng)一”是另一個Skill。在你的項目早期不需要把Skill做得特別復雜先把工具調用跑通更重要。另一個常見誤區(qū)是“Agent就是提示詞模板”。提示詞模板只能按固定順序生成文本但真正的Agent需要能夠根據中間結果動態(tài)調整下一步。比如初始方案是搜圖搜不到時改為生成這個分支能力才是Agent和腳本的分水嶺。自動配圖Agent的典型執(zhí)行流程如下Agent讀取整篇Markdown文章。按段落拆分配圖點生成配圖計劃計劃中包含位置、主題、風格、比例。對計劃中的每一項優(yōu)先調用搜索工具從圖庫中取候選圖。如果取圖失敗或者用戶配置為“全部生成”則調用圖像生成工具。下載圖片到本地或圖床統(tǒng)一重命名。在原文中插入圖片引用生成新的Markdown文件。匯總報告列出每張圖的來源和可能存在的版權提示。從這一流程能看出自動配圖Agent不是“模型畫畫給你看”而是“模型做決策 工具做執(zhí)行 代碼做保障”。3. 方案選型自研腳本、LangChain Agent還是自建Agent實現自動配圖眼前有三條路線需要先做一個明確選型。3.1 傳統(tǒng)規(guī)則腳本思路是人工定義關鍵詞詞庫例如出現“數據庫”就配數據庫圖片出現“云原生”就配云原生圖片。優(yōu)點是沒有大模型成本執(zhí)行速度快缺點是詞庫維護成本高遇到語義復雜的長文時匹配質量很差。比如文章寫“我用三天把數據從A遷移到B”規(guī)則腳本可能抓不到“遷移”這個核心意圖更不用說判斷配一張流程圖還是配一張插圖。3.2 LangChain / AutoGen 等Agent框架使用現成框架的好處是內置了ReAct循環(huán)、工具注冊、調用鏈、記憶等能力寫起來代碼精簡。比如LangChain的initialize_agent配合Tool類就能把search_image和generate_image掛到Agent上。但框架也存在學習成本和黑盒問題。對自動配圖這個任務來說流程本身不算復雜框架沒有帶來決定性的優(yōu)勢。如果你已經在項目里使用了某款Agent框架當然可以基于它擴展如果只是為了自動配圖這一個功能引入整個框架有些重。3.3 自建輕量Agent第三條路線是自己寫一個輕量Agent類核心只有幾十行代碼。它的優(yōu)勢是完全可控你可以精確控制規(guī)劃內容的JSON格式、工具函數返回的數據結構、失敗重試邏輯。這條路線也最便于理解Agent開發(fā)的核心原理后續(xù)遷移到框架時心里有底。我推薦第三種方案。原因有兩點配圖任務的工具數量較少一般兩個到五個足夠任務邊界清晰容錯要求高自己寫能夠做到逐級兜底。這篇文章的完整示例也基于自建輕量Agent展開。3.4 取圖方式對比取圖又有兩種底層來源選型時需要考慮清楚維度圖庫搜索圖像生成版權風險需要篩選授權圖片風險由圖庫決定模型生成仍需注意內容合規(guī)成本通常是搜索API配額或圖庫訂閱費按張計費成本較高風格一致性不同圖片差異大需要后期處理通過提示詞條件統(tǒng)一風格適圖場景技術配圖、實拍圖、新聞插圖插畫、概念圖、找不到合適素材時穩(wěn)定程度搜索結果受圖庫標簽質量影響受模型能力和提示詞影響實際項目里最穩(wěn)妥的是混合策略優(yōu)先搜索搜索不到或語義不適配時再生成。代碼上也可以通過配置項切換策略。4. 環(huán)境準備與前置條件這一節(jié)開始進入實操。以下環(huán)境是本文示例的推薦配置版本請以實際項目為準我重點演示的是通用思路。4.1 基礎運行環(huán)境操作系統(tǒng)Windows 10/11、macOS、Linux均可本文按macOS/Linux的bash命令演示Windows可在Git Bash中執(zhí)行。Python版本需要3.10及以上主要為了使用類型注解和新版標準庫。包管理推薦使用venv或conda創(chuàng)建獨立虛擬環(huán)境。大模型API需要一個支持文本生成并返回結構化JSON的模型接口本文示例使用OpenAI兼容接口的通用寫法你可以替換為其他合規(guī)可用的模型服務。圖像生成或搜索API生成圖可以使用圖像生成模型接口搜索圖可以使用合規(guī)圖庫API。沒有API時也可以用本地圖片目錄模擬先跑通流程。4.2 創(chuàng)建項目目錄建議目錄結構如下agent-autopicture/ ├── main.py # 程序入口 ├── agent.py # 輕量Agent核心邏輯 ├── tools.py # 工具函數搜圖、生成圖、下載 ├── config.py # 配置項 ├── input/ │ └── article.md # 待配圖的文章 ├── output/ │ ├── images/ # 本地圖片 │ └── article_with_images.md # 配圖后的文章 └── requirements.txt # 依賴先在命令行執(zhí)行mkdir -p agent-autopicture/{input,output/images} cd agent-autopicture python3 -m venv venv source venv/bin/activate4.3 安裝依賴requirements.txt內容如下openai1.30.0 requests2.31.0 markdown3.5.0然后安裝pip install -r requirements.txt需要說明的是openai庫在這里只用于調用兼容OpenAI格式的模型服務如果你使用其他服務商請按對應SDK文檔調整。關鍵設計是我們把模型調用封裝在同一個函數里后面替換模型服務時只需要改這一個地方。4.4 配置密鑰不建議把密鑰硬編碼在代碼里。在項目根目錄創(chuàng)建.env文件把API_KEY寫入其中。示例中我們直接用環(huán)境變量讀取更穩(wěn)妥的做法是配合python-dotenv使用。這里先演示環(huán)境變量方式export AGENT_API_KEY你的模型服務密鑰 export AGENT_API_BASE模型服務地址 export AGENT_MODEL模型名稱如果你在Windows PowerShell里運行可以使用$env:AGENT_API_KEY你的模型服務密鑰 $env:AGENT_API_BASE模型服務地址 $env:AGENT_MODEL模型名稱配置密鑰的核心原則是最小權限、不進版本庫、區(qū)分環(huán)境。尤其是團隊協作時不要為了省事把密鑰寫進代碼提交到Git倉庫。5. Agent自動配圖完整示例與代碼實現下面進入正文最核心的部分。這一節(jié)會給出一個可以運行的輕量Agent示例代碼量不大但把“規(guī)劃 - 工具調用 - 校驗 - 兜底”這一個完整鏈路跑通。5.1 配置文件 config.py配置文件負責集中管理模型參數、圖片策略、輸出目錄。它便于你在一處修改行為而不是在代碼中到處找。# 文件路徑agent-autopicture/config.py import os # 模型配置 MODEL_API_KEY os.getenv(AGENT_API_KEY, ) MODEL_API_BASE os.getenv(AGENT_API_BASE, ) MODEL_NAME os.getenv(AGENT_MODEL, gpt-4o-mini) # 配圖策略: search / generate / mixed IMAGE_STRATEGY os.getenv(IMAGE_STRATEGY, mixed) # 輸出結果 OUTPUT_IMAGE_DIR output/images OUTPUT_MARKDOWN_PATH output/article_with_images.md # 默認每篇文章最多配圖數量 MAX_IMAGE_COUNT 6 # 圖片比例可取值 square / wide / tall IMAGE_RATIO square這段代碼把模型接口、策略和輸出位置都提出來了。IMAGE_STRATEGY建議先設為mixed這樣在搜圖失敗時還能走生成圖兜底。MAX_IMAGE_COUNT是安全邊界防止模型在長文中生成過多配圖導致成本不可控。5.2 工具函數 tools.py工具函數是Agent執(zhí)行層的關鍵。以搜索圖庫和生成圖片為例下面代碼演示通用接口寫法不綁定具體廠商。你可以把它替換成自己的圖庫API或圖像生成服務。# 文件路徑agent-autopicture/tools.py import os import uuid import requests from pathlib import Path OUTPUT_IMAGE_DIR Path(output/images) def _download_image(url: str, save_dir: Path) - str: 下載圖片到本地并返回本地路徑 save_dir.mkdir(parentsTrue, exist_okTrue) suffix .jpg # 根據URL后綴判斷文件類型無法判斷時默認jpg if .png in url.lower(): suffix .png filename f{uuid.uuid4().hex}{suffix} local_path save_dir / filename resp requests.get(url, timeout20) resp.raise_for_status() local_path.write_bytes(resp.content) return str(local_path) def search_image(query: str, ratio: str square) - dict: 工具1在圖庫中搜索圖片返回候選圖片本地路徑或URL # 這里以合規(guī)圖庫API為例請?zhí)鎿Q為實際可用的圖庫服務 # 如果未配置圖庫API則主動拋出讓Agent走生成策略 api_key os.getenv(IMAGE_LIBRARY_KEY, ) if not api_key: return {success: False, reason: 未配置圖庫API密鑰請使用生成策略或補充密鑰} # 示例請求實際參數以圖庫文檔為準 search_url https://example-image-library.com/api/search params { query: query, orientation: landscape if ratio wide else square, per_page: 3, access_key: api_key, } resp requests.get(search_url, paramsparams, timeout20) if resp.status_code ! 200: return {success: False, reason: f圖庫請求失敗, code{resp.status_code}} items resp.json().get(results, []) if not items: return {success: False, reason: 沒有找到匹配圖片} first items[0] return {success: True, path: _download_image(first[url], OUTPUT_IMAGE_DIR)} def generate_image(prompt: str, ratio: str square) - dict: 工具2調用圖像生成模型生成圖片 # 這里使用OpenAI兼容接口的通用寫法具體參數以服務商文檔為準 from openai import OpenAI client OpenAI( api_keyos.getenv(AGENT_API_KEY, ), base_urlos.getenv(AGENT_API_BASE, None), ) try: response client.images.generate( modelos.getenv(IMAGE_GEN_MODEL, dall-e-3), promptprompt, size1024x1024 if ratio square else 1792x1024, n1, ) image_url response.data[0].url return {success: True, path: _download_image(image_url, OUTPUT_IMAGE_DIR)} except Exception as e: return {success: False, reason: f圖像生成失敗: {e}}這段代碼有兩個關鍵點。第一search_image如果發(fā)現沒有配置圖庫密鑰會返回失敗原因而不是強行走錯誤分支第二generate_image在生成失敗時會把異常信息打包返回給Agent。這種“失敗也要有結構化信息”的習慣是Agent工具設計里很重要的一環(huán)。Agent只有拿到清晰的失敗原因才能決定是換關鍵詞搜索還是切換到生成策略。5.3 輕量Agent核心 agent.py接下來是Agent本體。它要做三件事調用模型生成配圖計劃、解析計劃、按計劃執(zhí)行工具。這里不依賴復雜框架核心是把模型輸出格式固定成JSON數組。# 文件路徑agent-autopicture/agent.py import json import re from openai import OpenAI from tools import search_image, generate_image from config import ( MODEL_API_KEY, MODEL_API_BASE, MODEL_NAME, IMAGE_STRATEGY, MAX_IMAGE_COUNT, IMAGE_RATIO, ) class AgentAutoPicture: 輕量自動配圖Agent def __init__(self, api_key: str, api_base: str, model: str): self.client OpenAI(api_keyapi_key, base_urlapi_base or None) self.model model def _parse_plan(self, content: str) - list: 從模型輸出中解析JSON配圖計劃 # 有些模型會在代碼塊中返回JSON先嘗試提取 match re.search(r\[.*\], content, re.S) if not match: raise ValueError(模型輸出中沒有找到JSON配圖計劃) plan_text match.group(0) plan json.loads(plan_text) if not isinstance(plan, list): raise ValueError(配圖計劃必須是JSON數組) return plan def make_plan(self, article_text: str) - list: 第一步讓模型生成配圖計劃 prompt f 你是一個內容配圖規(guī)劃師。請閱讀下面這篇文章規(guī)劃不超過{MAX_IMAGE_COUNT}張配圖。 輸入文章 {article_text[:8000]} 輸出要求 1. 返回JSON數組每個元素包含四個字段position、topic、query、description。 2. position表示插在文章第幾段之后從1開始。 3. topic表示這張圖的主題關鍵詞。 4. query表示用于搜索圖庫的英文檢索詞。 5. description表示如果搜索不到用于生成圖片的完整提示詞要寫明畫面內容、構圖和風格。 6. 只輸出JSON不要輸出解釋或其他內容。 resp self.client.chat.completions.create( modelself.model, messages[ {role: system, content: 你是配圖計劃生成專家只返回JSON。}, {role: user, content: prompt}, ], temperature0.3, ) raw resp.choices[0].message.content return self._parse_plan(raw) def _execute_one(self, item: dict) - dict: 第二步執(zhí)行單條配圖任務支持mixed策略兜底 strategy IMAGE_STRATEGY if strategy in (search, mixed): result search_image(item[query], IMAGE_RATIO) if result[success]: return {**item, status: search_ok, image: result[path]} if strategy search: return {**item, status: search_failed, reason: result.get(reason)} if strategy in (generate, mixed): prompt item.get(description, item.get(topic, 配圖)) result generate_image(prompt, IMAGE_RATIO) if result[success]: return {**item, status: generate_ok, image: result[path]} return {**item, status: generate_failed, reason: result.get(reason)} return {**item, status: failed, reason: 未知策略} def run(self, article_text: str) - list: 完整執(zhí)行規(guī)劃 配圖 plan self.make_plan(article_text) results [] for item in plan: results.append(self._execute_one(item)) return results這個輕量Agent的巧妙之處在于它把模型規(guī)劃結果當作“中間數據”而不是最終答案。make_plan只負責產出JSON計劃_execute_one則負責工具調度。即使模型輸出里的query搜索不到圖也還有description可以走生成鏈路這就是Agent相對普通腳本的核心優(yōu)勢它可以基于失敗結果調整行為。5.4 圖片插入與主程序 main.pyAgent返回的結果是一個包含圖片路徑和插入位置的列表。我們需要把它們寫回Markdown文章。這里做的是最直接的插入方式在指定段落后插入。# 文件路徑agent-autopicture/main.py import sys from pathlib import Path from agent import AgentAutoPicture from config import MODEL_API_KEY, MODEL_API_BASE, MODEL_NAME, OUTPUT_MARKDOWN_PATH INPUT_PATH Path(input/article.md) def read_article(path: Path) - str: return path.read_text(encodingutf-8) def split_markdown_paragraphs(text: str) - list: 按空行拆分成段落保持原有Markdown結構 return text.strip().split(\n\n) def insert_images(article_text: str, results: list) - str: 把圖片插入到對應段落后面 paragraphs split_markdown_paragraphs(article_text) # 按position降序插入避免后面插入影響前面索引 for item in sorted(results, keylambda x: x.get(position, 1), reverseTrue): if item.get(status) not in (search_ok, generate_ok): continue pos int(item.get(position, 1)) if 0 pos len(paragraphs): image_line f\n\n paragraphs.insert(pos 1, image_line) return \n\n.join(paragraphs) def main(): if not MODEL_API_KEY: print(請先設置 AGENT_API_KEY 環(huán)境變量) sys.exit(1) article_text read_article(INPUT_PATH) agent AgentAutoPicture(api_keyMODEL_API_KEY, api_baseMODEL_API_BASE, modelMODEL_NAME) results agent.run(article_text) new_article insert_images(article_text, results) out_path Path(OUTPUT_MARKDOWN_PATH) out_path.parent.mkdir(parentsTrue, exist_okTrue) out_path.write_text(new_article, encodingutf-8) print(配圖完成輸出文件, out_path) for item in results: print(item.get(position), item.get(status), item.get(image, item.get(reason))) if __name__ __main__: main()這里有一個容易踩的坑在列表中間不斷插入內容時如果按原始段落索引從前向后插入后面的插入位置會因為前面新增內容而錯位。解決方法是先按position降序排序從后往前插入這樣前面插入的圖片不會影響后面已經計算好的位置。這是處理Markdown或HTML內容動態(tài)插入時很實用的技巧。5.5 運行命令與預期結果準備一篇待配圖的文章。例如input/article.md內容可以是一段技術分享包含“背景、方案、實現、總結”幾個Parts。然后運行python main.py程序會依次執(zhí)行“生成配圖計劃”和“搜索/生成圖片”。預期輸出類似配圖完成輸出文件 output/article_with_images.md 2 search_ok output/images/xxx.jpg 5 generate_ok output/images/xxx.png 7 search_failed 圖庫沒有找到匹配圖片看到配圖完成說明主流程跑通了。打開output/article_with_images.md應該能看到在指定段落后出現圖片引用。注意某些圖片下載后可能是無效文件所以要靠下一步的校驗來兜底。6. 運行結果與效果驗證跑通流程只是第一步驗證輸出質量才是真正體現工程能力的地方。這一節(jié)提供一套簡單有效的驗證方案分為文件級驗證、圖片級驗證和內容級驗證。6.1 文件級驗證檢查圖片文件是否存在且非空ls -lh output/images/如果看到多個.jpg或.png文件且大小不為0說明下載或生成成功。如果文件大小只有幾KB并且打不開大概率是圖庫返回了錯誤占位圖或圖片下載不完整。6.2 Markdown鏈接驗證使用Python腳本檢查圖片引用是否與實際文件對應# 文件路徑agent-autopicture/validate.py import re from pathlib import Path md_path Path(output/article_with_images.md) text md_path.read_text(encodingutf-8) image_refs re.findall(r!\[.*?\]\((.*?)\), text) for ref in image_refs: img_path Path(ref) if not img_path.exists(): print(f缺失圖片: {ref}) else: print(fOK: {ref} - {img_path.stat().st_size} bytes)這個腳本的好處是能在輸出團隊交付前提前發(fā)現斷鏈問題。特別是當圖片來自臨時下載目錄、遠程URL或圖床時斷鏈非常容易被忽略。6.3 內容級驗證檢查配圖位置是不是和段意思搭配合理。這一步無法完全自動化但可以做一個低成本的“采樣檢查”隨機抽3張配圖先看圖片和段落主題的相關性再看整體風格是否統(tǒng)一。如果走的是搜索策略圖片風格不一致屬于正常現象如果走的是生成策略模型輸出風格受提示詞影響可以在description里統(tǒng)一加入“扁平插畫風格簡潔背景”這類限定詞。運行失敗的排錯思路從下往上先看是否有API錯誤再看規(guī)劃JSON是否被正確解析再看工具調用返回的失敗原因最后看圖片文件是否存在。在代碼里每一環(huán)都有結構化狀態(tài)值使用search_ok、generate_ok、search_failed這樣的狀態(tài)碼能節(jié)省大量定位時間。7. 常見問題與排查思路自動配圖Agent在真實環(huán)境中會遇到各種問題。下面表格列出最常見的幾類以及對應的排查方式。問題現象可能原因排查方式解決方案啟動后提示API密鑰無效密鑰未設置或設置錯誤檢查環(huán)境變量是否生效打印密鑰前幾位和后幾位重新設置密鑰確認密鑰所屬服務與base地址一致模型返回的不是JSON提示詞約束不足或模型版本較弱打印原始輸出看是文本解釋還是被截斷增強提示詞要求“只返回JSON”或使用JSON Mode配圖計劃數量超出預期提示詞沒嚴格限制條數檢查生成的計劃列表長度在代碼里截斷為MAX_IMAGE_COUNT并優(yōu)化提示詞圖片下載為空文件圖庫返回了占位圖或下載超時檢查文件大小用瀏覽器打開URL測試下載前校驗Content-Type和Content-Length增加超時重試生成圖接口報余額不足圖像生成模型費用高于預期查看服務商賬單和限額改用mixed策略能搜圖就不生成設置每日消耗上限插入位置錯亂列表插入時索引變化檢查position字段和段落數量使用降序插入邏輯從后往前插入圖片風格不統(tǒng)一搜索圖庫來自不同來源檢查候選圖縮略圖在query后追加風格詞或全量切換為生成策略長文截斷導致計劃不完整文章超過模型上下文長度檢查文章長度和日志截斷點分段摘要再規(guī)劃或只對前8000字符做規(guī)劃這里想重點提醒“圖片版權”問題。圖庫搜索得到的結果不一定都允許商用生成模型合成圖片也存在內容合規(guī)風險。在生產環(huán)境中工具層應該加入一個check_license步驟從圖庫返回結果中讀取授權信息把未明示授權的候選圖過濾掉。不要為了流程自動化把版權審核也自動省略了。8. 最佳實踐與工程建議當自動配圖Agent從“能跑”到“好用”需要補上很多工程細節(jié)。我按實際項目中最重要的幾條來總結。8.1 提示詞與JSON結構分離規(guī)劃階段使用的提示詞要盡可能描述清楚輸出JSON的結構甚至在提示詞中附上一個小示例。更好的做法是在系統(tǒng)提示詞中聲明“只輸出合法JSON”同時在用戶提示詞中再給一個結構示例。對于需要頻繁調整的業(yè)務可以把提示詞抽成單獨的文件避免為了改一行字重新部署代碼。8.2 圖片文件管理必須有規(guī)范和緩存每次運行都重新下載圖片會造成大量重復文件。生產實踐是建立以“文章ID 內容哈?!睘槟夸浀膱D片存儲結構例如output/ └── article_1234/ ├── images/ │ ├── plan.json │ └── key_image_001.png └── article_with_images.md這樣同一篇文章重復配圖時如果內容哈希沒變可以直接復用已有結果既節(jié)省API費用也避免生成多份不一致的圖片。8.3 成本控制是自動化的生命線自動配圖的成本大頭來自大模型調用和圖像生成。設計上至少要加三個控制點單篇文章最大配圖數量、每日總調用次數、圖像生成失敗自動降級為搜索。還應該在config.py中設置每日預算當超出時直接停止新任務。8.4 Agent記憶與Skills擴展方向當任務從一個Agent擴展到多個Agent時可以引入Agent記憶。例如保存“某個領域文章的配圖風格偏好”下次同類任務直接讀取減少重復規(guī)劃。Skills則是把“版權審核”“圖片壓縮”“風格遷移”拆成獨立能力模塊。這些擴展不等于要在第一天全做但代碼設計上要給接口留擴展位。比如讓_execute_one支持注冊新的工具函數而不是把所有邏輯都寫在同一個if分支里。8.5 安全邊界與內容合規(guī)自動配圖涉及外部圖片下載和生成存在內容安全風險。建議在工具鏈中增加圖片審核步驟尤其是涉及人物、品牌、地圖等敏感類別時先用視覺模型打標命中敏感類別則丟棄候選圖。生成圖像提示詞也應該有一個負面過濾列表防止出現不合規(guī)內容。從工程角度說自動配圖腳本運行的賬號權限應按最小權限配置不隨便下載未知來源文件并執(zhí)行。8.6 日志與可觀測性給Agent運行加上結構化日志而不是只打印一行“配圖完成”。每次工具調用都應該記錄調用時間、輸入參數、返回狀態(tài)、耗時、圖片大小。這些日志不只是為了排障更是為了后續(xù)復盤“哪一類文章適合搜索策略哪一類適合生成策略”。沒有日志Agent優(yōu)化就只能靠猜。9. 總結與后續(xù)學習方向這篇文章從“配圖如何自動化”切入講清楚了Agent自動配圖的原理、選型和落地鏈路。核心不是讓模型生成一張圖而是讓Agent能夠穩(wěn)定地完成從“讀文章”到“規(guī)劃配圖”再到“調用工具獲得圖片、插入文檔”的完整決策閉環(huán)。通過一個輕量Agent示例我們演示了JSON規(guī)劃、工具調用、降級策略、批量插入和結果校驗這套代碼可以直接改造成你自己的內容生產工具的一部分。如果你要繼續(xù)深入Agent開發(fā)下面幾個方向值得依次探索。第一個方向是工具能力擴展給Agent增加圖片壓縮、水印、風格統(tǒng)一、色彩分析等工具讓它在取到圖之后還能繼續(xù)后處理。第二個方向是Agent記憶保存歷史配圖偏好并在新任務中自動復用減少模型重復規(guī)劃帶來的不一致。第三個方向是Multi-Agent協作讓“內容理解Agent”“配圖規(guī)劃Agent”“圖片審核Agent”各自負責單一職責通過共享任務隊列協作這更接近團隊協作的模式。第四個方向是Skills沉淀把你常用的提示詞、工具函數、校驗規(guī)則打包成可復用的Skill后續(xù)接入LangChain或其他Agent框架時可以直接平移過去。動手時有個建議先用最小示例跑通“標題配圖”的場景輸入只要一句話比如“幫我寫一篇數據庫遷移的文章并配圖”確認Agent能完成規(guī)劃、取圖、插入三個動作后再逐步擴大到長文章和復雜文檔。每一步都補充日志和校驗才能讓自動配圖從“偶爾能用”變成“穩(wěn)定可用”。你自己的內容創(chuàng)作流程也不用再被一張找不到的配圖卡住。