level09/qarina
GitHub: level09/qarina
Qarina 是一款面向人权调查员的证据级 AI 研究助手,能够自动搜集多源信息并生成附带完整引用和归档记录的结构化报告。
Stars: 0 | Forks: 0
# Qarina
**qarina** (قرينة):阿拉伯语法律术语,指旁证。指向真相的证据,但在证明任何事情之前必须经过核实。
为人权调查员提供的证据级 AI 研究助手。输入一个问题,即可获得包含图像、视频、新闻、文档和社交媒体帖子的报告,以及一份方法记录:引用了每一个来源,将每一页归档到 Wayback Machine,对每份报告进行了哈希处理。单个 HTML 文件,无框架,通过 WebSocket 流式传输结果。
网站:[qarina.org](https://qarina.org)
**AI 寻找线索。人类确立事实。**
## 快速开始
```
cp .env.example .env
# 使用你的 OpenRouter 和 Serper 密钥编辑 .env
uv sync
uv run python main.py
# 打开 http://localhost:8000
```
## 功能介绍
输入一个研究查询。Agent 将会:
1. 使用 Perplexity Sonar(带引用的 AI 网络搜索)研究该主题
2. 查找相关图像、视频、新闻文章和 PDF 文档
3. 在编写报告之前,运行确定性的偏向 YouTube 的视频通道
4. 为 YouTube 结果构建面向证据的档案,包含带时间戳的转录文本、元数据、缩略图和验证轴
5. 可选地搜索社交媒体(Twitter/X、Facebook、Reddit、Telegram)
6. 生成一份内嵌所有媒体的结构化报告
所有内容均实时流式传输。您可以实时看到每一次工具调用。
## 工具
| 工具 | 功能描述 | 来源 | 成本 |
|------|-------------|--------|------|
| 网络研究 | AI 驱动的带引用搜索 | 通过 OpenRouter 的 Perplexity Sonar Pro | Token 成本加上 Perplexity 搜索请求费 |
| 图像 | 照片、图表、视觉证据 | Serper | Serper 查询额度 |
| 视频 | 带有缩略图的视频结果 | Serper + YouTube | Serper 查询额度 |
| 视频档案 | YouTube 元数据、带时间戳的转录文本、缩略图、验证轴 | YouTube oEmbed + youtube-transcript-api | 免费 |
| 新闻 | 近期新闻报道 | Serper | Serper 查询额度 |
| 文档 | PDF、报告、论文 | Serper | Serper 查询额度 |
| 读取页面 | 作为 markdown 的完整页面内容 | Jina Reader | 免费 |
| 视频转录 | YouTube 视频转录文本 | youtube-transcript-api | 免费 |
| X/Twitter | 公开的 X 帖子和讨论搜索 | 通过 OpenRouter xAI 原生网络/X 搜索的 Grok 4.20 | xAI 模型 Token 加上原生搜索费 |
| 其他社交媒体 | Facebook、Reddit、Telegram、Instagram 搜索 | 带有站点过滤器的 Serper | Serper 查询额度 |
## 配置
`.env` 文件:
```
OPENROUTER_API_KEY=sk-or-v1-... # Required. Get one at openrouter.ai
SERPER_API_KEY=... # Required for images/videos/news/docs/social. Get one at serper.dev
MODEL=google/gemini-2.5-flash # Orchestrator model. UI selection overrides this per run.
```
### Orchestrator 模型
`MODEL` 控制由哪个 LLM 决定调用什么工具并编写最终报告。它不进行网络研究(那是 Sonar 的工作)。任何 OpenRouter 模型都可以工作:
```
MODEL=google/gemini-2.5-flash # Default. Good tool calling, long context, balanced cost.
MODEL=deepseek/deepseek-v4-flash # Cheapest current DeepSeek V4 option for routine runs.
MODEL=deepseek/deepseek-v4-pro # Stronger DeepSeek V4 option for hard synthesis.
MODEL=anthropic/claude-haiku-4.5 # Fast Claude option, higher token cost than V4 Flash.
```
浏览器中的模型选择器目前公开了相同的集合。在更改模型 ID 时,请保持 `.env.example`、`agent.py` 和 `index.html` 同步。
### Key 和成本模型
为了使用完整的应用,您需要两个付费的 API key:
- `OPENROUTER_API_KEY` 支付 orchestrator 模型、Perplexity Sonar Pro 网络研究和由 Grok 驱动的 X/Twitter 搜索的费用。
- `SERPER_API_KEY` 支付 Google Search API 通道的费用:图像、视频、新闻、文档和非 X 社交搜索。
免费/无需 key 的通道:
- Jina Reader 通过 `https://r.jina.ai/` 用于页面提取。
- YouTube oEmbed 和 `youtube-transcript-api` 在有公开字幕时用于视频档案和转录文本。
2026 年 5 月 11 日查询的大致公开定价:
- OpenRouter 上的 Gemini 2.5 Flash:输入 $0.30/百万 Token,输出 $2.50/百万 Token。
- OpenRouter 上的 DeepSeek V4 Flash:输入 $0.14/百万 Token,输出 $0.28/百万 Token。
- OpenRouter 上的 DeepSeek V4 Pro:输入 $0.435/百万 Token,输出 $0.87/百万 Token。
- OpenRouter 上的 Claude Haiku 4.5:输入 $1/百万 Token,输出 $5/百万 Token。
- Perplexity Sonar Pro:输入 $3/百万 Token,输出 $15/百万 Token,外加按搜索上下文收取的请求费。
- OpenRouter 上的 Grok 4.20:输入 $2/百万 Token,输出 $6/百万 Token。原生网络/X 搜索可能会增加提供商的搜索费用。
- Serper:预付额度,目前从起步层级的约每 1,000 次查询 $1.00 到大批量层级的约每 1,000 次查询 $0.30 不等。
成本会因查询长度、工具调用次数、模型选择和提供商定价变化而异。在承诺固定的单份报告价格之前,请查看 OpenRouter、Perplexity、xAI 和 Serper。
## 架构
```
Browser (index.html)
|
WebSocket
|
main.py (Starlette server)
|
agent.py (tool-calling loop)
|
+-- Perplexity Sonar (web research)
+-- Serper (images, videos, news, docs, social)
+-- Jina Reader (page scraping)
+-- YouTube oEmbed + youtube-transcript-api (video dossiers)
+-- Grok 4.20 via OpenRouter native web/X search (Twitter/X search)
```
LLM 调用通过 OpenRouter 进行。媒体和非 X 社交搜索使用 Serper。X/Twitter 搜索使用启用了 OpenRouter 原生网络/X 搜索插件的 xAI Grok 模型。媒体结果在 agent 循环期间收集并在服务器端注入,因此无论 LLM 生成什么内容,它们总是能正确渲染。
## 视频证据档案
视频搜索在 LLM 报告阶段之前运行,使用原始查询加上 YouTube/以证据为中心的变体。它会自动丰富可能的 YouTube 结果,提供:
- 视频 ID、URL、标题、频道/来源、发布日期、时长
- 有字幕时提供带时间戳的转录文本
- 缩略图 URL 和反向图像搜索轴
- UI 中可下载的证据 JSON 包
## 文件
```
agent.py # Agent logic, tools, LLM loop
main.py # WebSocket server
index.html # UI (single file, no framework)
.env # API keys and config
pyproject.toml
```
标签:AI研究助手, ESC4, OSINT, Python, WebSocket, 人权调查, 依赖分析, 信息验证, 无后门, 证据固定, 逆向工具