Skip to content

Latest commit

 

History

History
185 lines (137 loc) · 4.69 KB

File metadata and controls

185 lines (137 loc) · 4.69 KB

NanoAgent

  • 一个轻量级的函数调用Agent框架,基于本地 vLLM。
  • A lightweight agent framework for function calling with local vLLM.
  • 主要是function calling

特性

  • 工具注册系统:易于注册和使用自定义工具
  • 函数调用:自动解析模型输出并执行工具
  • 本地 vLLM 集成:通过 OpenAI 兼容的 API 连接到本地 vLLM 服务
  • 可扩展性:简单添加新工具和功能
  • 错误处理:针对各种场景的健壮错误处理

安装

先决条件

  • 运行中的本地 vLLM 服务(例如 vLLM
  • 必要的依赖项

安装依赖

pip install -r requirements.txt

快速开始

基本使用

from 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)

可用工具

1. safe_math_calculate

使用 sympy 安全计算数学表达式。

参数:

  • expression:数学表达式字符串(例如 "123*456","sqrt(2)+pi")

示例:

response = agent.run("计算pi的平方减去根号5,再乘以0.7的结果")

2. date_operation

执行日期操作。

参数:

  • operation:操作类型("today","add","format")
  • date:YYYY-MM-DD 格式的日期字符串("add" 和 "format" 操作必填)
  • days:要添加的天数("add" 操作必填)
  • format:日期格式字符串("format" 操作必填)

示例:

response = agent.run("2024年12月25日之后100天是哪一天?")

3. compare_floats

比较两个浮点数。

参数:

  • a:第一个浮点数
  • b:第二个浮点数

示例:

response = agent.run("比较 3.14159 和 2.71828 的大小")

4. image_to_math

从图像中识别数学表达式。

参数:

  • 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)

贡献

  • 使用 sympy 进行安全的数学计算
  • 使用 requests 进行 HTTP 请求