- 一个轻量级的函数调用Agent框架,基于本地 vLLM。
- A lightweight agent framework for function calling with local vLLM.
- 主要是function calling
- 工具注册系统:易于注册和使用自定义工具
- 函数调用:自动解析模型输出并执行工具
- 本地 vLLM 集成:通过 OpenAI 兼容的 API 连接到本地 vLLM 服务
- 可扩展性:简单添加新工具和功能
- 错误处理:针对各种场景的健壮错误处理
- 运行中的本地 vLLM 服务(例如 vLLM)
- 必要的依赖项
pip install -r requirements.txtfrom NanoAgent import NanoAgent
# 使用默认配置创建 NanoAgent
agent = NanoAgent()
# 运行代理并提问
response = agent.run("计算987654321 * 123456789的精确结果是多少?")
print(response)from NanoAgent import NanoAgent, VLLMConfig
# 创建自定义配置
config = VLLMConfig(
base_url="http://localhost:8000",
model_name="Qwen3-VL-235B-A22B-Instruct",
temperature=0.1,
max_tokens=2048
)
# 使用自定义配置创建 NanoAgent
agent = NanoAgent(config=config)使用 sympy 安全计算数学表达式。
参数:
expression:数学表达式字符串(例如 "123*456","sqrt(2)+pi")
示例:
response = agent.run("计算pi的平方减去根号5,再乘以0.7的结果")执行日期操作。
参数:
operation:操作类型("today","add","format")date:YYYY-MM-DD 格式的日期字符串("add" 和 "format" 操作必填)days:要添加的天数("add" 操作必填)format:日期格式字符串("format" 操作必填)
示例:
response = agent.run("2024年12月25日之后100天是哪一天?")比较两个浮点数。
参数:
a:第一个浮点数b:第二个浮点数
示例:
response = agent.run("比较 3.14159 和 2.71828 的大小")从图像中识别数学表达式。
参数:
image_path:图像文件路径或 URL
示例:
response = agent.run("识别图像中的数学式子并计算结果", image_paths=["math_image.jpg"])要添加自定义工具,请创建一个继承自 BaseTool 的新工具类,并使用 @register_tool 装饰器注册它:
from NanoAgent import BaseTool, register_tool
@register_tool('my_custom_tool')
class MyCustomTool(BaseTool):
description = '我的自定义工具描述'
parameters = [
{
'name': 'param1',
'type': 'string',
'description': '参数 1',
'required': True
}
]
def call(self, params):
# 实现工具逻辑
return '工具结果'NanoAgent/
├── __init__.py # 模块导出
├── nano_agent/ # 代码
│ ├── __init__.py
│ ├── config.py # 配置管理
│ ├── llm.py # 本地 vLLM 客户端
│ ├── agent.py # 核心代理逻辑
│ └── tools/ # 工具模块
│ ├── __init__.py
│ ├── base.py # 基础工具类和注册
│ ├── math.py # 数学计算工具
│ ├── date.py # 日期操作工具
│ ├── compare.py # 浮点数比较工具
│ └── image.py # 图像数学识别工具
├── examples/ # 示例脚本
│ ├── basic_usage.py
│ ├── function_list_example.py
│ ├── image_math_example.py
│ ├── custom_tool_example.py
│ ├── advanced_custom_tool.py
│ ├── combined_tools_example.py
│ ├── images/ # 示例图像
│ │ ├── 1.jpg
│ │ └── 2.jpg
│ └── README.md # 示例说明文档
├── README.md # 项目文档
└── requirements.txt # 依赖项
VLLMConfig 类允许您配置本地 vLLM 服务:
base_url:vLLM 服务地址(默认:"http://localhost:8000")model_name:模型名称(默认:"Qwen3-VL-235B-A22B-Instruct")api_path:API 路径(默认:"/v1/chat/completions")temperature:生成温度(默认:0.0)max_tokens:生成的最大令牌数(默认:4069)