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, 动态调用, 大语言模型, 实时处理, 无后门, 特征识别, 逆向工具