julio-balladares/deepresearch
GitHub: julio-balladares/deepresearch
一个 AI 辅助的 OSINT 研究工具包,通过自动生成查询、抓取公开网页证据并借助多种大模型返回结构化研究结果。
Stars: 1 | Forks: 0
# DeepResearch
DeepResearch 是一个 AI 辅助的 OSINT 研究工具包。它可以生成搜索查询,
通过 SerpApi 收集公开的网络证据,读取来源内容,并返回
结构化的研究结果。
## 功能
- 可插拔的 AI 提供商:OpenAI、Anthropic Claude、Gemini、Mistral、DeepSeek、
xAI、OpenRouter、Perplexity 以及本地的 Ollama。
- 基于 SerpApi 的搜索,支持 Google、Bing、Yahoo、DuckDuckGo 和 Yandex 搜索引擎。
- 使用 Pydantic 构建的结构化请求与结果模型。
- 针对搜索、页面读取和 AI 响应的本地缓存。
- 提供用于嵌入其他 Python 应用的 Router 和服务 API。
## 安装
```
pip install .
```
使用 uv 进行开发:
```
uv sync
uv run python -m unittest discover -s tests
```
## 配置
必需的环境变量:
```
SERPAPI_KEY=your_serpapi_key
LLM_PROVIDER=openai
MODEL_NAME=openai/gpt-4.1-mini
OPENAI_API_KEY=your_openai_api_key
```
### Linux 和 macOS
对于 Bash 或 Zsh:
```
export SERPAPI_KEY="your_serpapi_key"
export LLM_PROVIDER="openai"
export MODEL_NAME="openai/gpt-4.1-mini"
export OPENAI_API_KEY="your_openai_api_key"
```
要使这些变量永久生效,请将它们添加到 `~/.bashrc`、`~/.zshrc` 或对应的 shell 配置文件中:
```
echo 'export SERPAPI_KEY="your_serpapi_key"' >> ~/.bashrc
echo 'export LLM_PROVIDER="openai"' >> ~/.bashrc
echo 'export MODEL_NAME="openai/gpt-4.1-mini"' >> ~/.bashrc
echo 'export OPENAI_API_KEY="your_openai_api_key"' >> ~/.bashrc
source ~/.bashrc
```
如果你使用 Zsh,请将 `~/.bashrc` 替换为 `~/.zshrc`。
### Windows PowerShell
```
$env:SERPAPI_KEY = "your_serpapi_key"
$env:LLM_PROVIDER = "openai"
$env:MODEL_NAME = "openai/gpt-4.1-mini"
$env:OPENAI_API_KEY = "your_openai_api_key"
```
这些 PowerShell 变量仅在当前终端会话中有效。
支持的提供商变量:
| 提供商 | `LLM_PROVIDER` | API key 变量 | `MODEL_NAME` 示例 |
| --- | --- | --- | --- |
| OpenAI / GPT | `openai` | `OPENAI_API_KEY` | `openai/gpt-4.1-mini` |
| Claude | `anthropic` | `ANTHROPIC_API_KEY` | `anthropic/claude-3-5-sonnet-latest` |
| Gemini | `gemini` | `GEMINI_API_KEY` | `gemini/gemini-2.5-flash` |
| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-small-latest` |
| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek/deepseek-chat` |
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-3-mini` |
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/openai/gpt-4.1-mini` |
| Perplexity | `perplexity` | `PERPLEXITY_API_KEY` | `perplexity/sonar` |
| Ollama | `ollama` | 无需配置 | `ollama/llama3.1` |
可选变量:
```
MAX_ROUNDS=2
MAX_SOURCES=20
MAX_SOURCES_PER_QUERY=5
MAX_QUERIES=12
QUERIES_PER_SUBQUESTION=2
MAX_CHARS_PER_SOURCE=6000
MAX_FINAL_CONTEXT_CHARS=16000
LLM_TIMEOUT=20
USE_CACHE=true
DEEPRESEARCH_HOME=/path/for/cache
```
提供商的 base URL 也可以通过变量进行覆盖,例如
`OPENAI_BASE_URL`、`ANTHROPIC_BASE_URL`、`GEMINI_BASE_URL` 和
`OLLAMA_BASE_URL`。
## 用法
```
from deepresearch import ResearchRequest, run_deep_research
request = ResearchRequest(
topic="Ada Lovelace public biographies",
engine="google",
max_queries=4,
max_sources=10,
)
result = run_deep_research(request)
print(result.model_dump_json(indent=2))
```
Router API:
```
from deepresearch import route_from_dict
result = route_from_dict(
{
"topic": "Ada Lovelace public biographies",
"engine": "google",
"max_queries": 4,
"max_sources": 10,
}
)
```
## 结果示例
```
{
"topic": "Ada Lovelace public biographies",
"target_profile": {
"raw_topic": "Ada Lovelace public biographies",
"search_name": "Ada Lovelace",
"identity_hints": []
},
"created_at": "2026-07-10T18:30:00+00:00",
"duration_seconds": 8.421,
"model": "openai/gpt-4.1-mini",
"engine": "google",
"settings": {
"max_rounds": 2,
"max_sources": 10,
"max_queries": 4,
"fetch_pages": true
},
"plan": {
"topic": "Ada Lovelace",
"subquestions": [
"Which public profiles appear related to Ada Lovelace?",
"Which public documents contain relevant mentions of Ada Lovelace?"
],
"rationale": "Analysis plan for reviewing collected public OSINT search results."
},
"query_plans": [
{
"round": 1,
"queries": [
"\"Ada Lovelace\"",
"Ada Lovelace biography"
]
}
],
"rounds": [
{
"round": 1,
"queries": 2,
"new_sources": 5,
"sources_collected": 5,
"gaps_remaining": 1
}
],
"gap_report": {
"gaps": []
},
"sources": [
{
"title": "Ada Lovelace - Biography",
"url": "https://example.org/ada-lovelace",
"domain": "example.org",
"snippet": "A public biography of Ada Lovelace...",
"query": "\"Ada Lovelace\"",
"subquestion": "Which public profiles appear related to Ada Lovelace?",
"fetched": true,
"source_type": "web"
}
]
}
```
## 开发
运行测试:
```
python -m unittest discover -s tests
```
编译检查:
```
python -m compileall deepresearch tests
```
## 许可证
[MIT](LICENSE)
标签:AI辅助研究, AI风险缓解, DLL 劫持, ESC4, OSINT, Python, SerpApi, 动态调用, 大语言模型, 实时处理, 无后门, 特征识别, 逆向工具