用 CrewAI 和 A2A 创建绘画智能体

CrewAI 开发框架

CrewAI 是一个开源的多智能体框架,支持工具集成,用于构建一组协作完成任务的智能体(Agents)。它的设计理念是:每个 Agent 都具备特定角色、工具和目标,通过任务分工与信息共享共同解决复杂问题。

CrewAI 能够提供类人团队的任务执行方式,不但可以构建单智能体助手,更可以构建"项目经理 + 设计师 + 执行者"这样的模拟团队。CrewAI 的另一个优势是可扩展性和生产级部署,因此其实可以广泛应用于你的数据分析、内容创作、自动化流程等场景。

思考题

1、在多个 Agent 并发调用图像生成工具的场景中,如何设计缓存机制以避免图像混淆或数据污染?

提示:

  • 目前系统通过 session_id 隔离用户会话缓存。
  • 思考是否还需要对 image_id 添加命名策略或过期策略。
  • 考虑缓存的清理机制或最大容量限制。

生成图像的方法 generate_image_tool 需要优化,它是取的最后一次生成的图像,如果有 AgentA 和 AgentB同时在一个会话中生成新图像,Agent A可能会错误地引用Agent B最新生成的图像。

解决方案:强制显式引用。

  • 如果 Agent 需要修改现有图像,它必须通过 artifact_file_id 参数显式地引用该图像的 image_id。如果 artifact_file_id 未提供或无效,则不应尝试从缓存中推断任何图像,而是视为生成新图像的请求。
  • 如果Agent需要生成新图像,则不应提供 artifact_file_id。工具将生成一个新的 uuid4().hex 作为 image_id,并将新图像及其ID返回给Agent。Agent应在后续步骤中明确使用此新ID。

如果缓存满了,则无法生成新的图像,可以在放入缓存的时候,设置过期时间。InMemoryCache 类的 set 方法已实现,调用 set 方法时传入 ttl 可以设置过期时间。

最近最少使用 (LRU) 策略

LRU 方案,修改 InMemoryCache 类:

  • init 中添加 expiry_time_seconds 和 max_size 参数。
  • 修改 set 方法,使其存储时间戳并实现 LRU 淘汰逻辑。
  • 修改 get 方法,使其检查过期时间并更新时间戳,同时更新 LRU 顺序。
  • 添加 clean_expired 方法用于主动清理。启动独立线程调用 clean_expired 方法

2、如果用户连续发送多轮提示(如"再给它加上一顶帽子"),如何设计智能画师 Agent 以理解上下文并自动复用上一轮生成的图像?提示:当前版本通过 artifact_file_id 实现图像修改。思考如何自动识别"上一张图"。是否需要结合上下文理解(CoT 或对话历史追踪)?

对于每个会话都维护一个存放图像的字典(Python 3.7+ 的字典会保留插入顺序),修改 generate_image_tool 方法将图像 id 存放到字典中。

修改 invoke 方法,如果没有明确提供 artifact_file_id,尝试自动复用当前会话中最新生成的图像 ID 作为 artifact_file_id,并将其传递给图像生成工具。

本地版

arduino 复制代码
uv run 02_CrewAI_Agent.py

代理需要切换下。

任务执行成功,生成图片可能失败,可以多试几次。

多 Agent

进入 agents/crewai_zh 目录,并参考 agents/crewai_zh/README.md 的说明,启动智能画师 Agent 服务。

uv run .之后,就可以把智能画师 Agent 添加到 UI 应用程序中。

相关推荐
木雷坞44 分钟前
让 AI 编程助手跑得起项目:Dev Container 实践记录
人工智能
腾讯云开发者2 小时前
港科大郭毅可谈Agentic AI时代的核心命题:人机共生,人不可能退场
人工智能
常丛丛2 小时前
5.6 LangGraph-Edges理解-Agent图的道路系统
人工智能
雪隐2 小时前
个人电脑玩AI-08让5060 Ti给你打工——我拿 Unlimited-OCR扫了 600 页书,然后悟了
人工智能·后端
Coffeeee2 小时前
Prompt要花心思写,与 AI 对话的七个技巧
人工智能·aigc·ai编程
蝎子莱莱爱打怪2 小时前
Claude Code 官宣新升级:子智能体默认后台跑,你边聊它边干活
人工智能
武子康2 小时前
调查研究-206 DeepSeek DSpark 深度解析:大模型推理加速,正在从“模型能力”转向“系统工程”
人工智能·agent·deepseek
甲维斯3 小时前
最佳work模型sonnet5来了,直接就能用!
人工智能
IT_陈寒3 小时前
React hooks 闭包陷阱把我的状态吃掉了,原来问题出在这里
前端·人工智能·后端