Skip to content

[Integration] szczyglis-dev/py-gpt — You.com web search engine provider #256

Description

@mouse-value-add

Source repo

https://github.com/szczyglis-dev/py-gpt

Why selected

PyGPT is a desktop AI assistant (Python/PyQt, ~1.9k stars, MIT, pushed 2026-09-05, active release cadence with releases within the last weeks) with a first-class web search provider registry: src/pygpt_net/provider/web/ (BaseProvider → GoogleCustomSearch / MicrosoftBingSearch / DuckDuckGoSearch), registered in src/pygpt_net/app.py via launcher.add_web(...), surfaced in the Web Search plugin's provider combo + per-provider settings tab, and consumed by the plugin's web_search / web_urls commands. Adding You.com is one provider file + one import/registration pair + docs rows — the repo's own documented extension point ("can be extended with other search engine providers", docs/source/plugins.rst §Web Search).

Current providers: Google CSE (key), Bing (key), DuckDuckGo (package dep). A You.com provider adds a keyless-capable HTTP option using the repo's existing requests dependency (no new deps), with an optional YDC_API_KEY for the authenticated endpoint / higher rate limits.

Candidate evaluation summary

Candidate Stars Distribution surface Activity Verdict
szczyglis-dev/py-gpt 1901 web search provider registry (provider/web/ + app.py registration + plugin combo) pushed 2026-09-05 SELECTED — exact existing pattern, opt-in, tests available
openkursar/hello-halo 1695 desktop agent w/ built-in browser pushed 2026-09-03 rejected — license NOASSERTION, no clean provider surface found
fivetaku/gptaku_plugins 1109 Claude Code plugin marketplace pushed 2026-09-05 rejected — no LICENSE file, plugin-listing semantics unclear
trailofbits/skills-curated 495 curated Claude Code plugin marketplace pushed 2026-07-14 rejected — curation-vetted list, external additions likely out of process

Integration type

Provider adapter — new You.com web search engine provider in the repo's existing search-engine provider registry, following the microsoft_bing.py / duckduck_search.py pattern exactly.

Distribution surface leveraged

pygpt_net.provider.web.BaseProvider abstraction → app.py launcher.add_web() registration → Web Search plugin provider combo (provider option) + per-provider settings tab → web_search/web_urls commands. Docs: README "Internet access" line + docs/source/plugins.rst Web Search section.

Changes delivered

  • src/pygpt_net/provider/web/youcom_search.pyYouComSearch provider: POST to You.com MCP endpoint, tools/call you-search, maps results.web[].url → URL list; keyless by default, optional bearer auth
  • src/pygpt_net/app.py — import + launcher.add_web(YouComSearch())
  • tests/provider/web/test_youcom_search.py — 15 unit tests
  • Docs: README (3 mentions), docs/source/intro.rst (2), docs/source/plugins.rst (provider list + You.com option reference section)

Setup / env vars

  • None required for the default keyless endpoint (https://api.you.com/mcp?profile=free)
  • Optional: youcom_api_key plugin option (secret) with YDC_API_KEY env-var fallback; when set, switches to authenticated https://api.you.com/mcp + Authorization: Bearer
  • youcom_endpoint option overridable like bing_endpoint; DEFAULT_ENDPOINT class constant as defensive fallback

Usage example

Plugins → Web Search → Settings → Provider: You.com → chat "search the web for X" → web_search returns URLs from you-search, then the existing web_url_open flow reads/summarizes pages as before.

Fallback / error behavior

  • Opt-in only: default provider (google_custom_search) and all existing providers unchanged (verified: provider combo + tabs unchanged apart from the new entry)
  • HTTP errors / JSON-RPC error envelopes / exceptions → empty URL list (never raises, matching the DuckDuckGo provider pattern)
  • is_configured: keyless endpoint → always True; authenticated endpoint → requires key, otherwise the plugin's standard "set API key" dialog flow

Validation performed

  • pytest tests/provider/web/ tests/plugin/cmd_web/20/20 pass
  • flake8 clean on both new files (--max-line-length=120)
  • Live keyless end-to-end check through the provider's real HTTP path (real URLs returned; offset pagination verified)
  • Registration verified through real Web.register(): youcom_search in provider combo + settings tabs; defaults unchanged
  • Full-suite collection errors pre-existing/environmental (missing optional deps llama_index, speech_recognition; missing ~/.config/pygpt-net/path.cfg) — verified identical on unmodified master; after creating the config file, cmd_web plugin tests pass 5/5
  • Pre-push: cmd_web errors confirmed identical on unmodified master via git stash comparison

Branch / PR

Status

PR opened 2026-09-05. Awaiting maintainer review.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions