当前位置: 首页 > news >正文

Heurist Agent Framework工具系统详解:如何扩展自定义工具

Heurist Agent Framework工具系统详解:如何扩展自定义工具

【免费下载链接】heurist-agent-frameworkA flexible multi-interface AI agent framework for building agents with reasoning, tool use, memory, deep research, blockchain interaction, MCP, and agents-as-a-service.项目地址: https://gitcode.com/gh_mirrors/he/heurist-agent-framework

Heurist Agent Framework是一个强大的多接口AI智能体框架,它提供了灵活的工具系统,让开发者能够轻松构建具有推理、工具使用、记忆、深度研究和区块链交互能力的AI智能体。本文将深入探讨Heurist Agent Framework的工具系统,并为您展示如何扩展自定义工具,让您的智能体更加强大和实用。

什么是Heurist Agent Framework工具系统?

Heurist Agent Framework的工具系统是一个模块化的架构,允许开发者将各种功能封装为可重用的工具。这些工具可以被AI智能体调用,从而扩展其能力范围。工具系统采用了装饰器模式,让工具定义变得简单直观。

工具系统的核心优势在于其灵活性——您可以轻松添加新的工具,而无需修改框架的核心代码。每个工具都是一个独立的函数,通过@tool装饰器进行标记,框架会自动处理工具的注册、参数验证和执行。

工具系统核心组件

1. 工具装饰器(Tool Decorator)

工具装饰器是Heurist Agent Framework工具系统的核心组件,位于core/tools/tool_decorator.py。这个装饰器为普通函数添加了必要的元数据,使其能够被框架识别为可调用的工具。

@tool("工具描述") def 工具函数名(参数1: 类型, 参数2: 类型) -> 返回类型: """工具详细说明""" # 工具逻辑 return {"result": 结果}

装饰器会自动生成OpenAI兼容的函数模式,包括参数模式、类型验证和描述信息。这意味着您定义的任何工具都可以直接被大型语言模型理解和调用。

2. 工具箱(ToolBox)

工具箱是工具的容器和管理器,位于core/tools/tools.py。它负责:

  • 工具的注册和管理
  • 工具模式的生成
  • 工具的执行调度
  • 错误处理和日志记录

每个智能体都可以拥有自己的工具箱实例,您可以根据需要定制工具集合。

3. 工具处理器(Tool Handlers)

工具处理器负责实际执行工具调用。当AI智能体决定使用某个工具时,框架会自动调用相应的处理器函数,传递参数并返回结果。

如何创建自定义工具:完整指南

步骤1:创建工具函数

创建一个新的Python文件,定义您的工具函数。以下是一个简单的计算器工具示例:

from core.tools.tool_decorator import tool @tool("计算两个数字的和") def add(a: int, b: int) -> int: """将两个整数相加并返回结果""" result = a + b return {"result": result} @tool("计算两个数字的乘积") def multiply(a: int, b: int) -> int: """将两个整数相乘并返回结果""" result = a * b return {"result": result}

步骤2:注册工具到工具箱

创建一个自定义工具箱类,继承自ToolBox基类:

from core.tools.tools import ToolBox class MyCustomToolBox(ToolBox): def __init__(self): super().__init__() # 注册装饰的工具 self.decorated_tools = [ add, multiply, # 添加更多工具... ]

步骤3:集成到智能体

在您的智能体类中使用自定义工具箱:

from mesh.mesh_agent import MeshAgent from core.tools.tools import Tools class MyCustomAgent(MeshAgent): def __init__(self): super().__init__() # 初始化工具系统 self.tools = Tools(MyCustomToolBox) def get_tool_schemas(self): """返回工具模式列表""" return self.tools.get_tools_config() async def _handle_tool_logic(self, tool_name, args): """处理工具调用""" return await self.tools.execute_tool(tool_name, args, self)

步骤4:添加高级功能

您可以为工具添加更复杂的功能,比如访问外部API、处理文件、或者与其他系统集成:

import requests from core.tools.tool_decorator import tool @tool("获取天气信息") def get_weather(city: str, country: str = "CN") -> dict: """获取指定城市的天气信息 Args: city: 城市名称 country: 国家代码(默认:CN) Returns: 包含天气信息的字典 """ # 调用天气API response = requests.get( f"https://api.weatherapi.com/v1/current.json", params={"q": f"{city},{country}", "key": os.getenv("WEATHER_API_KEY")} ) if response.status_code == 200: data = response.json() return { "result": f"{city}的天气:{data['current']['condition']['text']},温度:{data['current']['temp_c']}°C", "data": data } else: return {"result": f"无法获取{city}的天气信息", "error": response.text}

实战案例:创建区块链数据查询工具

让我们创建一个实际的区块链数据查询工具,展示Heurist Agent Framework在区块链领域的强大能力:

import os from typing import Dict, Any from core.tools.tool_decorator import tool @tool("查询以太坊地址余额") def get_eth_balance(address: str) -> Dict[str, Any]: """查询指定以太坊地址的ETH余额 Args: address: 以太坊地址(0x开头) Returns: 包含余额信息的字典 """ from web3 import Web3 # 使用环境变量配置的RPC节点 w3 = Web3(Web3.HTTPProvider(os.getenv("ETH_RPC_URL"))) if not w3.is_connected(): return {"result": "无法连接到以太坊节点", "error": "连接失败"} # 验证地址格式 if not w3.is_address(address): return {"result": "无效的以太坊地址", "error": "地址格式错误"} # 查询余额 balance_wei = w3.eth.get_balance(address) balance_eth = w3.from_wei(balance_wei, 'ether') return { "result": f"地址 {address} 的ETH余额为:{balance_eth:.4f} ETH", "data": { "address": address, "balance_wei": str(balance_wei), "balance_eth": float(balance_eth), "unit": "ETH" } } @tool("查询代币持有量") def get_token_balance(address: str, token_address: str) -> Dict[str, Any]: """查询指定地址的代币持有量 Args: address: 用户地址 token_address: 代币合约地址 Returns: 包含代币余额信息的字典 """ from web3 import Web3 w3 = Web3(Web3.HTTPProvider(os.getenv("ETH_RPC_URL"))) # ERC20代币ABI(简化版) erc20_abi = [ { "constant": True, "inputs": [{"name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"name": "balance", "type": "uint256"}], "type": "function" }, { "constant": True, "inputs": [], "name": "decimals", "outputs": [{"name": "", "type": "uint8"}], "type": "function" }, { "constant": True, "inputs": [], "name": "symbol", "outputs": [{"name": "", "type": "string"}], "type": "function" } ] # 创建代币合约实例 token_contract = w3.eth.contract(address=token_address, abi=erc20_abi) # 查询代币信息 try: balance = token_contract.functions.balanceOf(address).call() decimals = token_contract.functions.decimals().call() symbol = token_contract.functions.symbol().call() # 计算实际代币数量 actual_balance = balance / (10 ** decimals) return { "result": f"地址 {address} 持有 {actual_balance:.4f} {symbol}", "data": { "address": address, "token_address": token_address, "balance_raw": str(balance), "balance_formatted": float(actual_balance), "decimals": decimals, "symbol": symbol } } except Exception as e: return {"result": f"查询代币余额失败:{str(e)}", "error": str(e)}

工具系统的高级特性

1. 工具链式调用

Heurist Agent Framework支持工具链式调用,一个工具的输出可以作为另一个工具的输入:

@tool("分析地址的资产组合") async def analyze_wallet_portfolio(address: str, agent_context) -> Dict[str, Any]: """分析以太坊地址的完整资产组合 Args: address: 以太坊地址 agent_context: 智能体上下文(自动注入) Returns: 包含资产分析结果的字典 """ # 获取ETH余额 eth_result = await get_eth_balance({"address": address}, agent_context) # 获取常见代币余额 common_tokens = { "USDT": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F" } token_balances = {} for symbol, token_address in common_tokens.items(): token_result = await get_token_balance( {"address": address, "token_address": token_address}, agent_context ) if "data" in token_result: token_balances[symbol] = token_result["data"] # 生成分析报告 total_value = 0 if "data" in eth_result: total_value += eth_result["data"].get("balance_eth", 0) for symbol, data in token_balances.items(): total_value += data.get("balance_formatted", 0) return { "result": f"地址 {address} 的总资产价值约为 ${total_value:.2f}", "data": { "eth_balance": eth_result.get("data"), "token_balances": token_balances, "total_value_usd": total_value, "analysis_timestamp": datetime.now().isoformat() } }

2. 工具缓存机制

框架内置了缓存装饰器,可以显著提升工具性能:

from decorators import with_cache @tool("获取代币价格信息") @with_cache(ttl_seconds=300) # 缓存5分钟 async def get_token_price(token_symbol: str) -> Dict[str, Any]: """获取代币的当前价格信息 Args: token_symbol: 代币符号(如:ETH、BTC、USDT) Returns: 包含价格信息的字典 """ # 这里调用价格API # 由于有缓存,相同的请求在5分钟内不会重复调用API pass

3. 错误处理和重试

工具系统内置了错误处理和重试机制:

from decorators import with_retry @tool("调用外部API") @with_retry(max_retries=3, delay=1) async def call_external_api(api_url: str, params: dict) -> Dict[str, Any]: """调用外部API,自动重试失败请求 Args: api_url: API地址 params: 请求参数 Returns: API响应数据 """ import aiohttp async with aiohttp.ClientSession() as session: async with session.get(api_url, params=params) as response: if response.status == 200: data = await response.json() return {"result": "API调用成功", "data": data} else: raise Exception(f"API调用失败,状态码:{response.status}")

最佳实践和注意事项

1. 工具设计原则

  • 单一职责:每个工具只做一件事,并且做好
  • 清晰的接口:使用类型注解明确参数和返回值类型
  • 完善的文档:为每个工具提供详细的文档字符串
  • 错误处理:妥善处理异常情况,返回有意义的错误信息
  • 性能优化:对于耗时的操作,考虑添加缓存机制

2. 安全性考虑

  • API密钥管理:永远不要硬编码API密钥,使用环境变量
  • 输入验证:验证所有输入参数,防止注入攻击
  • 访问控制:根据需要对工具访问进行权限控制
  • 日志记录:记录重要的工具调用信息

3. 测试和验证

为您的工具编写测试用例:

import pytest from my_tools import get_eth_balance def test_get_eth_balance(): """测试以太坊余额查询工具""" result = get_eth_balance({"address": "0x742d35Cc6634C0532925a3b844Bc9e...省略"}) assert "result" in result assert "data" in result assert "balance_eth" in result["data"]

总结

Heurist Agent Framework的工具系统提供了一个强大而灵活的框架,让开发者能够轻松扩展AI智能体的能力。通过简单的装饰器语法,您可以快速创建各种功能工具,从简单的计算器到复杂的区块链查询工具。

工具系统的关键优势包括:

  1. 简单易用:通过装饰器模式,几行代码即可创建新工具
  2. 类型安全:自动生成OpenAI兼容的函数模式
  3. 灵活扩展:支持工具链式调用和组合
  4. 性能优化:内置缓存和重试机制
  5. 生态集成:与Heurist Mesh网络无缝集成

无论您是构建简单的聊天机器人还是复杂的区块链分析智能体,Heurist Agent Framework的工具系统都能为您提供强大的支持。开始创建您的第一个自定义工具,解锁AI智能体的无限可能!

【免费下载链接】heurist-agent-frameworkA flexible multi-interface AI agent framework for building agents with reasoning, tool use, memory, deep research, blockchain interaction, MCP, and agents-as-a-service.项目地址: https://gitcode.com/gh_mirrors/he/heurist-agent-framework

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1229165/

相关文章:

  • A2A协议:AI智能体间语义化协作的通信基座
  • 达林顿管原理、应用与选型指南
  • 郑州惠济区奢侈品回收怎么交易安全?上门/到店流程、风险规避、回款须知 - 逸程奢侈品回收中心
  • 爬虫转大模型:把方案拆到可执行
  • SpringBoot集成BPMN流程设计器:从零构建可视化工作流设计中心
  • 真正的通透,是在输得起的年纪,把人生最重要的课都上完。
  • 通义千问 3.8 即将发布且开放权重,2.4T 参数模型仅次 Fable 5,抢先测试!
  • 2026 东莞光纤激光打标设备、紫外视觉打标机、二氧化碳打标机本地厂商实测测评 - LYL仔仔
  • 基于SSM的同行旅游管理系统(Java+SSM+MySQL)| 计算机毕业设计 附源码论文PPT
  • 微信昵称特殊字符输入技巧与Unicode应用
  • 阳澄湖大闸蟹靠谱商家这样选,吃过都说值 - 浙江稻盛和夫
  • CAXA许可回收功能怎么补?四款软件帮你填坑
  • 犯错之后,还有机会重新建设。
  • TelegramUI社区贡献指南:如何参与开源组件库开发与维护
  • WEEX Labs:AI没有降温,为什么存储板块却突然集体回调?
  • 098、OIS光学防抖系统:陀螺仪信号处理、音圈马达控制与滚珠式vs悬丝式设计
  • 广州市奇杉服装配料有限公司:国内广州广东等地区高品质车缝线源头厂家,赋能纺织行业升级 - 十大品牌榜
  • 2026年扬州考公培训面试班推荐:荣上公考通关有方 - 17728098551
  • Netflix-4K-DDplus安全分析:扩展权限与用户隐私保护指南
  • 杭州城郊乡镇黄金回收不用跑市区,电话预约在家就能卖黄金 - 奢侈品回收评测
  • Python数据科学五大核心库详解与应用指南
  • 企业级可视化编辑器完整部署策略与3大核心价值实现
  • 综合鉴定准确率超98%,合合信息AI跨模态鉴伪技术亮相2026WAIC
  • 从命令行小白到AI助手专家:Kimi CLI如何重塑你的开发工作流
  • 家用电器塑胶制品加工
  • Apache Fury终极指南:如何实现5倍性能提升的跨语言序列化
  • 072、超分辨率与AI超分:从单帧重建到多帧融合
  • 2026德阳大冰块公司综合评分榜TOP5,谁才是真王者? - 热点咨讯
  • TI Mailbox中断机制详解:从寄存器操作到多核通信实战
  • WEEX Labs 周度观察:AI 基础设施的“权力重构”与实体经济的“深潜运动”