编排 AI 代理创建表情包
Source: Dev.to

https://mathewdony.com/blog/orchestrating-ai-agents-to-create-memes
什么是 AI 代理?
此时,你可能已经直接或间接使用过某种基于 LLM 的应用。简单来说,AI 代理就是使用 LLM 作为“大脑”的应用程序。
如果把它和人类作比较,LLM 就是思考的大脑部分。它接收你看到、听到或感受到的内容,进行理解,然后决定接下来要做什么。在人类身体里,眼睛和耳朵收集信息,神经把信息传递到大脑,大脑解释信息,随后肌肉执行动作。
AI 代理遵循相同的模式:
- 输入 – 来自用户或环境的数据。
- 预处理 – 清理并结构化输入的代码。
- LLM – 决定发生了什么。
- 函数/工具 – 根据决定执行操作。
大脑(LLM)很聪明,但没有感官(输入)和肌肉(工具)就无法与世界互动。早期的 LLM 就存在这种局限:它们可以推理,却无法获取实时数据(比如当前天气),因为缺少必要的“感官”和“肌肉”。
工具登场
工具是让 LLM 实际执行任务的缺失环节。把 LLM 看作大脑,工具则是它从未拥有的手、传感器和外部能力。一旦把工具连接到大脑,它就能伸手去获取数据、采取行动,处理之前无法尝试的任务。
随着工具的普及,需要一种标准方式让代理和 LLM 与它们通信。Anthropic 推出了 Model Context Protocol (MCP),提供统一的 schema 来定义和使用工具。
创建 Meme MCP 服务器
我构建了一个 MCP 服务器,封装了 ImgFlip 的 caption_image API 用于生成 meme。该服务器暴露了一个工具,供我的 Meme 代理调用。它已在 npm 上发布为 imgflip-meme-mcp,提供 generate_meme 工具,接受模板 ID、文字和 API 凭证。
3 代理小队

最终用户只与 Supervisor 代理对话。他们从不直接与 Emotion 或 Meme 代理交互,这样可以保持体验简洁,而协调工作则在后台完成。
我本可以把所有功能打包成一个巨大的代理,并提供两个工具:
- 总结用户的情绪
- 生成 meme
但我选择将它们拆分,原因有三:
- 一个代理中工具太多实际上 会让情况更糟。
- 专门的代理更容易调优和扩展。
- 我可以根据任务混合使用廉价和昂贵的模型(例如,用轻量模型进行情绪总结,用更强大的模型进行创意 meme 生成)。
构建这 3 个代理
Meme 代理
Meme 代理访问远程 MCP 服务器来调用 meme 生成工具:
const memeAgent = createAgent({
model: "GPT-5",
tools: [generateMemeTool],
systemPrompt: "Create a funny meme",
});
Emotion 代理
Emotion 代理分析用户的情感:
const emotionAgent = createAgent({
model: "GPT-3.5",
systemPrompt: "Analyze what the user is feeling",
});
Supervisor 代理
Supervisor 代理本身既不生成 meme 也不分析情绪。它把上述两个代理包装成工具:
const supervisorAgent = createAgent({
model: "Gemini-3",
tools: [summarizeEmotionTool, generateMemeTool],
systemPrompt:
"You are a Supervisor that is tasked with creating a meme based on the emotions of the user",
});
Supervisor 只看到像 summarizeEmotionTool 和 generateMemeTool 这样的高级工具;它并不知道 MCP 服务器内部的低层实现细节。这种模块化设计让调试和扩展变得更容易。
在我的博客上尝试一下 Meme 代理吧:https://mathewdony.com/blog/orchestrating-ai-agents-to-create-memes
链接
如果这些代理变得自我意识了,至少它们还有幽默感。