“检测结果出来了,没有一丝人工添加,全是 AI”
之前这个 Dune Query 约 95% 工作量都是由 AI 完成。这篇文章主要介绍 DuneAI ,以及如何使用 AI 高效进行提示词工程(AI 互调?)
第一部分:Dune AI 使用简单介绍
@Dune 内置的 AI 能够帮助用户使用自然语言快速生成 SQL 查询。在新建查询(Query)后可以在代码块底部看到提示词输入口
使用要点:
1. 使用英文清楚地表达想要查询的内容,提供上下文,包括数据库、时间范围、具体的合约地址、代币符号等关键信息
- 示例:"List all trades involving WETH (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) on Uniswap v3 in the past 24 hours"
2. 根据初始结果调整查询需求
- Dune AI 内置了测试用例,确保生成的查询可以正常运行
- 使用查询代码顶部"fix"功能,可以基于已有查询进行修改和微调
具体介绍可见官方文档:
第二部分:多 Agent 提示词工程
在实际工作中,单独依赖一个 AI 工具往往难以得到最佳结果。这里介绍的一套多 Agent 协作的提示词工程(Prompt Engineerimg)流程,可以显著提高查询质量和效率,并扩展到其他业务场景中
基本工作流程
1. 任务描述:首先明确表达业务需求
2. AI1处理:使用通用AI(如ChatGPT或DeepSeek)将需求转化为专业提示词
3. AI2执行:将优化后的提示词输入专业AI(如Dune AI)执行
4. 结果评估:检查初步结果是否满足需求
5. 迭代优化:根据需要调整提示词,重复上述过程
可以根据需求灵活选择贴近业务场景的 AI2,如使用 Dune AI 生成查询、 Copilot Claude 3 完成编程任务、 Grok 3 检索整理推特信息等
例如我的第一阶段提示词为:
“
我需要分析Solana链上特定代币的交易行为,找出在指定时间范围内:
1. 买入次数超过N次的地址
2. 每次买入金额大于X美元的地址
3. 净流入(总买入-总卖出)大于Y美元的地址
4. 卖出次数不超过Z次的地址
最终需要返回这些地址的详细信息,包括:
- 钱包地址
- 净流入金额
- 买入次数
- 卖出次数
- 首次交易时间
- 最后一次交易时间
- 代币地址
请帮我把这个需求转化为Dune AI能够理解的专业提示词格式,包括所有必要的模式和参数定义;使用英文;相关数据库文档:(我这里提供了 中的描述)
”
之后我对第二阶段提示词进行了微调,并交由 Dune AI 生成查询;使用的第二阶段提示词我放在了评论区
希望这一篇文章对你有帮助
(是的,这篇文章也使用了这个技巧,图都是用 AI 生成了 mermaid 语法后用 AI 画的)

第二阶段 Prompt
Scheme: `dex_solana.trades`
Scheme Attributes:
block_time: timestamp, UTC timestamp of trade
amount_usd: double, unsigned USD value of the token traded
token_bought_mint_address: string, if token_mint_address here then the trade is identified as buy
token_sold_mint_address: string, if token_mint_address here then the trade is identified as sell
trader_id: string, wallet address
token_
Required Inputs:
token_mint_address: string, solana token mint address to filter;
start_datetime: date, start time;
end_datetime: date, end time. Both in utc time;
min_num_buys: number, minimal total number of buys within the time range;
min_amount_per_buy: number, minimal amount for each buy, in USD;
min_net_inflow: number, minimal amount summing inflow(total buy - total sell), in USD;
max_num_sells: number, maximal total number of sells within the time range;
Required Output :
wallet_address: strings, wallet addresses matching above fields .
net_inflow:number, signed total inflow
num_buys: number, number of buys within time range
num_sells:number, number of sells within time range
first_trade_datetime:date, datetime first trade within the time range
last_trade_datetime:date, last trade within the time range
token_mint_address: string
Write the SQL for me given the above requirements. Wrap the input parameters using double curly brackets {{}} in the SQL lines as place holders.
18
5,189
本页面内容由第三方提供。除非另有说明,欧易不是所引用文章的作者,也不对此类材料主张任何版权。该内容仅供参考,并不代表欧易观点,不作为任何形式的认可,也不应被视为投资建议或购买或出售数字资产的招揽。在使用生成式人工智能提供摘要或其他信息的情况下,此类人工智能生成的内容可能不准确或不一致。请阅读链接文章,了解更多详情和信息。欧易不对第三方网站上的内容负责。包含稳定币、NFTs 等在内的数字资产涉及较高程度的风险,其价值可能会产生较大波动。请根据自身财务状况,仔细考虑交易或持有数字资产是否适合您。