cloudwego / cloudwego/eino-ext

[Feature Request] add serply search tool

Open
#973 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
811
Forks
368
Avg merge
16h 22m
Merged PRs (30d)
13

Description

**Feature Request**

Add a Serply search tool to `components/tool`, alongside the existing bingsearch, googlesearch, searxng and wikipedia tools.

Serply (https://serply.io) is a SERP API that returns Google web, Google News and Google Scholar results as JSON behind one API key. The news and scholar endpoints are the useful part for agents: the current tools cover general web search, but there is no tool for recent news or for academic papers with authors and citation counts.

**Describe the solution you'd like**

A `components/tool/serply` module that implements `tool.InvokableTool` via `utils.InferTool`, following the wikipedia and bingsearch tools: a `Config` with `APIKey`, `BaseURL`, `SearchType` (web, news, scholar), `Num`, `Headers`, `Timeout` and `HttpClient`, and a normalized `SearchResult` (title, link, description, plus source and published for news, authors and cited_by for scholar).

**Additional context**

I work with Serply. The module is implemented and tested (httptest server, no network in tests) in my fork and I will open a PR referencing this issue: https://github.com/googio/eino-ext/tree/feat/serply-search/components/tool/serply

Contributor guide

Open the contributing guide

Research direction

Start in components/tool and compare the existing bingsearch, googlesearch, searxng, and wikipedia tools with the Serply module in the linked fork. Review the fork's implementation and httptest coverage first; done means the requested web, news, and scholar search types and normalized results are covered without network access in tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.