Agent_camel框架学习记录(2)
原作者链接🔗:https://fmhw1n4zpn.feishu.cn/docx/AF4XdOZpIo6TOaxzDK8cxInNnCe
2.3.3 使用开源模型:Ollama
Ollama 是一个开源机器学习框架,专注于让用户轻松使用语言模型。它基于 llama.cpp 实现,支持 CPU/GPU 推理,并兼容 OpenAI 接口。
安装与使用 Qwen2.5
1 | ollama pull qwen2.5:7b |
模型加载方式:
1 | from camel.models import ModelFactory |
自行构建的qwen2.5:7b模型下的多行问答Agent:
1 | from camel.agents import ChatAgent |
2.4.3 BaseMessage 消息处理
1 | from camel.messages import BaseMessage |
通过BassMessage实现Agent处理图片/视频等多模态信息:
首先展示本地图片的多模态理解示例:
1 | from camel.agents import ChatAgent |

以上的图片示例运行后的结果:
1 | PS D:\Camel_Test_Project> & D:/Download/Python/py-3.11.9/python.exe d:/Camel_Test_Project/Multimodal_images.py |
2.4.4 与 ChatAgent 协作
1 | from camel.agents import ChatAgent |
2.5.3 上下文学习 (ICL)
ICL 通过上下文中的示例(Few-shot/One-shot/Zero-shot)指导模型生成答案。
1 | 英文转法文任务示例: |
2.5.4 思维链 (CoT)
通过逐步展示推理过程提升模型表现:
1 | Q: Roger 有 5 个网球,他又买了 2 罐,每罐 3 个,共多少? |
2.5.5 使用 CAMEL 的 Prompt
使用 TaskSpecifyAgent 创建特定任务提示:
1 | from camel.agents import TaskSpecifyAgent |
使用 TextPrompt 自定义模板:
1 | from camel.prompts import TextPrompt |
更多见官方文档:https://github.com/camel-ai/camel
2.6Memory记忆系统
CAMEL AI 记忆系统集成操作流程
- 理论基础
1.1 CAMEL 记忆存储机制
Key-Value 存储: 简单键值对存储,适合结构化数据
Graph 存储: 图数据库存储,适合关系型数据
Vector 存储: 向量数据库存储,适合语义检索
1.2 核心数据结构
Chat_history: 规范化存储智能体对话记录
Context: 从 chat_history 中提取的上下文信息
权重机制: 基于重要性评分筛选关键信息
1.3 工作原理
大模型基于预测机制生成文本,通过权重筛选从历史记录中获取有效上下文,确保在 token 限制内提供最重要的信息。
2. 环境准备以及记忆系统构建初始化
1 | from camel.memories import ( |
关键组件说明:
ScoreBasedContextCreator: 基于评分的上下文创建器
ChatHistoryBlock: 聊天记录存储块
VectorDBBlock: 向量数据库块,支持语义检索
- 测试无记忆状态的输出结果
1 | PS D:\Camel_Test_Project> & D:/Download/Python/py-3.11.9/python.exe d:/Camel_Test_Project/test_Memory_all.py |
- 记忆系统集成
4.1 集成记忆到智能体
python# 关键步骤:将记忆系统赋值给智能体
agent.memory = memory
4.2 测试集成效果
python# 使用相同的问题测试
response = agent.step(usr_msg)
print(“集成记忆后响应:”, response.msgs[0].content)
5.测试结果,成功响应:
1 | 集成记忆后响应: CAMEL-AI 是一个专注于研究和开发大规模语言模型(LLM)在多智能体系统中应用的框架 。它旨在通过构建和实验不同的多智能体交互模式,来探索和理解智能体之间的协作、竞争以及这些互动如 何影响整体系统的性能和效率。根据您的问题,CAMEL-AI 被认为是第一个LLM多智能体框架。这个框架不仅 促进了对智能体 scaling law 的研究,还为研究人员和开发者提供了一个开放平台,以测试新的算法和理论。 |
2.7 Tools 工具系统
2.7.1 工具说明
工具(Tools)是大语言模型(LLM)与外部世界交互的桥梁。虽然 LLM 拥有强大的语言理解与生成能力,但它本质上是一个“封闭系统”,无法直接:
- 获取实时信息(如天气、新闻)
- 访问外部数据(如数据库、文件)
- 执行具体操作(如发送邮件、控制设备)
为克服这些局限,CAMEL 提供了“工具”机制,使模型能够:
- 通过 API 获取实时数据
- 调用外部服务
- 执行特定任务
- 与其他系统交互
✅ 工具的本质是一个带有名称、描述、输入参数与输出类型的 函数接口。
CAMEL 支持:
- 内置工具
- 自定义工具
- 工具包(Toolkit)
2.7.2 动手实践
1 | from camel.agents import ChatAgent |
输出约为:
2的平方根是 1.414
可以看到模型给出了回答,但是精度不够。我们需要更高的精度,现在创建自定义函数工具:
使用FunctionTool
1 | from camel.toolkits import FunctionTool |
2.7.3 进阶案例:AI Society + 工具系统
1 | from camel.toolkits import SearchToolkit, MathToolkit |
可通过
response.info["tool_calls"]查看工具调用记录,验证是否使用工具而非“编造”。
这段代码是一个完整的 CAMEL AI 多智能体协作系统实现,以下将详细分析其功能架构和实现机制。
- 系统架构分析
1.1 核心组件结构
┌─────────────────────────────────────────────────────────────┐
│ CAMEL AI 多智能体系统 │
├─────────────────────────────────────────────────────────────┤
│ 环境配置层 │ 模型工厂层 │ 工具包层 │ 角色扮演层 │ 执行控制层 │
│ ├─ 环境变量 │ ├─ 模型创建 │ ├─ 搜索 │ ├─ 双智能体 │ ├─ 安全机制 │
│ ├─ API配置 │ ├─ 平台适配 │ ├─ 计算 │ ├─ 任务分配 │ ├─ 异常处理 │
│ └─ 密钥管理 │ └─ 连接建立 │ └─ 工具链 │ └─ 协作模式 │ └─ 循环控制 │
└─────────────────────────────────────────────────────────────┘
1.2 数据流向分析
用户任务 → 角色扮演系统 → 智能体交互 → 工具调用 → 结果返回 → 任务完成
↓ ↓ ↓ ↓ ↓ ↓
任务解析 角色分配 消息传递 功能执行 数据处理 状态更新 - 详细功能实现
2.1 环境配置与模型初始化
1 | python# 环境配置层 |
模型工厂层
1 | model = ModelFactory.create( |
功能特点:
配置解耦: 使用环境变量管理敏感信息
平台抽象: 支持多种模型平台的统一接口
模型选择: 使用 Qwen2.5-72B 大模型作为推理引擎
2.2 工具包集成机制
1 | pythontools_list = [ |
工具能力分析:
SearchToolkit:
百度搜索、谷歌搜索、DuckDuckGo搜索
信息检索和网络查询能力
MathToolkit:
数学计算、公式求解
数值分析和统计计算
扩展性: 使用解包操作符支持动态工具添加
2.3 角色扮演系统设计
pythonrole_play_session = RolePlaying(
assistant_role_name=”搜索者”,
user_role_name=”教授”,
assistant_agent_kwargs=dict(model=model, tools=tools_list),
user_agent_kwargs=dict(model=model),
task_prompt=task_prompt,
with_task_specify=False,
output_language=’中文’
)
角色分工机制:
搜索者(Assistant):
具备工具调用能力
负责信息检索和计算执行
主动解决问题的执行者
教授(User):
任务分析和指导
结果验证和反馈
决策和监督角色
2.4 任务驱动的协作模式
1 | pythontask_prompt = ("假设现在是2024年,牛津大学的成立年份,并计算出其当前年龄。" |
任务分解策略:
信息获取: 搜索牛津大学成立年份
数据处理: 计算当前年龄 (2024 - 成立年份)
进一步计算: 年龄 + 10 年
工具约束: 明确使用百度搜索工具
- 执行控制机制
3.1 安全的循环控制
1 | pythonmax_turns = 10 |
安全机制:
轮次限制: 防止无限循环
计数器: 跟踪执行进度
资源保护: 避免资源耗尽
3.2 异常处理机制
1 | pythontry: |
错误处理策略:
捕获异常: 网络错误、API调用失败
友好提示: 彩色输出错误信息
优雅退出: 避免程序崩溃
3.3 终止条件检查
1 | python# 智能体主动终止 |
多重终止机制:
智能体终止: 基于内部逻辑判断
任务完成: 基于特定标识符
强制终止: 基于轮次限制
- 系统优势
4.1 架构优势
模块化设计: 各组件独立可替换
可扩展性: 支持新工具和角色的添加
平台无关: 支持多种模型平台
4.2 功能优势
智能协作: 双智能体协同工作
工具集成: 多种工具无缝集成
任务导向: 明确的任务驱动机制
代码运行结果:
1 | 开始执行任务: 假设现在是2024年,牛津大学的成立年份,并计算出其当前年龄。然后再将这个年龄加上10 年。使用百度搜索工具。 |