search

package
v0.5.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

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

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) Name

func (a *AggregatedSearch) Name() string

Name 工具名称

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 NewBingSearch

func NewBingSearch(apiKey string) *BingSearch

NewBingSearch 创建 Bing 搜索工具

func (*BingSearch) Description

func (b *BingSearch) Description() string

Description 工具描述

func (*BingSearch) Execute

func (b *BingSearch) Execute(ctx context.Context, args map[string]any) (any, error)

Execute 执行工具

func (*BingSearch) Name

func (b *BingSearch) Name() string

Name 工具名称

func (*BingSearch) Schema

func (b *BingSearch) Schema() map[string]any

Schema 返回工具的 JSON Schema

func (*BingSearch) Search

func (b *BingSearch) Search(ctx context.Context, query string, config *SearchConfig) (*SearchResponse, error)

Search 执行 Bing 搜索

func (*BingSearch) Validate

func (b *BingSearch) Validate(args map[string]any) error

Validate 验证参数

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) Execute

func (d *DuckDuckGoSearch) Execute(ctx context.Context, args map[string]any) (any, error)

Execute 执行工具

func (*DuckDuckGoSearch) Name

func (d *DuckDuckGoSearch) Name() string

Name 工具名称

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 搜索

func (*DuckDuckGoSearch) Validate

func (d *DuckDuckGoSearch) Validate(args map[string]any) error

Validate 验证参数

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) Description

func (g *GoogleSearch) Description() string

Description 工具描述

func (*GoogleSearch) Execute

func (g *GoogleSearch) Execute(ctx context.Context, args map[string]any) (any, error)

Execute 执行工具(Tool 接口实现)

func (*GoogleSearch) Name

func (g *GoogleSearch) Name() string

Name 工具名称

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 搜索

func (*GoogleSearch) Validate

func (g *GoogleSearch) Validate(args map[string]any) error

Validate 验证参数

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 搜索配置

func DefaultSearchConfig

func DefaultSearchConfig() *SearchConfig

DefaultSearchConfig 默认搜索配置

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) Description

func (t *TavilySearch) Description() string

Description 工具描述

func (*TavilySearch) Execute

func (t *TavilySearch) Execute(ctx context.Context, args map[string]any) (any, error)

Execute 执行工具

func (*TavilySearch) Name

func (t *TavilySearch) Name() string

Name 工具名称

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 搜索

func (*TavilySearch) Validate

func (t *TavilySearch) Validate(args map[string]any) error

Validate 验证参数

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL