鸿蒙平台集成 tavily_dart 进行 AI 语义搜索
在鸿蒙上做智能助理或垂直知识类应用,实时获取互联网的结构化信息是绕不开的环节。传统的关键词搜索往往带回大量噪音,直接喂给 LLM 不仅浪费 Token,更容易引发幻觉。
tavily_dart 是一个专门为 AI 场景设计的搜索客户端,背后对接 Tavily 的 LLM 优化搜索引擎。它能自动完成网页抓取、内容去重和摘要生成,返回干净的结构化数据。配合鸿蒙的异步能力,可以让应用具备'动态联网'的特性,同时又保持界面流畅。
它是怎么工作的
整体流程不算复杂:查询意图经 tavily_dart 格式化后发送给 Tavily 服务,服务端根据语义召回网页并进行清洗、摘要,最后返回结构化的 JSON,同时附带引用来源。
graph TD
A[自然语言查询意图 User Query] --> B[Tavily 客户端解析器]
B --> C{AI 搜索策略引擎}
C -- 高级搜索 Advanced Search --> D[网页全量抓取与语义解析]
C -- 基础检索 Basic Retrieval --> E[标题与摘要提取]
D & E --> F[内容重排序与去噪 Re-ranking]
F --> G[生成符合 LLM 格式的上下文 JSON]
G --> H[注入鸿蒙端 AI 业务逻辑层]
H --> I[鸿蒙 UI 智能回复呈现]
J[多维度引用来源记录 Citations] -.-> G
集成配置
在 pubspec.yaml 中添加依赖:
dependencies:
tavily_dart: ^0.1.0
如果是面向政务、医疗等场景,建议在初始化时开启 include_answer。这样一来,客户端可以先拿到 Tavily 生成的预置回复,在本地模型未完全加载时提供快速响应,对用户体验比较友好。
另外,鸿蒙端访问外部 API 可能受网络代理影响,记得在 ClientInfo 里注入准确的地理位置标识,有助于提高本地化搜索精度。
关键 API
tavily_dart 的核心就是 TavilyClient 和 search() 方法。返回的 SearchResult 包含标题、URL、评分和正文片段。下表列了最常用的几个:
| 类/方法 | 用途 | 说明 |
|---|---|---|
TavilyClient | 客户端封装 | 管理 API Key,所有搜索请求的入口 |
search() | 执行搜索 | 可配置深度(SearchDepth)、结果数量等 |
SearchResult | 搜索结果对象 | 含 title、url、content、score 等字段 |
一个简单的使用示例:
import 'package:tavily_dart/tavily_dart.dart';
final client = TavilyClient(apiKey: 'your_api_key_here');
final response = await client.search(
query: 'OpenHarmony NEXT 最新技术趋势',
searchDepth: SearchDepth.advanced,
maxResults: 5,
);
print('找到 ${response.results.length} 条结果');
for (var r in response.results) {
print('${r.title} (评分: ${r.score})');
}


