0.0.3 • Published 5 months ago
@agent-infra/search v0.0.3
@agent-infra/search
An isomorphic search client that unifies multiple search providers into a single API.
Features
- Multi-provider support: Use Browser Search, Bing Search, or Tavily with the same interface
- Unified API: Consistent response format across all providers
- Configurable: Customize search parameters for each provider
- Type-safe: Full TypeScript support with comprehensive type definitions
Installation
npm install @agent-infra/search
# or
yarn add @agent-infra/search
# or
pnpm add @agent-infra/search
Usage
Basic Search
import { Search, SearchProvider } from '@agent-infra/search';
// Create a search client with your preferred provider
const client = new SearchClient({
provider: SearchProvider.BingSearch,
providerConfig: {
apiKey: 'YOUR_API_KEY',
},
});
// Perform a search
const results = await client.search({
query: 'climate change',
limit: 5,
});
console.log(results);
Switch Between Providers
import { Search, SearchProvider } from '@agent-infra/search';
// Create search instances for different providers
const bingSearch = new SearchClient({
provider: SearchProvider.BingSearch,
providerConfig: {
apiKey: 'YOUR_BING_API_KEY',
},
});
const tavilySearch = new SearchClient({
provider: SearchProvider.Tavily,
providerConfig: {
apiKey: 'YOUR_TAVILY_API_KEY',
},
});
// Use browser search in browser environments
const browserSearch = new SearchClient({
provider: SearchProvider.BrowserSearch,
providerConfig: {
// ... browser search config
},
});
// Use the appropriate client based on your needs
const results = await bingSearch.search({
query: 'UI-TARS',
});
With Environment Variables
// Set in your `.zshrc` or `.bash_profile`:
// BING_SEARCH_API_KEY=your-api-key
// BING_SEARCH_API_BASE_URL=your-api-base-url
import { Search, SearchProvider } from '@agent-infra/search';
const client = new SearchClient({
provider: SearchProvider.BingSearch,
});
const results = await client.search({
query: 'UI-TARS',
});
API Reference
Search
Client
constructor(config: SearchConfig)
Configuration options:
interface SearchConfig {
provider: SearchProvider;
providerConfig?: {
[key: string]: any;
};
logger?: Logger;
}
enum SearchProvider {
BingSearch = 'bing',
Tavily = 'tavily',
BrowserSearch = 'browser',
}
search
Method
async search(
options: CommonSearchOptions,
originalOptions?: Partial<SearchProviderSearchOptionsMap[T]>,
): Promise<SearchResult>
Common search options:
export interface CommonSearchOptions {
/**
* Search query
*/
query: string;
/**
* Max search count
*/
count?: number;
}
Response Type
export type PageResult = {
title: string;
url: string;
content: string;
};
export interface SearchResult {
pages: PageResult[];
}
Provider-Specific Options
Bing Search
const client = new SearchClient({
provider: SearchProvider.BingSearch,
providerConfig: {
apiKey: 'YOUR_API_KEY',
mkt: 'en-US',
},
});
const results = await client.search(
{
query: 'UI-TARS',
count: 5,
},
// Pass Bing-specific parameter via 2nd parameter
{
mkt: 'zh-CN', // Market code
},
);
Tavily
const search = new SearchClient({
provider: SearchProvider.Tavily,
providerConfig: {
apiKey: 'YOUR_API_KEY',
},
});
const results = await search.search(
{
query: 'latest research papers',
},
// Tavily-specific parameters
{
searchDepth: 'advanced',
includeRawContent: true,
},
);
Browser Search
// Only available in browser environments
const client = new SearchClient({
provider: SearchProvider.BrowserSearch,
});
const results = await client.search(
{
query: 'UI-TARS',
count: 5,
},
// BrowserSearch-specific parameters
{
concurrency: 3,
},
);
Examples
See examples.
License
Copyright (c) 2025 ByteDance, Inc. and its affiliates.
Licensed under the Apache License, Version 2.0.
0.0.3
5 months ago
0.0.3-beta.3
5 months ago
0.0.3-beta.2
5 months ago
0.0.3-beta.1
5 months ago
0.0.2
5 months ago
0.0.2-beta.0
5 months ago
0.0.1
7 months ago