Tool - DuckDuckGoSearch
基本介绍
DuckDuckGo 搜索工具是 Tool InvokableTool 接口的一个实现,用于通过 DuckDuckGo 搜索引擎进行网络搜索,DuckDuckGo 是一个注重隐私的搜索引擎,不会追踪用户的搜索行为,重点是无需 api key 鉴权即可直接使用。该组件实现了 Eino: ToolsNode 使用说明
使用方式
组件初始化
DuckDuckGo 搜索工具通过 NewTool
函数进行初始化,主要配置参数如下:
tool, err := NewTool(ctx, &Config{
ToolName: "duckduckgo_search", // 工具名称
ToolDesc: "search web for information by duckduckgo", // 工具描述
Region: ddgsearch.RegionWT, // 搜索地区
MaxResults: 10, // 每页结果数量
SafeSearch: ddgsearch.SafeSearchOff, // 安全搜索级别
TimeRange: ddgsearch.TimeRangeAll, // 时间范围
DDGConfig: &ddgsearch.Config{}, // DuckDuckGo 配置
})
搜索参数
搜索请求支持以下参数:
type SearchRequest struct {
Query string `json:"query"` // 搜索关键词
Page int `json:"page"` // 页码
}
完整使用示例
package main
import (
"context"
"github.com/cloudwego/eino-ext/components/tool/duckduckgo"
"github.com/cloudwego/eino-ext/components/tool/duckduckgo/ddgsearch"
)
func main() {
ctx := context.Background()
// 初始化搜索工具
searchTool, err := duckduckgo.NewTool(ctx, &duckduckgo.Config{
Region: ddgsearch.RegionWT,
MaxResults: 10,
SafeSearch: ddgsearch.SafeSearchOff,
TimeRange: ddgsearch.TimeRangeAll,
})
if err != nil {
panic(err)
}
// 准备搜索请求
request := &SearchRequest{
Query: "Golang concurrent programming",
Page: 1,
}
// 执行搜索
result, err := searchTool.Search(ctx, request)
if err != nil {
panic(err)
}
// 处理搜索结果
println(result) // JSON 格式的搜索结果
}
搜索结果示例
{
"results": [
{
"title": "Go 并发编程实践",
"description": "这是一篇关于 Go 语言并发编程的文章...",
"link": "https://example.com/article1"
},
{
"title": "Understanding Concurrency in Go",
"description": "A comprehensive guide to concurrent programming...",
"link": "https://example.com/article2"
}
]
}
相关文档
最后修改
January 9, 2025
: feat: add eino cn docs (#1182) (ad75444)