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)

三、实践作业完成情况

✅ 已完成:

  1. 完整项目结构搭建

    • 创建了模块化的代码结构

    • 配置了开发环境和依赖

  2. 核心解析器实现

    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
        }
  3. 支持的输入处理

    • ✅ "帮我在 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集成的接口

九、下一步计划

短期优化

  1. 添加更多测试用例

  2. 优化解析准确率

  3. 支持更多DeFi操作类型

中期扩展

  1. 集成实时价格查询

  2. 添加路由优化算法

  3. 支持多链部署配置

长期规划

  1. 集成实际交易执行

  2. 添加风险管理功能

  3. 构建完整的DeFi Agent系统

十、总结

通过Day 10的学习和实践,成功实现了:

  • ✅ 理解DeFi意图解析的核心概念

  • ✅ 创建了parse_swap_intent工具

  • ✅ 实现了结构化参数提取

  • ✅ 处理了指定的测试用例

  • ✅ 构建了可扩展的解析框架

这个解析器可以作为DeFi Agent的前端,为后续的智能合约调用、路由优化、交易执行等模块提供标准化的输入参数,是实现完整DeFi自动化系统的关键第一步。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐