Skip to content

Allow using another web provider than Firecrawl #204

@Tketa

Description

@Tketa

Hi team,

First of all, thanks for this framework. It's a great starting point and I've been using it for some pharmaceutical analysis use-cases I have.

I've been using Linkup as my web search provider. It's fairly cheap (0.005$ per standard query and has a "deep search" mode for 0.05$ per query). Also it's French 🇫🇷

On my local repo I implemented that by adding a WEB_PROVIDER env variable to manually select linkup (firecrawl being the default for backward compatibility). You can basically get the idea from this PR

I created a tools/web-providers.ts file that defines a common interface and creates the implementation for both providers. That interface will now be used by tools/web.ts so there's a bit of code changes there

export interface WebClient {
  fetch(url: string): Promise<FetchResult>;
  search(query: string, count: number): Promise<SearchResponse>;
}

Alternatively we could have tools/web-providers/{types,firecrawl,linkup.ts} if we don't want it all in one file.

What do you think about this? Let me know if I can make a PR in this direction.

Also, are you planning on implementing tests at some point? There is no tests or CI at the moment, which would be better in case you want people to start contributing I believe. In my PR I initially included some tests using vitest but since it's quite opinionated it's probably better if you decide what you want to use / some guidelines and I'd align with this?

Thanks in advance,
Jérémy

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions