轻量级的 AI Agent 框架
Project description
ZipAgent 是一个现代化的 Python AI Agent 框架,专注于简洁、高效和易扩展。无论是构建聊天机器人、智能助手还是复杂的 AI 工作流,ZipAgent 都能让你快速上手。
✨ 核心特性
- 🎯 简洁 API: 极简设计,几行代码构建 AI Agent
- 🔧 工具系统: 强大的
@function_tool装饰器,轻松扩展 AI 能力 - 🌊 流式输出: 完整的流式处理支持,提供实时交互体验
- 📝 上下文管理: 自动管理对话历史和上下文状态
- 🔗 MCP 集成: 原生支持 Model Context Protocol,集成外部工具
- ⚡ 现代化: 基于 Python 3.10+,支持异步编程
- 🧪 高质量: 120+ 测试用例,78% 代码覆盖率
🚀 快速开始
安装
pip install zipagent
5分钟上手
from zipagent import Agent, Runner, function_tool
# 1. 定义工具
@function_tool
def calculate(expression: str) -> str:
"""计算数学表达式"""
return str(eval(expression))
# 2. 创建 Agent
agent = Agent(
name="MathAssistant",
instructions="你是一个数学助手",
tools=[calculate]
)
# 3. 开始对话
result = Runner.run(agent, "计算 23 + 45")
print(result.content) # "23 + 45 的计算结果是 68"
📚 功能展示
🌊 流式输出
from zipagent import StreamEventType
# 实时流式响应
for event in Runner.run_stream(agent, "解释什么是人工智能"):
if event.type == StreamEventType.ANSWER_DELTA:
print(event.content, end="", flush=True) # 打字机效果
elif event.type == StreamEventType.TOOL_CALL:
print(f"🔧 调用工具: {event.tool_name}")
📝 上下文管理
from zipagent import Context
# 多轮对话
context = Context()
result1 = Runner.run(agent, "我叫小明", context=context)
result2 = Runner.run(agent, "我叫什么名字?", context=context)
print(result2.content) # "你叫小明"
# 对话统计
print(f"对话轮数: {context.turn_count}")
print(f"Token 使用: {context.usage}")
🔗 MCP 工具集成
from zipagent import MCPTool
# 连接外部 MCP 工具
async def demo():
# 连接高德地图工具
amap_tools = await MCPTool.connect(
command="npx",
args=["-y", "@amap/amap-maps-mcp-server"],
env={"AMAP_MAPS_API_KEY": "your_key"}
)
# 混合使用本地工具和 MCP 工具
agent = Agent(
name="MapAssistant",
instructions="你是一个地图助手",
tools=[calculate, amap_tools] # 统一接口!
)
result = Runner.run(agent, "北京今天天气怎么样?")
print(result.content)
🔧 高级功能
异常处理
from zipagent import ToolExecutionError, MaxTurnsError
try:
result = Runner.run(agent, "计算 10 / 0", max_turns=3)
except ToolExecutionError as e:
print(f"工具执行失败: {e.details['tool_name']}")
except MaxTurnsError as e:
print(f"达到最大轮次: {e.details['max_turns']}")
自定义模型
from zipagent import OpenAIModel
# 自定义模型配置
model = OpenAIModel(
model="gpt-4",
api_key="your_api_key",
base_url="https://api.openai.com/v1"
)
agent = Agent(
name="CustomAgent",
instructions="你是一个助手",
tools=[calculate],
model=model
)
🎯 使用场景
- 💬 聊天机器人: 客服、问答、闲聊机器人
- 🔧 智能助手: 代码助手、写作助手、数据分析助手
- 🌐 工具集成: 集成 API、数据库、第三方服务
- 📊 工作流自动化: 复杂的多步骤任务自动化
- 🔍 知识问答: 基于知识库的智能问答系统
📖 完整示例
查看 examples/ 目录获取更多示例:
basic_demo.py- 基础功能演示stream_demo.py- 流式输出演示mcp_demo.py- MCP 工具集成演示
# 运行示例
python examples/basic_demo.py
python examples/stream_demo.py
python examples/mcp_demo.py
🏗️ 项目架构
ZipAgent/
├── src/zipagent/ # 核心框架
│ ├── agent.py # Agent 核心类
│ ├── context.py # 上下文管理
│ ├── model.py # LLM 模型抽象
│ ├── runner.py # 执行引擎
│ ├── tool.py # 工具系统
│ ├── stream.py # 流式处理
│ ├── mcp_tool.py # MCP 工具集成
│ └── exceptions.py # 异常系统
├── examples/ # 使用示例
├── tests/ # 测试套件(120+ 测试)
└── docs/ # 文档
📦 依赖
核心依赖:
openai- OpenAI API 客户端pydantic- 数据验证
可选依赖:
mcp- MCP 工具支持nest-asyncio- 嵌套异步支持python-dotenv- 环境变量管理
🛠️ 开发
本地开发环境
# 克隆项目
git clone https://github.com/JiayuXu0/LiteAgent.git
cd LiteAgent
# 使用 uv 管理依赖(推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
# 运行测试
uv run pytest
# 代码检查
uv run ruff check --fix
uv run pyright
贡献指南
我们欢迎各种形式的贡献!
- 🐛 报告 Bug: 提交 Issue
- 💡 功能建议: 讨论新功能想法
- 📝 文档改进: 完善文档和示例
- 🔧 代码贡献: 提交 Pull Request
开发规范
- 使用
ruff进行代码格式化和检查 - 使用
pyright进行类型检查 - 编写测试用例,保持高覆盖率
- 遵循语义化版本规范
📊 性能
- ⚡ 启动速度: 毫秒级初始化
- 🔄 并发能力: 支持异步并发处理
- 💾 内存占用: 轻量级设计,低内存占用
- 📦 包大小: Wheel 包仅 ~15KB
🗺️ 路线图
- 多模型支持: Claude、Gemini、本地模型
- 插件系统: 更丰富的扩展机制
- 可视化界面: Web UI 和监控面板
- 分布式支持: 多实例协作
- 性能优化: 缓存和批处理优化
📄 许可证
MIT License - 详见 LICENSE 文件
🤝 致谢
感谢所有贡献者和社区支持!
- OpenAI - 提供强大的 LLM API
- MCP 社区 - Model Context Protocol 标准
- Python 生态 - 优秀的开发工具链
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
zipagent-0.1.2.tar.gz
(36.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
zipagent-0.1.2-py3-none-any.whl
(24.8 kB
view details)
File details
Details for the file zipagent-0.1.2.tar.gz.
File metadata
- Download URL: zipagent-0.1.2.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5342c9e9f1e27499c0a338fa4311e0f16c4c9efec10dcd2b583dbbe9200e1b08
|
|
| MD5 |
63fc0c1c4f28cf9ee359bd31e276ac14
|
|
| BLAKE2b-256 |
1146c7d4a19f56e26faceb13eb76a79c12a0ef8ea37b8de0145f78d201e74fcd
|
File details
Details for the file zipagent-0.1.2-py3-none-any.whl.
File metadata
- Download URL: zipagent-0.1.2-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57d1e9dac97df7ac18166c91c095e49df4b5c786ccdf5a003b9a58ff0b936bc9
|
|
| MD5 |
14b9381571bc22127a1fff861992f29a
|
|
| BLAKE2b-256 |
64d4e43e99e97aa834b95cc2982cd91e8d6c5a308e75aac60af679a19be320ad
|