通用 AI · Universal AI 5
本文介绍了DeFi意图解析系统的开发实践,重点阐述了自然语言到结构化数据的转换技术。系统采用Qwen-Agent工具架构,实现了代币兑换意图的解析功能,包括链名识别、代币标准化、金额提取等核心逻辑。通过建立代币和链名映射表,支持中英文混合输入和多种别名识别。系统采用模块化设计,包含完整的测试用例,支持扩展更多DeFi操作类型。该解析器为后续DeFi自动化系统提供了标准化的输入参数处理能力,是实现智
DAY 10
一、学习总结
1. 核心概念理解
-
意图解析 (Intent Parsing): 将用户自然语言请求转换为机器可理解的结构化数据
-
结构化参数 (Structured Parameters): 标准化格式的参数,便于程序处理和API调用
-
代理层 (Agent Layer): LLM作为"大脑",负责理解和协调
2. Qwen-Agent Tools工作机制
text
用户输入 → Agent → 工具选择 → 参数提取 → 工具执行 → 结果返回
二、技术实现要点
1. 工具设计模式
python
class ParseSwapIntentTool(BaseTool):
def call(self, params: str) -> str:
# 解析逻辑
result = parse_swap_intent(params)
return json.dumps(result)
@property
def name(self) -> str:
return "parse_swap_intent"
@property
def description(self) -> str:
return "解析DeFi兑换意图"
2. 关键解析逻辑
-
链名识别: 关键词匹配 + 别名映射
-
代币识别: 标准符号 + 别名映射(USDC = U = 美元)
-
金额提取: 正则表达式匹配数字模式
-
操作类型判断: 关键词检测(换成/兑换/swap)
三、实践作业完成情况
✅ 已完成:
-
完整项目结构搭建
-
创建了模块化的代码结构
-
配置了开发环境和依赖
-
-
核心解析器实现
python
def parse_swap_intent(text: str) -> dict: # 解析链名 chain = extract_chain(text) # "base" # 解析代币和金额 token_in, token_out, amount = extract_tokens_and_amount(text) # 标准化代币符号 token_in = normalize_token(token_in) # "U" → "USDC" token_out = normalize_token(token_out) # "matic" → "MATIC" return { "chain": chain, "tokenIn": token_in, "tokenOut": token_out, "amount": amount } -
支持的输入处理
-
✅ "帮我在 Base 上用 10 USDC 换成 ETH"
json
{ "chain": "base", "tokenIn": "USDC", "tokenOut": "ETH", "amount": "10" } -
✅ "把我 50 U 兑换成 Polygon 上的 MATIC"
json
{ "chain": "polygon", "tokenIn": "USDC", # U转换为USDC "tokenOut": "MATIC", "amount": "50" }
-
4. 扩展功能实现
-
支持多种DeFi操作: swap, stake, bridge等
-
多链支持: Ethereum, Base, Polygon, Arbitrum等
-
错误处理: 无效输入、缺少参数的优雅处理
-
置信度评分: 解析结果的可靠性评估
四、核心代码实现
1. 代币标准化映射
python
TOKEN_ALIASES = {
'USDC': ['usdc', 'usd coin', '美元', '美金', 'u', 'u币'],
'ETH': ['eth', 'ethereum', '以太坊', '以太币'],
'MATIC': ['matic', 'polygon', '马蹄'],
# ... 更多代币
}
2. 链名映射
python
CHAIN_ALIASES = {
'base': ['base', 'base chain', 'base网络'],
'polygon': ['polygon', 'matic', '马蹄链'],
'ethereum': ['ethereum', 'eth', '以太坊'],
# ... 更多链
}
3. 正则表达式模式
python
# 金额+代币模式: "10 USDC" 或 "50美元" AMOUNT_TOKEN_PATTERN = r'(\d+\.?\d*)\s*([A-Za-z\u4e00-\u9fa5]+)' # 链名上下文: "在Base上" 或 "on Polygon" CHAIN_CONTEXT_PATTERN = r'在\s*([^\s]+)\s*上|on\s+([a-zA-Z]+)'
五、遇到的问题与解决方案
问题1:中文和英文混合输入
解决方案: 使用Unicode范围的正则表达式支持中文
问题2:代币别名识别
解决方案: 创建别名映射表,支持大小写不敏感匹配
问题3:上下文推断
解决方案: 分析句子结构,识别"换成"前后的代币关系
问题4:缺失参数处理
解决方案: 提供默认值,添加警告信息,降低置信度评分
六、扩展思考
1. 未来DeFi项目需要的字段
json
{
"operation": "swap",
"chain": "base",
"tokenIn": "USDC",
"tokenOut": "ETH",
"amount": "10",
// 扩展字段
"slippage": "0.5", // 滑点容忍度
"deadline": "30", // 交易超时(分钟)
"wallet": "0x...", // 钱包地址
"gasPrice": "fast", // Gas价格策略
"route": "direct", // 路由策略
"protocol": "uniswap", // 协议选择
"priceImpact": "0.1", // 价格影响限制
}
2. 更复杂的DeFi操作
-
流动性管理: add/remove liquidity, farming
-
借贷操作: deposit, borrow, repay, withdraw
-
衍生品: open/close position, adjust leverage
-
跨链操作: bridge, cross-chain messaging
七、测试验证
测试用例
python
test_cases = [
("帮我在Base上用10 USDC换成ETH", {
"chain": "base",
"tokenIn": "USDC",
"tokenOut": "ETH",
"amount": "10"
}),
("把我50 U兑换成Polygon上的MATIC", {
"chain": "polygon",
"tokenIn": "USDC",
"tokenOut": "MATIC",
"amount": "50"
}),
("在Arbitrum上质押100 USDC", {
"operation": "stake",
"chain": "arbitrum",
"tokenIn": "USDC",
"amount": "100"
})
]
测试结果
-
✅ 所有基础用例通过
-
✅ 别名识别正常工作
-
✅ 错误输入处理优雅
-
✅ 置信度评分合理
八、学习收获
1. 技术收获
-
掌握了Qwen-Agent工具开发模式
-
学习了自然语言到结构化数据的转换技术
-
理解了DeFi操作的基本参数结构
-
实践了模块化代码设计和测试
2. 项目收获
-
创建了完整的DeFi意图解析框架
-
实现了可扩展的解析器架构
-
建立了标准的项目开发流程
-
准备了与LLM集成的接口
九、下一步计划
短期优化
-
添加更多测试用例
-
优化解析准确率
-
支持更多DeFi操作类型
中期扩展
-
集成实时价格查询
-
添加路由优化算法
-
支持多链部署配置
长期规划
-
集成实际交易执行
-
添加风险管理功能
-
构建完整的DeFi Agent系统
十、总结
通过Day 10的学习和实践,成功实现了:
-
✅ 理解DeFi意图解析的核心概念
-
✅ 创建了
parse_swap_intent工具 -
✅ 实现了结构化参数提取
-
✅ 处理了指定的测试用例
-
✅ 构建了可扩展的解析框架
这个解析器可以作为DeFi Agent的前端,为后续的智能合约调用、路由优化、交易执行等模块提供标准化的输入参数,是实现完整DeFi自动化系统的关键第一步。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)