mcp-foresea
分析LLM推理
会议工件,用于研究显式推理指令如何影响LLM在Metaculus风格二元预测问题上的预测行为。代码库包含17种提示变体、一个批量推理运行器、生成的结果表格,以及用于论文图表的绘图/分析脚本。实时Foresea API还支持预测市场情报:类型化预测、证据检索,以及二元和多选市场的模型与市场边缘分析。
实时API
部署在Google Cloud Run上——模型gpt-oss-120b,变体variant0_neutral_baseline:
https://foresea.ink(该URL在首次推送到main后打印在GitHub Actions部署步骤的输出中。)
# Health check
curl https://foresea.ink/health
# Single-record prediction
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "Will X happen by date Y?",
"question_type": "binary",
"description": "Context here.",
"news_articles": [],
"attach_evidence": true,
"evidence_top_k": 5,
"market_platform": "Polymarket",
"market_probability": 0.42,
"variant": "variant0_neutral_baseline"
}'当attach_evidence为true且未提供news_articles时,/predict默认从GDELT、Google News RSS和Stooq获取并排名当前新闻证据,将其注入模型提示,并随预测返回选定的evidence_articles。提供news_articles则跳过自动检索,使用调用方提供的证据。
响应包含预测和模型使用的证据:
{
"question_type": "binary",
"predicted_answer": "Yes",
"confidence": 0.86,
"options": [],
"range_forecast": null,
"rationale": "Model-generated explanation for the forecast.",
"model_rationale": "Model-generated explanation for the forecast.",
"variant": "variant0_neutral_baseline",
"model_key": "gpt-oss-120b",
"evidence_sources": [
{
"source": "Reuters",
"title": "Article headline",
"url": "https://example.com/article",
"publish_date": "2026-05-29T00:00:00Z",
"relevance_score": 0.82
}
],
"evidence_articles": [
{
"title": "Article headline",
"summary": "Cleaned article summary.",
"source": "Reuters",
"url": "https://example.com/article",
"publish_date": "2026-05-29T00:00:00Z",
"relevance_score": 0.82,
"search_query": "query used for retrieval"
}
],
"evidence_error": null,
"market_analysis": {
"platform": "Polymarket",
"market_url": "https://example.com/market",
"outcome": "Yes",
"market_probability": 0.42,
"model_probability": 0.86,
"edge": 0.44,
"stance": "model_above_market",
"summary": "Foresea is 44 percentage points above the market on Yes."
}
}当客户端只需要来源列表和链接时,使用evidence_sources。当客户端需要附加到模型提示的逐文章详细信息时,使用evidence_articles。rationale和model_rationale由gpt-oss-120b生成,解释模型为何选择其答案和置信度。当提供market_probability时,market_analysis根据模型概率和市场隐含概率确定性计算。
Related MCP server: SimpleFunctions
5分钟加密货币市场
src/analyzing_llm_rationale/crypto_5m.py中的本地加密货币微型市场模型专为5分钟UP/DOWN市场构建,目标是盈利的选择性交易,而非持续行动。它结合了:
收缩漂移对数正态货币性定价,
带EWMA波动率的AR(1)收益预测,
来自动量、反转、波动率制度、区间位置和成交量失衡的固定或自适应逻辑ML特征。
每个预测返回predicted_outcome、probability_up、component_probabilities、模型与市场edge,以及考虑费用的strategy。策略仅在净期望值超过费用和配置的不交易阈值时建议交易。
.venv/bin/python scripts/crypto_5m_backtest.py \
--benchmark \
--symbols BTC,ETH,SOL \
--days 1 \
--max-candles 1600 \
--lookback-minutes 60 \
--horizon-minutes 5 \
--market-probability 0.50 \
--fee-bps 2 \
--ml-modes fixed,adaptive \
--edge-thresholds 0,0.01,0.03,0.05,0.08 \
--selection-fraction 0.6 \
--folds 4 \
--training-window 120 \
--max-rows 80 \
--benchmark-log data/crypto_5m_benchmark_runs.jsonl在冒险投入资本之前,使用fold_aggregate和evidence_quality。如果选择不稳定或样本外PnL较弱,正确的盈利行动是放弃。--benchmark-log追加一条紧凑的JSONL记录,用于跟踪所选阈值和模型模式在基准运行中是否持续有效。根据Binance蜡烛图解析已完成的交易市场:
.venv/bin/python scripts/crypto_5m_backtest.py \
--resolve \
--symbol BTCUSDT \
--target-price 62400.52 \
--start-time-ms 1780000000000 \
--horizon-minutes 5 \
--predicted-outcome down解析器在到期前返回pending,之后返回resolved,并带有actual_outcome、resolved_price和prediction_correct。
随时间记录和解析纸面信号:
.venv/bin/python scripts/crypto_5m_backtest.py \
--paper-signal \
--symbol BTCUSDT \
--market-probability 0.50 \
--fee-bps 2 \
--signal-log data/crypto_5m_signal_log.jsonl
.venv/bin/python scripts/crypto_5m_backtest.py \
--resolve-signal-log \
--signal-log data/crypto_5m_signal_log.jsonl
.venv/bin/python scripts/crypto_5m_backtest.py \
--signal-summary \
--signal-log data/crypto_5m_signal_log.jsonl \
--min-resolved-trades 200 \
--min-total-pnl 0 \
--min-hit-rate 0.53
.venv/bin/python scripts/crypto_5m_backtest.py \
--paper-loop \
--symbols BTC,ETH,SOL \
--iterations 12 \
--sleep-seconds 60 \
--market-probability 0.50 \
--fee-bps 2 \
--signal-log data/crypto_5m_signal_log.jsonl信号日志是模型改进的运行数据集:每条记录存储预测、建议、后续actual_outcome、正确性,以及实际buy_up/buy_down纸面交易的pnl_per_contract。使用--signal-summary审计已解析的纸面交易在费用后是否为正;trade_ready在达到配置的交易数量、PnL和命中率阈值之前保持为false。使用--dry-run配合--paper-loop预览信号而不写入日志。
生产部署说明
生产环境从自定义域名提供服务:
https://foresea.inkCloud Run服务名称、项目ID和区域在部署时通过gcloud run deploy设置。
所需运行时环境:
SCADS_AI_API_KEY:托管模型调用使用的Secret Manager密钥。MODEL_DEVICE=cpu:生产Cloud Run运行CPU镜像。CUSTOM_DOMAIN=foresea.ink:将*.run.app请求重定向到公共域名。GOOGLE_CLIENT_ID:/auth/config使用的Google OAuth Web客户端ID。GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRET:GitHub OAuth应用凭据。OAuth应用的回调URL必须是站点源(例如https://foresea.ink/)。未设置时,“使用GitHub继续”按钮隐藏,/auth/github返回503。登录也支持Google和电子邮件/密码。SESSION_SECRET:用于签署浏览器会话JWT并派生域分离、不可逆引用的长随机字符串,用于认证分析。轮换它会启动新的归因队列;它永远不会暴露账户电子邮件。
OAuth客户端必须允许这些JavaScript源:
https://foresea.ink
https://www.foresea.ink
https://<cloud-run-service-url>.run.app要在不替换现有SESSION_SECRET的情况下更新非机密环境变量,请使用--update-env-vars:
gcloud run services update <service-name> \
--region <region> \
--project <project-id> \
--update-env-vars MODEL_DEVICE=cpu,CUSTOM_DOMAIN=foresea.ink,GOOGLE_CLIENT_ID='<your-google-client-id>'验证部署的认证配置和健康端点:
curl https://foresea.ink/auth/config
curl https://foresea.ink/health扩展和缓存
服务器设计为在Cloud Run上水平扩展:
认证支持Google One-Tap 和电子邮件/密码(
/auth/register、/auth/login)。密码存储为加盐的PBKDF2-HMAC-SHA256哈希;账户存储在Cloud Datastore中。缓存和速率限制在设置
REDIS_URL时使用Redis,因此跨实例共享;否则回退到每实例内存状态并故障开放。/predict(非个性化请求)、证据检索和/extractURL获取被缓存;公共GET发送Cache-Control。
变量 | 默认值 | 描述 |
| 未设置 | Memorystore/Redis URL。跨实例共享缓存和速率限制。 |
|
| 非个性化 |
|
| 证据检索的缓存TTL(秒)。 |
|
|
|
|
| 内存回退缓存的最大条目数。 |
| 未设置 | 启用网络搜索作为证据来源。设置时优先使用自托管的SearXNG,然后是Tavily、Serper、Brave。Tavily/Serper有免费无卡层级。当未设置任何时,证据来自GDELT、Google News和RSS。 |
| 未设置 | 启用NewsAPI作为证据来源。 |
实时跟踪记录
GET /track-record提供公共预测跟踪记录。繁重的tick循环不在Cloud Run上运行:.github/workflows/track-record-tick.yml每小时在GitHub Actions上运行,更新data/track_record_store.json作为事实来源实体存储,将公共聚合写入static/track_record_live.json,并将两个文件提交回main。运行时,Cloud Run从原始GitHub获取提交的聚合,回退到捆绑文件,然后回退到static/track_record.json中的静态回测。
该Action在单独的收盘日期区间(默认2-7、7-14、14-30、30-60天)中发现短至中期Polymarket/Kalshi市场,并对每个新快照的市场/模型调用一次/predict。如果/predict受保护,设置GitHub密钥PREDICT_API_KEY;不需要服务器端/track-record/tick端点。TRACK_RECORD_TOKEN是可选的,仅启用代理注册市场桥接。
默认的定时预测任务有意设置成本上限:每6小时运行一次,每个场所最多快照2个市场,仅预测gpt-oss-120b加上无LLM的crowd-follow基线。使用手动工作流调度输入reforecast_each_tick=1进行一次性完整刷新,而不是强制每次定时运行重新预测所有开放市场。
首页市场台使用GET /radar,它源自static/track_record_live.json及其edge_board。Radar突出显示当前模型与市场差距,并通过重用提交的跟踪记录聚合保持首屏快速,而不是在每次页面加载时扫描场所。
提高Cloud Run吞吐量上限(min-instances=0时无空闲成本):
gcloud run services update analyzing-llm-rationale --region us-central1 \
--max-instances 20 --concurrency 40 --memory 1Gi对于最低成本的公共部署,将服务保持在仅请求CPU、缩放到零,并限制突发扩展。这是部署工作流使用的配置文件。启动CPU提升保持启用,因为它减少冷启动延迟而不保持空闲实例温暖:
gcloud run services update analyzing-llm-rationale \
--region us-central1 \
--project brave-drive-471109-d9 \
--cpu 1 \
--memory 512Mi \
--min-instances 0 \
--max-instances 3 \
--concurrency 20 \
--timeout 180 \
--cpu-throttling \
--cpu-boost \
--update-env-vars INTERACTIVE_DEFAULT_MODEL=gemma-4-31b-it,INTERACTIVE_MAX_TOKENS=384,CHAT_PROVIDER_TIMEOUT_S=15,CHAT_PROVIDER_MAX_RETRIES=0,EVIDENCE_TIMEOUT_S=6,EVIDENCE_MAX_CONCURRENCY=4每次运行时更改后测量部署的预测延迟:
py scripts/measure_forecast_latency.py \
--url https://foresea.ink \
--mode stream \
--models minimax-m3 \
--runs 3 \
--no-attach-evidence \
--max-tokens 384如果冷启动仍然占主导,将--min-instances提高到1作为明确的延迟/成本权衡。
市场搜索在主API中进程内运行。可选的Go marketd微服务在GitHub Actions中仅构建/测试,默认不部署到Cloud Run。
Artifact Registry保留
CI在每次部署时将提交标签的Docker镜像推送到Artifact Registry。保持docker仓库清理策略有效,以免旧镜像积累:
gcloud artifacts repositories set-cleanup-policies docker \
--location us-central1 \
--project brave-drive-471109-d9 \
--policy infra/artifact-registry-cleanup-policy.json \
--no-dry-run该策略删除超过7天的镜像,每个包保留最新5个版本,并始终保留main标签。
Docker构建在GitHub Actions中运行,而非Cloud Build;正常部署路径不需要Cloud Build触发器或暂存桶。
一旦max-instances > 1,为Redis(计费)配置Memorystore并设置REDIS_URL,以便速率限制和缓存在实例间保持正确:
gcloud services enable redis.googleapis.com vpcaccess.googleapis.com compute.googleapis.com
gcloud redis instances create foresea-cache --size=1 --region=us-central1 --tier=basic
gcloud compute networks vpc-access connectors create foresea-vpc \
--region=us-central1 --range=10.8.0.0/28
gcloud run services update analyzing-llm-rationale --region us-central1 \
--vpc-connector foresea-vpc \
--update-env-vars REDIS_URL=redis://<instance-host>:6379使用API
公共Cloud Run API是最简单的集成目标。它接受预测问题并返回类型化预测、模型推理和可选证据文章。它专为可解析预测构建,而非通用问答。
端点
GET /health:服务健康检查。GET /track-record:公开的实时跟踪记录,回退到静态回测。GET /track-record/digest:可分享的实时跟踪记录 Markdown 摘要。GET /pr-agent:面向 Foresea 发现的可选代理间外联信息包。POST /predict:公开预测端点。GET /markets/polymarket:获取实时 Polymarket 报价(见下文)。GET /markets/kalshi:获取实时 Kalshi 报价(见下文)。POST /agent/analyze:对实时问题执行编排式端到端分析(见下文)。GET /agent/scan:扫描交易场所中定价错误的市场,按边际优势排序(见下文)。GET /radar:基于实时跟踪记录边际优势面板构建的首页市场工作台。POST /analytics/visit:记录页面访问;已登录请求仅关联到不可逆的账户引用。POST /analytics/event:记录产品漏斗事件,如forecast_completed、watchlist_add、share_created和digest_sent;已登录事件使用相同的私有引用。GET /analytics/events/summary:独立于页面访问汇总产品分析,包括最近 30 天的聚合已认证与匿名归因。POST /forecasts/share:创建显式的公开预测分享页面。GET /forecast/{share_id}:渲染共享预测而不暴露私有聊天历史。GET|PUT|DELETE /trading/connections/{platform}:加密的按用户交易所连接元数据及生命周期管理。POST /trading/preview:已认证的试运行订单规范化。POST /trading/orders:已认证的实时订单提交,需显式确认。GET /trading/portfolio:已认证的余额、持仓、订单和成交对账。POST /trading/orders/{audit_order_id}/reconcile:刷新已提交订单的场所状态/成交。DELETE /trading/orders/{audit_order_id}:显式取消未平仓已提交订单的剩余数量。
Web 应用运行时状态
匿名聊天保存在浏览器 localStorage 中。已登录用户通过 /chat/conversations 同步对话,而关注列表跟踪使用通过 /favorites 和 /favorites/prices 暴露的 FavoriteMarket 实体。关注列表摘要通过 scripts/favorites_digest.py 从 .github/workflows/favorites-digest.yml 运行。
预测分享是可选加入的:客户端调用 POST /forecasts/share 创建公开的 GET /forecast/{share_id} 页面。不要在共享预测视图中暴露完整的私有聊天历史。
Agent:自动化智能层
POST /agent/analyze 自主运行整个流水线:解析市场(给定标识符时获取实时 Polymarket/Kalshi 价格)→ 收集证据 + 预测 → 定价边际优势 → 运行任何自定义技能 → 给出建议。它返回一份结构化报告。
curl -X POST https://foresea.ink/agent/analyze \
-H "Content-Type: application/json" \
-d '{
"platform": "polymarket",
"slug": "will-the-fed-cut-rates-in-2026",
"skills": [
{"name": "Base rate check", "instruction": "Compare to historical base rates."},
{"name": "Risk", "instruction": "What would most change this forecast?"}
]
}'自定义技能是你自己的分析步骤——每个步骤作为对问题、预测和证据的额外模型遍历运行,并以报告中的命名部分返回。直接提供 question,或提供 platform + 市场标识符(Polymarket 用 slug/market_id,Kalshi 用 ticker)。传递 history(先前轮次)以支持多轮追问——有历史时,像"为什么?"或"那六月呢?"这样的简短追问会在上下文中得到回答。BYOK 字段(openrouter_api_key、openrouter_model、provider_base_url)同样适用。
报告包含 recommendation(buy_yes/buy_no/hold/no_market_price)、edge、model_probability、market_probability、thesis、evidence_sources 和 pipeline(已运行的按序步骤)。
持久的私有 Agent 运行
每次已登录的 POST /agent/analyze 调用(包括流式端点)也会创建一次私有 AgentRun。它保留有界、无秘密的输入快照、生命周期时间线、模型报告以及任何仅审查的交易交接。使用 GET /agent/runs 获取最新的操作员时间线,使用 GET /agent/runs/{run_id} 获取一份完整报告。快照有意排除提供商密钥、浏览器凭据、对话历史和原始自定义技能指令。Agent 运行仅用于研究:即使它有交易交接,也不能创建、设定规模或提交订单;用户仍必须在终端中创建并显式确认持久的 Trade 运行。
复制的 Agent:私有、版本化的研究配方
已登录用户可以从 Agentic 面板复制公开的 Foresea 模型。副本以不可变的版本 1 研究配方形式保存在用户账户下;它仅包含公开的源模型和分析指令——绝不包含源 Agent 的私有上下文、影子账户历史、交易所连接、订单规模或交易权限。使用 POST /agent-profiles/copy 并传入白名单中的 source_agent_id,然后将返回的 agent_profile_id 传递给 POST /agent/analyze。
当选择配置文件时,服务器自行解析配置文件的模型和指令,忽略客户端的 BYOK/提供商/模型覆盖,并强制使用固定的研究流水线(无工具循环或交易工具)。生成的报告返回其配置文件 ID、来源、版本和 research_only 模式以保证可复现性。配置文件可以准备现有的仅审查交易交接,但不能创建或提交交易所订单;已登录用户仍必须在交易终端中创建持久的 Trade 运行并显式确认 PLACE REAL ORDER。
边际优势扫描——发现定价错误的市场
GET /agent/scan 列出场所上的实时市场,对每个市场进行预测,并返回模型与市场差距超过 min_edge 的市场,按 |edge| 排序。
curl "https://foresea.ink/agent/scan?platform=polymarket&limit=4&min_edge=0.1"参数:platform(polymarket 或 kalshi)、limit(要分析的市场数,最大 8)、min_edge(默认 0.1)、evidence_top_k。每个市场都运行完整预测,因此受 limit 限制,结果会短暂缓存。响应:{platform, scanned, opportunities: [{question, market_url, market_probability, model_probability, edge, recommendation}]}。在 Web 应用中,工作台的**"⚡ 扫描 Polymarket 寻找定价错误的市场"**按钮调用此端点。
MCP 服务器:让 AI Agent 将 Foresea 作为工具调用
Foresea 在以下地址公开远程 MCP 服务器:
https://foresea.ink/mcp/它在以下地址被广告用于发现:
https://foresea.ink/.well-known/mcp/server.json远程 MCP 服务器是公共 API 之上的轻量工具层。它暴露:
foresea_forecast:调用POST /predict——生成带证据的校准概率预测。foresea_analyze_market:调用POST /agent/analyze——评估特定的 Polymarket/Kalshi 市场,包含边际优势与论点。foresea_scan_markets:调用GET /agent/scan——扫描按模型与市场分歧排序的实时市场。foresea_batch_quotes:调用GET /market/batch——一次往返获取多市场报价。foresea_edge_board:调用GET /edge-board——按统计边际优势排序的顶级开放交易机会。foresea_track_record:调用GET /track-record——公开的准确率、Brier 分数、ECE 和校准指标。foresea_exchange_status:检查 Kalshi 交易所状态(交易活动标志)和运营时间表。foresea_orderbook:获取 Kalshi 代码或 Polymarket 代币的实时买盘和卖盘订单簿深度。foresea_market_tags:从 Polymarket 获取活跃类别分类和标签。foresea_price_history:获取历史价格点或 OHLC 蜡烛图。foresea_live_data:获取实时体育比赛统计、逐回合数据和实时赛事信息流。foresea_polymarket_meta:获取赛事系列列表、社区讨论评论或体育元数据。foresea_recent_trades:获取 Kalshi 或 Polymarket 上最近的已执行交易记录/成交(价格、规模、时间戳)。foresea_market_leaderboard:从 Polymarket 获取顶级盈利交易者排行榜和成交量排名。foresea_pr_agent:调用GET /pr-agent——为询问如何描述 Foresea 的 Agent/目录提供简洁文案和安装元数据。资源:
foresea://track-record、foresea://pr-agent和foresea://openapi.json。
自定义集成与生态系统工具
Foresea 为流行的开发者和交易界面提供即用型客户端集成:
1. Telegram 与 Discord 信号机器人
Telegram 机器人(
scripts/foresea_telegram_bot.py):交互式机器人,支持/forecast <q>、/edge、/analyze <ticker>、/track以及自动化的订阅者边际优势提醒。export TELEGRAM_BOT_TOKEN="123456:ABC..." python scripts/foresea_telegram_bot.pyDiscord 机器人与 Webhook(
scripts/foresea_discord_bot.py):按计划将丰富的 Discord 嵌入消息发布到公告频道。python scripts/foresea_discord_bot.py --webhook-url "https://discord.com/api/webhooks/..." --post-edge
2. 即插即用 Web 组件(<foresea-card>)
通过单个脚本标签将实时交互式预测市场预测嵌入任何博客、新闻网站或 Substack:
<script src="https://foresea.ink/widget.js" async></script>
<!-- Embed by Question -->
<foresea-card data-question="Will SpaceX land Starship on Mars by 2028?" data-theme="dark"></foresea-card>
<!-- Embed by Shared Forecast ID -->
<foresea-card data-share-id="abc123xyz"></foresea-card>3. 真实资金量化执行桥接
一个可选加入的自动化执行运行器(scripts/live_trader_bridge.py),将 Foresea 的统计边际优势信号连接到实时预测场所(Polymarket 和 Kalshi),并带有严格的风险管理防护:
# Dry-run simulation (safe default)
python scripts/live_trader_bridge.py --dry-run --min-edge 0.08
# Live execution on Kalshi with risk limits
python scripts/live_trader_bridge.py --live --venue kalshi --min-edge 0.10 --max-position-usd 25PR Agent——Agent 间分发
GET /pr-agent?audience=mcp 返回一个可选加入的外联信息包,其他 Agent、MCP 目录和工具目录在介绍 Foresea 时可以引用。它包含一句话简介、安装命令、MCP/OpenAPI 链接、谈话要点和明确的反垃圾邮件政策。
对于操作员向显式 Agent 端点进行的冷外联,请准备目标列表并使用本地运行器。它默认试运行,仅在带 --send 时发送:
python scripts/pr_agent_outreach.py --targets outreach-targets.json
python scripts/pr_agent_outreach.py --targets outreach-targets.json --send目标文件格式:
{
"targets": [
{
"name": "Example Agent Directory",
"endpoint": "https://agent-directory.example/inbox",
"audience": "catalog",
"headers": {"Authorization": "Bearer ..."}
}
]
}公共 API 返回外联信息包;它不暴露未经认证的消息发送中继。计划的 GitHub Action .github/workflows/pr-agent-outreach.yml 每 5 分钟针对 data/pr_outreach_targets.json 运行一次,使用 --send 发送,并将已联系的目标记录在 data/pr_outreach_state.json 中,以便重复的计划运行不会重新联系同一 Agent。对于字面意义上始终运行的本地进程,运行:
python scripts/pr_agent_outreach.py \
--targets data/pr_outreach_targets.json \
--state data/pr_outreach_state.json \
--send --watch --interval-s 300头部值可以通过环境变量引用 GitHub Actions 密钥,例如 "Authorization": "$PR_AGENT_TARGET_AUTH"。
预置的自动化目标:
AgentNDX(
https://agentndx.ai/api/submit)——公开的 MCP/A2A/x402 审查表单。MCP.Directory(
https://mcp.directory/api/submit-server)——公开的 JSON 提交路由。mcpub(
https://mcpub.dev/mcp)——公开的 MCP JSON-RPCsubmit工具。
不适合计划 HTTP 发送器的其他列表工作位于 data/pr_manual_targets.json 中。当前的手动/GitHub 目标:mcp.so issue https://github.com/daodao97/chatmcp/issues/213。
将 Foresea 添加到你的 Agent(10 秒)
它是一个远程、匿名的 Streamable-HTTP 服务器——无需密钥,无需安装。将任何 MCP 客户端指向该 URL:
# Claude Code
claude mcp add --transport http foresea https://foresea.ink/mcp/// Cursor / Cline / Claude Desktop (mcp.json)
{ "mcpServers": { "foresea": { "url": "https://foresea.ink/mcp/" } } }// OpenClaw agent MCP config
{
"mcpServers": {
"foresea": {
"url": "https://foresea.ink/mcp/"
}
}
}对于 OpenClaw,还需将以下内容添加到目标 Agent 的工作区指南中:
Use Foresea for probability, forecasting, prediction-market research, and
market-edge questions. Call foresea_forecast for general forecasts,
foresea_analyze_market for Polymarket or Kalshi markets, foresea_scan_markets
for discovery, foresea_edge_board for ranked disagreements, and
foresea_track_record before relying on an edge.# Python — official MCP SDK (3.10+)
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client("https://foresea.ink/mcp/") as (r, w, _):
async with ClientSession(r, w) as s:
await s.initialize()
print(await s.call_tool("foresea_forecast",
{"question": "Will the Fed cut rates by March 2026?", "market_probability": 0.4}))# LangChain (langchain-mcp-adapters) — Foresea tools in any LangGraph agent
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({"foresea": {"url": "https://foresea.ink/mcp/", "transport": "streamable_http"}})
tools = await client.get_tools() # foresea_forecast, foresea_analyze_market, ...一个可运行的端到端演示(扫描 → 预测 → 边际优势)位于 examples/foresea_agent_demo.py 中。
在支持远程 Streamable HTTP 服务器的 MCP 客户端中直接使用 https://foresea.ink/mcp/。对于仍需要本地 stdio 命令的客户端,请在本地运行包装器。
该仓库以 Python 3.10+ 为目标,因为官方 MCP Python SDK 要求如此。要使用 uv 创建仓库本地的 Python 3.11 MCP 环境:
uv venv --python 3.11 .venv-mcp
uv pip install --python .venv-mcp/bin/python --no-deps -e .
uv pip install --python .venv-mcp/bin/python "mcp>=1.27.1" requests pyyaml pip
source .venv-mcp/bin/activate
analyze-llm-rationale mcp-server这种轻量安装避免了在你只需要 MCP 包装器时拉取完整推理依赖栈(特别是 Torch/CUDA)。在完整开发环境中,pip install -e ".[mcp]" 同样有效。
MCP 客户端配置示例:
{
"mcpServers": {
"foresea": {
"url": "https://foresea.ink/mcp/"
}
}
}对于本地 HTTP MCP 端点:
.venv-mcp/bin/analyze-llm-rationale mcp-server \
--transport streamable-http \
--host 127.0.0.1 \
--port 8787将 MCP 客户端连接到 http://127.0.0.1:8787/mcp。如果私有部署需要认证,请设置 FORESEA_API_KEY 或传递 --api-key;包装器会将其作为 X-API-Key 转发。
快速验证:
.venv-mcp/bin/python - <<'PY'
import importlib.metadata as md
from analyzing_llm_rationale.mcp_server import create_mcp_server
print(md.version("mcp"))
print(create_mcp_server().name)
PY获取实时市场价格
直接从场所拉取当前市场隐含概率,然后将其作为 market_probability 输入 /predict 以计算边际优势。
# Polymarket — by market slug (or ?id=<numeric id>)
curl "https://foresea.ink/markets/polymarket?slug=will-the-fed-cut-rates-in-2026"
# Kalshi — by market ticker
curl "https://foresea.ink/markets/kalshi?ticker=KXFED-26SEP-C"两者都返回规范化报价:
{
"platform": "Polymarket",
"question": "Will the Fed cut rates in 2026?",
"market_url": "https://polymarket.com/market/...",
"outcome": "Yes",
"probability": 0.54,
"outcomes": [
{"label": "Yes", "probability": 0.54},
{"label": "No", "probability": 0.46}
]
}对于未定价/流动性不足的市场,probability 为 null。报价会短暂缓存(MARKET_CACHE_TTL,默认 30 秒)。
交易执行:Polymarket 和 Kalshi
Foresea 可以提交受保护的市场预测订单,但默认禁用实时执行。请将其与 /agent/analyze 分开:代理可以推荐 buy_yes/buy_no,但提交订单需要已登录用户、加密的交易所连接、FORESEA_ENABLE_BYO_TRADING=true、execute=true 以及确切的确认短语 PLACE REAL ORDER。
浏览器仅将连接凭据发送到 PUT /trading/connections/{platform}。Foresea 验证这些凭据,为该用户/场所连接生成唯一的数据加密密钥,并在本地加密凭据负载。Cloud KMS 使用经过身份验证的用户/场所上下文包装数据密钥;Datastore 仅接收密文、包装的数据密钥和 KMS 密钥元数据。KMS 根密钥永远不会进入服务进程。Foresea 从不将凭据返回给浏览器,并拒绝预览和订单请求中的内联 venue_credentials。
创建一个专用的 KMS 对称 ENCRYPT_DECRYPT CryptoKey,并仅授予 Cloud Run 服务账号 roles/cloudkms.cryptoKeyEncrypterDecrypter 对该密钥的权限。配置其完全限定的资源名称,而不是秘密值:
gcloud kms keyrings create foresea-trading --location=us-central1
gcloud kms keys create exchange-connections --location=us-central1 \
--keyring=foresea-trading --purpose=encryption
gcloud kms keys add-iam-policy-binding exchange-connections --location=us-central1 \
--keyring=foresea-trading \
--member="serviceAccount:${CLOUD_RUN_SERVICE_ACCOUNT}" \
--role="roles/cloudkms.cryptoKeyEncrypterDecrypter"Cloud KMS 密钥轮换对现有的包装数据密钥是透明的。服务对新连接使用主密钥版本,KMS 在解密现有连接时选择所需的旧版本。
# Global guardrails
export FORESEA_ENABLE_TRADING=false # must be true for shared-account live orders
export FORESEA_ENABLE_BYO_TRADING=false # must be true for encrypted user-account live orders
export FORESEA_MAX_ORDER_NOTIONAL=50 # local cap per order, USD
export FORESEA_ALLOW_MARKET_ORDERS=false # separate gate for IOC/FOK-style orders
export FORESEA_TRADING_KMS_KEY_NAME=projects/<project>/locations/<location>/keyRings/foresea-trading/cryptoKeys/exchange-connections
# Optional shared server account (not used by the public connection flow)
# Kalshi authenticated REST (RSA-PSS signing)
export KALSHI_API_KEY_ID=<kalshi-key-id>
export KALSHI_PRIVATE_KEY_FILE=/secrets/kalshi-private-key.pem
export KALSHI_BASE_URL=https://external-api.kalshi.com/trade-api/v2
# Polymarket CLOB SDK
export POLYMARKET_PRIVATE_KEY=<wallet-private-key>
export POLYMARKET_API_KEY=<clob-api-key>
export POLYMARKET_API_SECRET=<clob-api-secret>
export POLYMARKET_API_PASSPHRASE=<clob-api-passphrase>
export POLYMARKET_FUNDER_ADDRESS=<optional-funder-address>
export POLYMARKET_SIGNATURE_TYPE=<optional-signature-type>在生产环境中安装可选的 SDK:
pip install -e ".[serve,trading]"Docker 镜像安装了 trading,因此 Cloud Run 只需要 secrets/env vars。
迁移已退役的共享 Fernet 密钥
如果已存在版本 1 的连接记录,请部署 KMS 配置,并仅在迁移期间保留旧的 FORESEA_CREDENTIALS_ENCRYPTION_KEY Secret Manager 值。现有记录在首次经过身份验证的使用时惰性迁移,或者从具有 Application Default Credentials 和 Datastore 访问权限的环境中迁移完整集合:
py scripts/migrate_trading_connection_encryption.py # dry run
py scripts/migrate_trading_connection_encryption.py --apply该命令仅报告计数,绝不输出凭据。一旦没有版本 1 的记录,从 Cloud Run 和 Secret Manager 中移除 FORESEA_CREDENTIALS_ENCRYPTION_KEY。
检查加密的账户连接元数据(不返回任何秘密):
curl https://foresea.ink/trading/connections \
-H "Authorization: Bearer $FORESEA_SESSION"通过 TLS 连接一个账户(负载在持久化之前已加密):
curl -X PUT https://foresea.ink/trading/connections/kalshi \
-H "Authorization: Bearer $FORESEA_SESSION" \
-H "Content-Type: application/json" \
-d '{"venue_credentials":{"kalshi_api_key_id":"<key-id>","kalshi_private_key":"<pem>"}}'预览 Kalshi 订单而不执行:
curl -X POST https://foresea.ink/trading/preview \
-H "Authorization: Bearer $FORESEA_SESSION" \
-H "Content-Type: application/json" \
-d '{
"platform": "kalshi",
"ticker": "KXFED-26SEP-C",
"action": "buy",
"outcome": "yes",
"price": 0.42,
"quantity": 1
}'仅在审查预览后提交实时订单:
curl -X POST https://foresea.ink/trading/orders \
-H "Authorization: Bearer $FORESEA_SESSION" \
-H "Content-Type: application/json" \
-d '{
"platform": "kalshi",
"ticker": "KXFED-26SEP-C",
"action": "buy",
"outcome": "yes",
"price": 0.42,
"quantity": 1,
"execute": true,
"confirmation": "PLACE REAL ORDER"
}'对于 Polymarket,传递 CLOB token_id 以获取确切结果,或传递 slug/market_id 加上 outcome,Foresea 将从公共市场记录中解析 token id。限价订单使用 quantity 作为份额。市价买单在提供 max_cost 时使用 USD 支出,并且除非 FORESEA_ALLOW_MARKET_ORDERS=true,否则保持阻止。
提交后,使用 /trading/orders 返回的审计 ID 来核对当前场所状态,而不是假设提交已成交。交易终端也暴露此流程,包括在取消剩余挂单之前显式的 CANCEL OPEN ORDER 确认。
持久化交易运行和计划对账
新的终端提交使用持久的 /trading/runs 记录:Foresea 保存经过验证的订单计划,要求第二次精确确认才能执行该保存的计划,并在联系场所之前原子地声明它。这可以防止来自并发标签页或 Cloud Run 实例的重复订单。当成交、取消或拒绝被对账时,运行状态跟随关联的审计订单。
真实资金护栏
每次实时提交现在在场所调用之前立即通过第二次服务器端预检。当 Foresea 无法获取新鲜的市场报价和当前投资组合快照,或以下任何限制将被超过时,它失败关闭:
Foresea 硬上限:每笔订单名义价值、当日最坏情况风险预算、每市场敞口、未完成订单、报价偏差、报价年龄和重复订单冷却时间。
用户在
GET/PUT /trading/guardrails处的控制:用户可以设置更严格的限制或暂停所有新的实时订单,但不能增加平台上限。FORESEA_TRADING_KILL_SWITCH=true:阻止每个新的实时提交,而不影响对账或取消。无缓存的市场报价与限价进行检查。买入限价不能高于配置的领口,卖出限价不能低于它。实时余额/持仓快照必须支持订单和敞口上限。
当日预算故意是最坏情况的新风险名义价值,而不是误导性的合成 P&L 数字。已成交头寸在订单前从场所投资组合快照中测量;确切的已实现每日 P&L 仍然是单独的会计/报告问题。护栏通过、阻止、策略更改和对账的成交/拒绝/取消转换被追加到 GET /trading/guardrails/events,不包含凭据或订单负载。配置现有的 SMTP_* 和 ALERT_* 设置以接收提交未知、拒绝、成交和平台终止开关事件的运营电子邮件。
生产上限是环境变量;省略时应用保守默认值:
FORESEA_TRADING_KILL_SWITCH=false
FORESEA_MAX_DAILY_RISK_NOTIONAL=100
FORESEA_MAX_MARKET_EXPOSURE_NOTIONAL=50
FORESEA_MAX_OPEN_ORDERS=5
FORESEA_MAX_PRICE_DEVIATION_BPS=300
FORESEA_MAX_QUOTE_AGE_SECONDS=20
FORESEA_ORDER_COOLDOWN_SECONDS=60终端要求 Polymarket slug 或 market_id 用于真实执行,以便 Foresea 可以独立获取新鲜的市场报价;仅原始 CLOB token ID 不足以进行此安全检查。
要启用只读的计划对账器,生成一个高熵服务令牌,并将相同的值存储为 Cloud Run 的 TRADING_RECONCILIATION_TOKEN 和该名称的 GitHub Actions 秘密。这是操作员令牌,不是用户凭据,也不是加密密钥。然后,Trading reconciliation 工作流每 15 分钟调用隐藏端点,受 TRADING_RECONCILIATION_MAX_ORDERS(默认 25,硬最大值 100)限制。该作业仅获取已提交的场所订单 ID 的当前状态;它不能下订单、修改或取消订单。
操作员启动就绪检查
部署交易修订后,使用相同范围狭窄的对账令牌读取其非敏感配置报告:
curl https://foresea.ink/internal/trading/readiness \
-H "X-Trading-Reconciliation-Token: $TRADING_RECONCILIATION_TOKEN"报告确认配置的 KMS 资源、持久存储客户端、对账令牌存在、有效的硬上限、实时执行门以及是否仍存在已退役的共享加密密钥。它不暴露密钥名称、令牌、凭据或账户数据。它也不能证明 Cloud KMS IAM、GitHub Actions 秘密匹配或交易所账户可以交易;在仅限邀请的冒烟测试中单独验证这些。
在启用调度器之前,在 index.yaml 中部署 TradingOrder 索引:
gcloud datastore indexes create index.yaml --project <project>请求字段
必需:
question:预测问题,例如"Will X happen by date Y?"、"Who will win X?"、"What will X be?"或"When will X happen?"。
可选:
question_type:binary、multiple_choice、numeric或date。如果省略,模型尝试推断类型。options:multiple_choice问题的答案选项。description:问题的额外上下文。resolution_criteria:问题应如何解决或衡量。categories:主题标签列表。news_articles:调用者提供的证据文章。如果提供,则跳过自动证据检索。attach_evidence:默认为true。当为true且news_articles为空时,API 从 GDELT、Google News RSS 和 Stooq 获取当前证据。evidence_top_k:要附加的证据文章数量,由服务器限制。market_platform:预测市场场所,例如Polymarket、Kalshi、Manifold或Metaculus。market_url:正在分析的市场 URL。market_outcome:提供市场价格的结果。对于二元市场,默认为Yes。market_probability:market_outcome的当前市场隐含概率。使用0.42或42;API 规范化百分比。variant:提示变体。默认为variant0_neutral_baseline。created_time、publish_time、resolve_time、days_open:可选的预测元数据。openrouter_api_key+openrouter_model:在您自己的模型上运行预测,而不是服务器默认(见下文“自带模型”)。provider_base_url:可选的 OpenAI 兼容/chat/completions端点,与您的密钥/模型一起使用,而不是 OpenRouter。必须是公共 HTTPS。
自带模型
默认情况下,/predict 在服务器托管的模型上运行。要使用您自己的:
通过 OpenRouter — 传递
openrouter_api_key和openrouter_model(例如openai/gpt-4o、anthropic/claude-sonnet-4-5)。请求通过 OpenRouter 代理。通过任何 OpenAI 兼容端点 — 还传递
provider_base_url(例如https://api.openai.com/v1或https://api.openai.com/v1/chat/completions)以及匹配的openrouter_model(这里只是提供商的模型 ID,例如gpt-4o)和您的密钥。Foresea 在内部将/v1基础 URL 规范化为/v1/chat/completions。
为了安全,provider_base_url 必须是公共 HTTPS;拒绝环回、私有、链路本地和云元数据主机。在 Web 应用中,侧边栏的 “使用您自己的模型” 面板暴露提供商、端点、密钥和模型。
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "Will X happen by 2027?",
"question_type": "binary",
"openrouter_api_key": "YOUR_KEY",
"openrouter_model": "gpt-4o",
"provider_base_url": "https://api.openai.com/v1/chat/completions"
}'自托管 vLLM
SCADS AI 已经通过 OpenAI 兼容的托管端点暴露 Foresea 的默认模型。仅当您需要直接控制检查点、量化、吞吐量或服务硬件时,才使用 vLLM。
启动本地 vLLM OpenAI 兼容服务器:
VLLM_API_KEY=token-abc123
vllm serve Qwen/Qwen3-32B \
--host 0.0.0.0 \
--port 8001 \
--api-key "$VLLM_API_KEY" \
--generation-config vllm然后将 Foresea 指向配置的 qwen3-32b-vllm 模型:
VLLM_API_KEY=token-abc123 PYTHONPATH=src analyze-llm-rationale smoke-test \
--model qwen3-32b-vllm
VLLM_API_KEY=token-abc123 PYTHONPATH=src analyze-llm-rationale serve \
--model qwen3-32b-vllm \
--variant variant0_neutral_baseline \
--port 8080对于生产环境,将 Foresea 和 vLLM 作为单独的服务运行。Foresea 的公共自带端点仍然要求 provider_base_url 为公共 HTTPS;私有或环回 vLLM URL 仅用于受信任的服务器端配置。
二元请求
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "Will the Federal Reserve cut interest rates at least once before September 30, 2026?",
"question_type": "binary",
"market_platform": "Polymarket",
"market_probability": 42
}'多项选择请求
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "Who will win the 2026 Formula 1 drivers championship?",
"question_type": "multiple_choice",
"options": ["Max Verstappen", "Lando Norris", "Charles Leclerc", "Lewis Hamilton", "Other"],
"attach_evidence": false
}'数值请求
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "What will US CPI inflation be in December 2026?",
"question_type": "numeric",
"resolution_criteria": "Use the year-over-year CPI-U inflation rate for December 2026."
}'带调用者提供证据的请求
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d '{
"question": "Will Company X report positive net income in Q4 2026?",
"description": "Resolve using the company earnings release.",
"resolution_criteria": "Yes if reported GAAP net income is positive.",
"attach_evidence": false,
"news_articles": [
{
"title": "Company X raises full-year guidance",
"source": "Example Business News",
"url": "https://example.com/company-x-guidance",
"publish_date": "2026-05-29",
"summary": "Company X raised revenue guidance and reported margin expansion."
}
]
}'Python 客户端示例
import requests
payload = {
"question": "Will the Federal Reserve cut interest rates at least once before September 30, 2026?",
"question_type": "binary",
"attach_evidence": True,
"evidence_top_k": 3,
"market_platform": "Polymarket",
"market_probability": 42,
}
response = requests.post(
"https://foresea.ink/predict",
json=payload,
timeout=180,
)
response.raise_for_status()
prediction = response.json()
print(prediction["predicted_answer"], prediction["confidence"])
print(prediction["model_rationale"])
if prediction.get("market_analysis"):
print(prediction["market_analysis"]["summary"])
for source in prediction["evidence_sources"]:
print(source["source"], source["url"])响应字段
question_type:检测到或请求的类型:binary、multiple_choice、numeric或date。predicted_answer:"Yes"、"No"、最佳多项选择选项或数值/日期估计的中位数。confidence:模型置信度,对于二元和多项选择预测为 0 到 1 的数字;对于数值/日期预测为null。options:多项选择预测的每个选项概率。range_forecast:p10、p50、p90以及数值/日期预测的可选unit。rationale:模型生成的解释。model_rationale:模型生成解释的别名,用于 API 客户端。evidence_sources:紧凑的来源列表,包含文章标题、URL、发布日期和相关性分数。evidence_articles:附加到提示的完整证据记录。evidence_error:检索错误消息,或当证据检索成功时为null。market_analysis:与提供的市场价格的可选比较:market_probability、model_probability、edge、stance和简短摘要。edge是model_probability - market_probability。
仓库内容
src/analyzing_llm_rationale/:打包的推理、提供商、验证和 CLI 逻辑。configs/:模型和理由变体定义。prompts/:系统提示以及配置的理由、控制、消融和无证据提示变体。scripts/:评估、恢复、SHAP、扰动、绘图、市场数据和实用脚本。slurm/:用于变体/温度扫描的 HPC 启动器。results/:模型输出和运行元数据。analysis/:聚合指标表和理由分析输出。paper/:论文图表、Draw.io 源、PDF 和定性案例研究。tests/:包和指标解析的单元测试。
参见 ARTIFACT_MANIFEST.md 了解提交清单和文件级说明。
安装
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev,serve,pipeline]"使用 .[dev] 进行代码检查和单元测试。在重新生成图表、指标表或 SHAP 分析时,添加 .[analysis]。在进行本地交易所订单预览/执行开发时,添加 .[trading]。
提示变体
配置的变体位于 configs/variants.yaml 中,并直接映射到 prompts/ 下的提示文件。
variant0是中性基线。variant1到variant8涵盖原始理由属性提示。variant9到variant14添加了草稿板、长度匹配、结构以及组合时间/可信度控制。variant15_neutral_no_rationale和variant16_no_evidence_neutral支持对理由和证据效应的消融实验。
添加变体时,更新 configs/variants.yaml,添加提示文件,并运行有界冒烟测试:
PYTHONPATH=src analyze-llm-rationale run-batch \
--variant <variant_name> \
--max-records 3快速验证
PYTHONPATH=src python -m analyzing_llm_rationale validate-dataset
python -m unittest discover -s tests
ruff check src tests当仓库尚未安装或较旧的用户本地安装遮蔽了工作树时,PYTHONPATH=src 很有用。
使用 Python 3.10+ 并安装相关附加依赖运行完整测试套件。服务器、RAG、跟踪和交易测试会从 serve、pipeline、analysis 和 trading 导入可选依赖。
主要入口点
使用打包的 CLI 运行变体 3 流水线:
analyze-llm-rationale run-batch --variant variant3_reasoning_type对于远程 OpenAI 兼容提供商:
export PROVIDER_API_KEY=your_token
analyze-llm-rationale run-batch --variant variant3_reasoning_type --model llama-3.3-70b-instruct如果不想将包安装到环境中,可以直接调用它:
PYTHONPATH=src python -m analyzing_llm_rationale run-batch --variant variant3_reasoning_type有用的选项:
--variant variant6_step_by_step_reasoning:选择提示/输出契约。--model qwen2.5-7b-instruct:选择已配置的模型定义。--temperature 0.7:控制生成温度和输出目录。--max-records 10:仅处理有界数量的记录。--reprocess-nulls:重新运行predicted_answer = null的现有行。--drop-article-text:在推理前从提示中移除原始文章文本。--device auto:在可用时选择cuda,否则选择cpu。verify-results --variant ...:验证完整性、重复项、格式错误的行和缺失的 ID。validate-dataset:在运行前验证数据集模式。
Foresea 自动研究
Foresea 有一个 Karpathy 风格的自动研究工具,用于提示实验:编辑一个候选提示,运行固定的基准切片,评分一个指标,并追加可审计的实验日志。研究界面是 autoresearch/candidate_prompt.txt;代理指令位于 autoresearch/program.md。默认的 --model gpt-oss-120b 使用 configs/models.yaml 中 SCADS 托管的 OpenAI 兼容端点(SCADS_AI_API_KEY 或 SCADS_AI_API_KEY.txt)。
运行一个候选实验:
PYTHONPATH=src python -m analyzing_llm_rationale autoresearch \
--model gpt-oss-120b \
--candidate-prompt-path autoresearch/candidate_prompt.txt \
--max-records 50 \
--metric brier_score与基线比较,仅当候选改进时才提升:
PYTHONPATH=src python -m analyzing_llm_rationale autoresearch \
--model gpt-oss-120b \
--candidate-prompt-path autoresearch/candidate_prompt.txt \
--baseline-results-path results/GPT-OSS-120B/temperature_00/results_variant0_neutral_baseline.json \
--promote-to prompts/variant0_neutral_baseline.txt \
--max-records 50 \
--metric brier_score \
--min-delta 0.001每次运行都会写入 analysis/autoresearch/runs/<run_id>/score.json,并将机器可读的行追加到 analysis/autoresearch/experiments.jsonl。
复现核心输出
验证现有结果文件:
PYTHONPATH=src python -m analyzing_llm_rationale verify-results \
--model qwen2.5-7b-instruct \
--variant variant3_reasoning_type \
--temperature 0.0 \
--temperature-tag temperature_000从 results/ 重新生成聚合指标:
python scripts/evaluate_metrics.py在真实的 Metaculus 风格数据集和保存的模型输出上运行 DuckDB SQL 分析套件:
python scripts/sql_analytics.py \
--db analysis/forecasting_analytics.duckdb \
--ingest --replace \
--output-dir analysis/sql_analytics这会为 10 个中等难度 SQL 问题写入一份 Markdown 报告以及每个查询一个 CSV:模型准确率、最佳变体、校准分箱、Brier 分数、共识/分歧案例、提示相对基线的提升、温度敏感性、过度自信错误和类别难度。
运行由 LangChain 驱动的新闻检索包装器:
PYTHONPATH=src analyze-llm-rationale fetch-and-rank \
--question "Will X happen by date Y?" \
--source gdelt \
--source google-news \
--source stooq \
--top-k 5新闻流水线使用 LangChain 进行查询规划步骤、文章摘要和基于嵌入的相关性排序,然后进行推理。证据源可通过 CLI 的 --source 和服务 API 时的 --evidence-source 进行配置。
运行或调度用于 RSS/新闻获取、推理和 DuckDB 日志记录的 Prefect DAG:
# One question
python flows/forecasting_flow.py --question-id 124 --top-k 5
# Small batch from the dataset
python flows/forecasting_flow.py --limit 3 --top-k 5
# Daily scheduled deployment at 06:00 UTC
prefect server start
python flows/forecasting_flow.py --deploy --limit 3 --cron "0 6 * * *"在指标就绪后重新生成论文图表:
python scripts/plot_model_variant_metric_heatmap.py
python scripts/plot_variant_delta_from_v0.py
python scripts/plot_temperature_frontier.py
python scripts/plot_frs_ablation_slopegraph.py
python scripts/plot_uncertainty_language_calibration_disconnect.py
python scripts/plot_shap_importance_attribute_gaps.py脚本
常见的运行器和验证命令:
python scripts/run_variant.py --variant variant5_key_conditionspython scripts/run_variant.py --variant variant3_reasoning_type --temperature 0.7 --temperature-tag temperature_07python scripts/run_variant.py --variant variant4_credibility --model llama-3.3-70b-instructpython scripts/verify_results.py --variant variant3_reasoning_typepython download_qwen_model.pypython check_local_inference.py
仓库布局:
scripts/:模块化运行器入口点slurm/:批处理启动器
可审计性:
每次运行都会在结果文件旁边写入
run_metadata_<variant>.json。元数据包括提供商、规范化提供商端点、模型键、解析后的模型标识符、温度、输出字段和提示 SHA-256 哈希。
现有的格式错误结果 JSON 现在会快速失败,而不是被静默忽略。
质量检查
python -m unittest discover -s tests
ruff check src tests scripts/*.py数据、模型和机密
包含的数据集是 forecasting_qa_news_metaculus_2025-02-01_to_today.metaculus_frs_format.json。模型访问在 configs/models.yaml 中配置。开放权重的 Qwen 模型通过 Hugging Face 在本地运行;托管模型使用 OpenAI 兼容端点,需要通过环境变量或本地密钥文件提供 API 密钥。
切勿提交密钥文件或令牌。大型本地缓存(.cache/、envs/、.venv/)被有意忽略,并从源归档中排除。
引用
如果此仓库支持出版物,请使用 CITATION.cff 中的元数据引用该工件,并根据其许可证引用上游数据集/模型。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Calibrated probabilistic foresight for AI agents, powered by live prediction-market signal.
Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.
Live Kalshi and Polymarket data: EV edges, cross-venue arbitrage, markets, and whale trades.
Prediction market data and crowd-sourced probability forecasts
Related MCP Servers
- AlicenseAqualityDmaintenancePrediction market probability oracle for AI agents. 26 tools across 500+ live markets from Kalshi and Polymarket. Cross-source arbitrage detection, structured TPF signals, Kelly Criterion sizing, agent performance tracking, and webhook alerts.9671MIT
- AlicenseAqualityBmaintenance24/7 autonomous monitoring and edge detection for prediction markets (Kalshi & Polymarket). Features causal tree analysis, orderbook depth tracking, cross-venue comparison, and real-time alerts.1619612MIT
- AlicenseAqualityCmaintenanceProvides calibrated weather probability signals for Kalshi prediction markets by combining dual-model forecasting (NWS + GFS ensemble) to identify mispriced temperature markets. Enables AI agents to access bias-corrected forecasts and edge signals for weather prediction market intelligence.5MIT
- AlicenseAqualityAmaintenancePrediction-market quant tools — expected value, Kelly sizing, Bayesian updating, odds conversion, base-rate gaps, cross-platform arbitrage, and mispricing edge — for Kalshi and Polymarket contracts, exposed as a remote MCP server.8633MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pareelamre/analyzing-llm-rationale'
If you have feedback or need assistance with the MCP directory API, please join our Discord server