开源 替代 Gemini 的深度研究。基于搜索结果生成报告,采用 AI 技术。
A powerful open-source research assistant that generates comprehensive AI-powered reports from web search results. Unlike other Deep Research solutions, it provides seamless integration with multiple AI platforms including Google, OpenAI, Anthropic, DeepSeek, and even local models - giving you the freedom to choose the perfect AI model for your specific research requirements.
This app functions in three key steps:
Open Deep Research combines powerful tools to streamline research and report creation in a user-friendly, open-source platform. You can customize the app to your needs (select your preferred search provider, AI model, customize prompts, update rate limits, and configure the number of results both fetched and selected).
The app supports analyzing local files for research and report generation. You can:
To use local files:
The Knowledge Base feature allows you to:
The Flow feature enables deep, recursive research by allowing you to:
Key capabilities:
The Flow interface makes it easy to:
This feature is perfect for:
The app's settings can be customized through the configuration file at lib/config.ts. Here are the key parameters you can adjust:
Control rate limiting and the number of requests allowed per minute for different operations:
rateLimits: {
enabled: true, // Enable/disable rate limiting (set to false to skip Redis setup)
search: 5, // Search requests per minute
contentFetch: 20, // Content fetch requests per minute
reportGeneration: 5, // Report generation requests per minute
}
Note: If you set enabled: false, you can run the application without setting up Redis. This is useful for local development or when you don't need rate limiting.
The app supports both Google Custom Search and Bing Search APIs. You can configure your preferred search provider in lib/config.ts:
search: {
resultsPerPage: 10,
maxSelectableResults: 3,
provider: 'google', // 'google' or 'bing'
safeSearch: {
google: 'active', // 'active' or 'off'
bing: 'moderate' // 'moderate', 'strict', or 'off'
},
market: 'en-US',
}
To use Google Custom Search:
.env.local file:GOOGLE_SEARCH_API_KEY="your-api-key"
GOOGLE_SEARCH_CX="your-cx-id"
To use Bing Search:
.env.local file:AZURE_SUB_KEY="your-azure-key"
The Knowledge Base feature allows you to build a personal research library by:
Reports saved to the Knowledge Base include:
You can access your Knowledge Base through the dedicated button in the UI, which opens a sidebar containing all your saved reports.
Configure which AI platforms and models are available. The app supports multiple AI platforms (Google, OpenAI, Anthropic, DeepSeek) with various models for each platform. You can enable/disable platforms and individual models based on your needs:
…
For each platform:
enabled: Controls whether the platform is availableenabled: Controls whether the specific model is selectablelabel: The display name shown in the UIDisabled models will appear grayed out in the UI but remain visible to show all available options. This allows users to see the full range of available models while clearly indicating which ones are currently accessible.
To modify these settings, update the values in lib/config.ts. The changes will take effect after restarting the development server.
OpenRouter provides access to various AI models through a unified API. By default, it's set to 'auto' mode which automatically selects the most suitable model, but you can configure it to use specific models of your choice by modifying the models section in the configuration.
When using advanced reasoning models like OpenAI's o1 or DeepSeek Reasoner, you may need to increase the serverless function duration limit as these models typically take longer to generate comprehensive reports. The default duration might not be sufficient.
For Vercel deployments, you can increase the duration limit in your vercel.json:
{
"functions": {
"app/api/report/route.ts": {
"maxDuration": 120
}
}
}
Or modify the duration in your route file:
// In app/api/report/route.ts
export const maxDuration = 120 // Set to 120 seconds or higher
Note: The maximum duration limit may vary based on your hosting platform and subscription tier.
The app supports local model inference through Ollama integration. You can:
ollama pull model-namelib/config.ts:platforms: {
ollama: {
enabled: true,
models: {
'your-model-name': {
enabled: true,
label: 'Your Model Display Name'
}
}
}
}
Local models through Ollama bypass rate limiting since they run on your machine. This makes them perfect for development, testing, or when you need unlimited generations.
git clone https://github.com/btahir/open-deep-research
cd open-deep-research
npm install
# or
yarn install
# or
pnpm install
# or
bun install
.env.local file in the root directory:…
Note: You only need to provide API keys for the platforms you plan to use. If a platform is enabled in the config but its API key is missing, those models will appear disabled in the UI.
You can run the application either directly on your machine or using Docker.
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
If you prefer using Docker, you can build and run the application in a container after setting up your environment variables:
docker build -t open-deep-research:v1 .
docker run -p 3000:3000 open-deep-research
The application will be available at http://localhost:3000.
You'll need two components to use Google Custom Search:
Get API Key:
GOOGLE_SEARCH_API_KEY environment variableGet Search Engine ID (CX):
cx parameter) for the GOOGLE_SEARCH_CX environment variable暂无开放 Issues,或尚未同步最近议题。