Documentation
¶
Overview ¶
Package search 提供搜索引擎工具
本包实现了多种搜索引擎工具:
- Google Search: Google 搜索 API
- Bing Search: Bing 搜索 API
- DuckDuckGo: DuckDuckGo Instant Answer API
- SerpAPI: SerpAPI 统一搜索接口
- Tavily: Tavily AI 搜索
设计借鉴:
- LangChain: SearchTools
- AutoGPT: Web Search
使用示例:
google := search.NewGoogleSearch(apiKey, cseID)
results, err := google.Execute(ctx, map[string]any{"query": "AI news"})
Index ¶
- Variables
- type AggregatedSearch
- type BingSearch
- func (b *BingSearch) Description() string
- func (b *BingSearch) Execute(ctx context.Context, args map[string]any) (any, error)
- func (b *BingSearch) Name() string
- func (b *BingSearch) Schema() map[string]any
- func (b *BingSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
- func (b *BingSearch) Validate(args map[string]any) error
- type DuckDuckGoSearch
- func (d *DuckDuckGoSearch) Description() string
- func (d *DuckDuckGoSearch) Execute(ctx context.Context, args map[string]any) (any, error)
- func (d *DuckDuckGoSearch) Name() string
- func (d *DuckDuckGoSearch) Schema() map[string]any
- func (d *DuckDuckGoSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
- func (d *DuckDuckGoSearch) Validate(args map[string]any) error
- type GoogleSearch
- func (g *GoogleSearch) Description() string
- func (g *GoogleSearch) Execute(ctx context.Context, args map[string]any) (any, error)
- func (g *GoogleSearch) Name() string
- func (g *GoogleSearch) Schema() map[string]any
- func (g *GoogleSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
- func (g *GoogleSearch) Validate(args map[string]any) error
- type SearchConfig
- type SearchResponse
- type SearchResult
- type SearchTool
- type TavilySearch
- func (t *TavilySearch) Description() string
- func (t *TavilySearch) Execute(ctx context.Context, args map[string]any) (any, error)
- func (t *TavilySearch) Name() string
- func (t *TavilySearch) Schema() map[string]any
- func (t *TavilySearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
- func (t *TavilySearch) Validate(args map[string]any) error
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrSearchFailed 搜索失败 ErrSearchFailed = errors.New("search failed") // ErrRateLimited 被限流 ErrRateLimited = errors.New("rate limited") // ErrInvalidAPIKey 无效的 API Key ErrInvalidAPIKey = errors.New("invalid API key") // ErrNoResults 无搜索结果 ErrNoResults = errors.New("no results found") )
Functions ¶
This section is empty.
Types ¶
type AggregatedSearch ¶
type AggregatedSearch struct {
// contains filtered or unexported fields
}
AggregatedSearch 聚合搜索工具 同时使用多个搜索引擎并合并结果
func NewAggregatedSearch ¶
func NewAggregatedSearch(engines ...SearchTool) *AggregatedSearch
NewAggregatedSearch 创建聚合搜索工具
func (*AggregatedSearch) Description ¶
func (a *AggregatedSearch) Description() string
Description 工具描述
func (*AggregatedSearch) Search ¶
func (a *AggregatedSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
Search 执行聚合搜索
type BingSearch ¶
type BingSearch struct {
// contains filtered or unexported fields
}
BingSearch Bing 搜索工具
func (*BingSearch) Search ¶
func (b *BingSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
Search 执行 Bing 搜索
type DuckDuckGoSearch ¶
type DuckDuckGoSearch struct {
// contains filtered or unexported fields
}
DuckDuckGoSearch DuckDuckGo 搜索工具
func NewDuckDuckGoSearch ¶
func NewDuckDuckGoSearch() *DuckDuckGoSearch
NewDuckDuckGoSearch 创建 DuckDuckGo 搜索工具
func (*DuckDuckGoSearch) Description ¶
func (d *DuckDuckGoSearch) Description() string
Description 工具描述
func (*DuckDuckGoSearch) Schema ¶
func (d *DuckDuckGoSearch) Schema() map[string]any
Schema 返回工具的 JSON Schema
func (*DuckDuckGoSearch) Search ¶
func (d *DuckDuckGoSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
Search 执行 DuckDuckGo 搜索
type GoogleSearch ¶
type GoogleSearch struct {
// contains filtered or unexported fields
}
GoogleSearch Google 搜索工具
func NewGoogleSearch ¶
func NewGoogleSearch(apiKey, cseID string) *GoogleSearch
NewGoogleSearch 创建 Google 搜索工具
参数:
- apiKey: Google API Key
- cseID: Custom Search Engine ID
func (*GoogleSearch) Schema ¶
func (g *GoogleSearch) Schema() map[string]any
Schema 返回工具的 JSON Schema
func (*GoogleSearch) Search ¶
func (g *GoogleSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
Search 执行 Google 搜索
type SearchConfig ¶
type SearchConfig struct {
// MaxResults 最大结果数
MaxResults int `json:"max_results"`
// Language 语言
Language string `json:"language"`
// Region 地区
Region string `json:"region"`
// SafeSearch 安全搜索级别
SafeSearch string `json:"safe_search"`
// TimeRange 时间范围
TimeRange string `json:"time_range"`
// Timeout 超时时间
Timeout time.Duration `json:"timeout"`
}
SearchConfig 搜索配置
type SearchResponse ¶
type SearchResponse struct {
// Results 搜索结果列表
Results []SearchResult `json:"results"`
// TotalResults 总结果数
TotalResults int64 `json:"total_results"`
// SearchTime 搜索耗时(毫秒)
SearchTime int64 `json:"search_time_ms"`
// Query 原始查询
Query string `json:"query"`
// Source 搜索源
Source string `json:"source"`
}
SearchResponse 搜索响应
type SearchResult ¶
type SearchResult struct {
// Title 标题
Title string `json:"title"`
// Link URL 链接
Link string `json:"link"`
// Snippet 摘要片段
Snippet string `json:"snippet"`
// Source 来源
Source string `json:"source"`
// PublishedDate 发布日期
PublishedDate string `json:"published_date,omitempty"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
}
SearchResult 搜索结果
type SearchTool ¶
type SearchTool interface {
// Name 工具名称
Name() string
// Description 工具描述
Description() string
// Search 执行搜索
Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
}
SearchTool 搜索工具接口
type TavilySearch ¶
type TavilySearch struct {
// contains filtered or unexported fields
}
TavilySearch Tavily AI 搜索工具
func NewTavilySearch ¶
func NewTavilySearch(apiKey string) *TavilySearch
NewTavilySearch 创建 Tavily 搜索工具
func (*TavilySearch) Schema ¶
func (t *TavilySearch) Schema() map[string]any
Schema 返回工具的 JSON Schema
func (*TavilySearch) Search ¶
func (t *TavilySearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)
Search 执行 Tavily 搜索
Click to show internal directories.
Click to hide internal directories.