ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

每日估算人机对战:用群体智慧检验大模型常识

每日估算人机对战:用群体智慧检验大模型常识 如果你最近一直在刷各种 AI 榜单大概率会陷入一种矛盾感一边是各家大模型在 MMLU、GPQA、AIME 等基准上疯狂刷新分数一边是真正把这堆模型用到自己业务里时总感觉差了点“常识感”。模型能写代码、能解数学题但你对着一张“一罐糖豆有多少颗”的照片问它它给出的答案反而可能很离谱。这正是我关注 “A daily estimation game where the crowds answer fights an AI” 这个项目的原因。它把问题设计成估算类题目每天出一道题让一群人给出自己的估计然后拿所有人的答案与 AI 的答案对比。表面上看这是一个娱乐向的人机对战小游戏但从技术角度看它其实是一个低门槛、高参与度的 AI 能力观察窗口把“群体智慧”和“模型推理”拉到同一个赛场上。这篇文章不打算只复述项目介绍而是拆开三层来看为什么是估算题而不是复杂的逻辑题、代码题实现一个类似系统需要哪些核心模块从题目调度到聚合算法到 AI 接入日常运营和工程上会踩哪些坑以及如何把它从“游戏”沉淀成有价值的评测数据。读完这篇文章你可以跑通一个“每日一题 人类群体答案聚合 AI 答案生成 结果对比”的最小闭环也能理解为什么说这类项目真正的技术含量不在 AI API 调用而在答案的聚合策略和游戏化设计。1. 这篇文章真正要解决的问题先说一个反直觉的观察现在的 AI 评测正在从“专业圈子的内测”走向“全民可参与的行为实验”但绝大多数普通用户并没有参与感。传统基准测试的问题在哪里三个痛点很明显静态化题目一旦成为公开基准就有被训练数据污染的风险。模型看过答案之后再得分评测意义就会打折扣。门槛高学术基准要求用户具备专业知识普通人无法参与自然也谈不上传播。无感知普通用户看到的只是“得分上涨”无法理解分数上涨与日常使用体验之间的关系。“每日估算游戏”这类产品恰好把这三个问题都绕开了它每天生成新题目天然抗数据污染它用常识类估算题降低参与门槛不需要专业知识它用“人群答案 VS AI 答案”的形式把原本枯燥的模型能力评测变成了一场有胜负、有话题性的比赛。更关键的是估算问题看起来简单实际上对 AI 并不友好。一个合格的人类估算往往依赖物理直觉、生活经验和世界模型。你问“北京市中心一个普通小区从大门走到最近的地铁站大概多少米”人类会结合步行时间、城市街区尺度给出一个区间模型如果没有对应知识就很容易给出一个“语法正确但物理荒谬”的数字。所以这类项目真正的技术难点不在于调用 AI API而在于如何设计一道“人类有共识、AI 容易出错”的估算题如何从几十上百个用户答案中稳健地聚合出“群体的答案”如何定义胜负让结果在统计上站得住脚而不是凭感觉如何防止刷子用户和恶意提交破坏数据质量。下面先理解群体估算背后的原理再进入具体的架构与代码。2. 为什么偏偏是“估算题”核心概念与底层逻辑先讲一个经典实验。1906 年科学家弗朗西斯·高尔顿Francis Galton在集市上让人们猜一头被宰杀的公牛重量800 人参与有人猜得离谱有人猜得很接近。最终所有答案的中位数与公牛真实重量只差了不到 1%。这就是“群体智慧”最常被引用的案例当个体判断相互独立且误差对称时群体的聚合结果往往比大多数个体更准确。现代解释是每个个体的估计都包含“真实值 随机误差”而随机误差在大量样本中被部分抵消。但这成立有条件不是所有人一起拍脑袋就必然准确。对“人机对战”项目来说估算题有几个独特优势维度传统评测题MMLU、GPQA估算对战题答案形式固定选项或严格推导连续数值或区间知识门槛高需要专业领域知识低需要常识和生活经验数据污染风险高公开题目易被记忆低可以每日生成新题用户参与感弱只能看榜单强可以亲自作答、看胜负聚合难度简单对错分明中等需要稳健聚合算法估算题还有一个容易被忽略的特点它是连续值不存在唯一标准答案但存在真实值。这就让“胜负判定”变得很有层次感——可以用绝对误差也可以用相对误差还可以用区间覆盖率。设计者可以根据运营目标灵活调整规则这让项目的可玩性和数据价值都大大提升。从 AI 能力的角度来看估算题测试的是模型的“世界知识数值推理不确定性表达”三合一能力。目前大多数语言模型擅长从文本中检索知识但面对需要多步推理的现实世界估算依然会暴露出量级错误、单位混淆、不合理的精确度等经典“AI 幻觉”问题。因此“让群体答案与 AI 答案对战”的本质是用人类分布式认知去校验模型压缩知识的一致性。这个实验设计本身就比游戏本身更有长期价值。3. 一个可落地的系统架构模块拆解如果你要自己实现一个类似的“每日估算人机对战”项目不用把它想得太重。核心闭环其实是由五类模块组成题目模块定义题目内容、真实答案、选项范围或提示。调度模块确保每天 0 点切换新题目结束旧题目的答案收集。用户与答案模块接收用户提交的估算值校验参数存储到数据库。聚合与对战模块在题目结束后计算人类群体答案的聚合值同时调用 AI 接口生成 AI 答案。结果与排行模块展示人类聚合值、AI 答案和真实值的误差对比以及用户个人排名。如果用一张图来表示数据流不画复杂图重点看流程描述题目发布 - 用户提交估算值 - 存入答案池 - 截止时间触发聚合计算 - 同时触发 AI 答案生成 - 计算误差 - 对比胜负 - 写入结果表 - 前端排行榜更新这里要特别强调AI 答案的生成时机有两种策略题目发布时就生成 AI 答案优点是响应快玩家在提交答案前就能看到 AI 的初始答案形成“大家先试试击败 AI”的围观效应缺点是 AI 的答案可能与玩家答案互相影响。截止后再生成 AI 答案优点是可以避免 AI 答案对玩家决策产生干扰数据更“干净”缺点是对实时互动有损失。从工程和产品体验权衡来看第一种策略更适合传播第二种策略更适合数据研究。两者并不冲突可以结合游戏模式用第一种后台评测模式用第二种。关于题目本身的真实答案需要设计“防作弊”机制。最简单的方式是不向用户展示真实答案只在结算后展示误差对比题目数据源尽量从公开可查但未被大规模标记的渠道获取或者由运营方人工出题。4. 环境搭建一个可运行的“每日一题”最小闭环为了演示方便下面的最小实现采用 Python FastAPI SQLite OpenAI 兼容接口的通用思路。这里不会绑定死某个第三方服务因为 AI 服务商和模型版本变化太快代码层做一层适配即可。在开始前请确认本机环境Python 3.10 或更高版本一个可以用 HTTP 调用的 AI 模型 API例如 OpenAI 兼容接口无需单独安装数据库SQLite 是 Python 内置支持推荐使用虚拟环境隔离依赖。创建项目目录mkdir daily-estimation-game cd daily-estimation-game python3 -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate安装依赖pip install fastapi uvicorn httpx pydantic python-dotenv sqlalchemy这里没有引入复杂的 celery、redis原因是每日一题的调度并不需要实时任务队列一个简单的后台线程 定时检查就可以支撑低并发场景。如果后续用户量上来再替换成 Redis 队列和分布式调度也不迟。在项目根目录创建.env文件写入环境变量# .env AI_API_KEYyour_api_key_here AI_BASE_URLhttps://api.your-ai-service.com/v1 AI_MODELgpt-4o-mini DB_URLsqlite:///game.db注意实际使用时应填入你自己的 API Key不要提交到 Git 仓库。.env文件应添加到.gitignore中。5. 核心代码实现从题目生成到人机比分这一章是全文核心。我会按顺序给出四个模块的参考实现代码都力求“拷下来能跑通最小闭环”。5.1 每日题目调度与状态机先建一个简单的数据库模型并实现“每日题目自动切换”的后台调度器。文件路径app/models.pyfrom sqlalchemy import create_engine, Column, Integer, String, Float, DateTime from sqlalchemy.orm import declarative_base, sessionmaker from datetime import datetime, timezone DATABASE_URL sqlite:///game.db engine create_engine(DATABASE_URL, connect_args{check_same_thread: False}) SessionLocal sessionmaker(bindengine) Base declarative_base() class Question(Base): __tablename__ questions id Column(Integer, primary_keyTrue) question_text Column(String, nullableFalse) real_answer Column(Float, nullableFalse) answer_upper_bound Column(Float, nullableTrue) answer_lower_bound Column(Float, nullableTrue) start_date Column(String, nullableTrue, indexTrue) # YYYY-MM-DD status Column(String, defaultopen) # open / closed created_at Column(DateTime, defaultlambda: datetime.now(timezone.utc)) crowd_answer Column(Float, nullableTrue) ai_answer Column(Float, nullableTrue) class UserAnswer(Base): __tablename__ user_answers id Column(Integer, primary_keyTrue) question_id Column(Integer, indexTrue) user_id Column(String, indexTrue) answer_value Column(Float, nullableFalse) created_at Column(DateTime, defaultlambda: datetime.now(timezone.utc)) def init_db(): Base.metadata.create_all(bindengine)调度器用一个后台线程周期检查当前日期是否已经变化如果发现“今天的题目不存在”就从题目池中选一道未使用的题目并标记为 open。题目池可以预设一批题目放在questions表也可以通过外部数据源动态生成。文件路径app/scheduler.pyimport threading import time from datetime import datetime, timezone from app.models import Question, SessionLocal def get_today_str(): # 使用 UTC 日期作为“每天”的边界避免时区歧义 return datetime.now(timezone.utc).strftime(%Y-%m-%d) def create_today_question_if_needed(): db SessionLocal() today get_today_str() exists db.query(Question).filter(Question.start_date today).first() if exists: db.close() return # 从尚未使用的题目池中取一道这里简化成直接读取一个内置候选 candidate ( db.query(Question) .filter(Question.start_date.is_(None)) .order_by(Question.id) .first() ) if candidate: candidate.start_date today candidate.status open db.commit() db.close() def scheduler_loop(): while True: try: create_today_question_if_needed() except Exception as e: print(scheduler error:, e) time.sleep(60) def start_scheduler(): t threading.Thread(targetscheduler_loop, daemonTrue) t.start()这个设计说明一个关键点题目状态机只有 open 和 closed 两态调度器只需要负责“今天有没有题”至于题目的关闭和结算可以由另一个按分钟检查的进程来触发。这样逻辑清晰不容易出现同一个题目被重复结算的问题。5.2 群体答案聚合算法为什么不能简单取平均这是最容易踩坑的地方。群体估算里偶尔会出现极端值。如果直接对所有答案取平均一个用户手滑填了个“9999999”就能把聚合值带偏到离谱的方向。所以在“人群答案对抗 AI”的项目里一定要使用稳健统计量。推荐方案有两种中位数对排序后的答案取中间值。优点是极其稳健不受极端值影响缺点是当答案分布呈多峰时中位数可能偏向某一簇。截尾均值去掉头部和尾部各一定比例的数据后对剩余数据取平均。通常去掉 10% 或 20% 的极端值。这种方式兼顾稳健性和数据利用率。如果项目后续国际化可以考虑更复杂的“几何中位数”但对每日游戏场景来说中位数就足够。文件路径app/aggregation.pyfrom typing import List import statistics def aggregate_crowd_answer(values: List[float], method: str median) - float: 将用户提交的估算值聚合成群体答案。 method: median 或 trimmed_mean if not values: raise ValueError(empty answer list) if method median: return statistics.median(values) if method trimmed_mean: sorted_values sorted(values) trim_count max(1, int(len(sorted_values) * 0.2)) trimmed sorted_values[trim_count:-trim_count] if not trimmed: # 如果数据量太少退化为中位数 return statistics.median(sorted_values) return sum(trimmed) / len(trimmed) raise ValueError(funsupported method: {method})这里还有另一个值得讨论的点是否应该对用户的答案做“量纲归一化”。例如一道题目是“估算北京到上海坐高铁需要多少分钟”如果用户给的答案是“5”可能是他用了小时做单位。要处理这种情况就不能只看聚合还要在题目设计阶段就明确单位并且在入口做 UI 提示。更稳妥的做法是在题目中直接带上单位例如“估算值请以‘分钟’为单位填写”。5.3 AI 答案生成模块AI 调用部分要遵循一个原则不要直接拿模型输出字符串当数字必须做格式校验和容错。因为大模型经常会在数字前后加解释性文字或者输出一个范围而不是单点值。文件路径app/ai_estimator.pyimport os import re import httpx from dotenv import load_dotenv load_dotenv() AI_API_KEY os.getenv(AI_API_KEY) AI_BASE_URL os.getenv(AI_BASE_URL, https://api.your-ai-service.com/v1) AI_MODEL os.getenv(AI_MODEL, gpt-4o-mini) async def ask_ai_for_estimation(question_text: str, lower_bound: float, upper_bound: float) - float: prompt f 你正在参加一个每日估算游戏。请根据问题给出一个具体的数值答案只输出数字不输出任何解释。 问题{question_text} 请确保你的答案在 {lower_bound} 到 {upper_bound} 之间。如果题目没有明确范围请基于常识给出估计。 输出格式一个数字 headers { Authorization: fBearer {AI_API_KEY}, Content-Type: application/json, } payload { model: AI_MODEL, messages: [ {role: user, content: prompt} ], temperature: 0.2, } async with httpx.AsyncClient(timeout30) as client: response await client.post(f{AI_BASE_URL}/chat/completions, jsonpayload, headersheaders) response.raise_for_status() content response.json()[choices][0][message][content] number_match re.search(r-?\d(\.\d)?, content) if not number_match: raise ValueError(fAI 输出无法解析为数字: {content}) value float(number_match.group()) # 做边界钳制防止模型给出明显不合理的答案 if lower_bound is not None and value lower_bound: value lower_bound if upper_bound is not None and value upper_bound: value upper_bound return value这段代码有三个关键设计温度调低估算题目希望模型尽量稳定所以 temperature 设为 0.2正则提取数字不信任模型会真的只输出数字边界钳制如果题目本身定义了合理范围就限制输出避免出现“估算一个小区周边超市数量模型回答 10000”这种灾难性输出。如果你的场景不需要直接调用外部 API而是想让用户自己配置一个本地模型也可以把这段封装成策略接口替换为本地推理。5.4 接口层提交答案与查看结果有了上述模块还需要暴露 HTTP 接口让前端调用。这里用 FastAPI 实现两个核心接口提交答案、按当前题目查看结果。文件路径app/main.pyfrom datetime import datetime, timezone from fastapi import FastAPI, HTTPException, Depends from pydantic import BaseModel from sqlalchemy.orm import Session from app.models import Question, UserAnswer, SessionLocal, init_db from app.scheduler import start_scheduler from app.aggregation import aggregate_crowd_answer from app.ai_estimator import ask_ai_for_estimation app FastAPI() init_db() start_scheduler() def get_db(): db SessionLocal() try: yield db finally: db.close() class AnswerIn(BaseModel): user_id: str answer_value: float question_id: int app.get(/api/question/today) def get_today_question(db: Session Depends(get_db)): today datetime.now(timezone.utc).strftime(%Y-%m-%d) question db.query(Question).filter(Question.start_date today).first() if not question: return {question: None, message: 今日题目尚未生成} return { id: question.id, question_text: question.question_text, lower_bound: question.answer_lower_bound, upper_bound: question.answer_upper_bound, status: question.status, } app.post(/api/answer) def submit_answer(payload: AnswerIn, db: Session Depends(get_db)): question db.get(Question, payload.question_id) if not question: raise HTTPException(status_code404, detailquestion not found) if question.status ! open: raise HTTPException(status_code400, detailquestion is closed) user_answer UserAnswer( question_idpayload.question_id, user_idpayload.user_id, answer_valuepayload.answer_value, ) db.add(user_answer) db.commit() return {status: ok} app.get(/api/question/{question_id}/result) def get_question_result(question_id: int, db: Session Depends(get_db)): question db.get(Question, question_id) if not question: raise HTTPException(status_code404, detailquestion not found) if question.status open: # 尚未结算返回当前参与人数 count db.query(UserAnswer).filter(UserAnswer.question_id question_id).count() return {status: open, participants: count} return { status: closed, crowd_answer: question.crowd_answer, ai_answer: question.ai_answer, real_answer: question.real_answer, crowd_error: abs(question.crowd_answer - question.real_answer), ai_error: abs(question.ai_answer - question.real_answer), winner: crowd if abs(question.crowd_answer - question.real_answer) abs(question.ai_answer - question.real_answer) else ai, }这里值得注意的是结算逻辑不应该放在 HTTP 请求中而是应该由一个定时器在题目到期后执行。否则可能出现多个用户同时请求结算导致重复计算。更稳妥的做法是给Question表加一个computed_at字段在结算前先检查是否已经结算过。6. 运行验证如何判断系统真正跑通了写完代码后我们先不追求复杂度用一个最小的流程验证“人类答案 vs AI 答案”的核心循环。启动服务uvicorn app.main:app --reload --port 8000然后在另一个终端运行一个简单的测试脚本模拟两个用户提交答案python - PY import random import httpx base http://127.0.0.1:8000 today_q httpx.get(f{base}/api/question/today).json() print(today question:, today_q) qid today_q[id] for uid in [user_a, user_b]: answer random.uniform(100, 110) resp httpx.post(f{base}/api/answer, json{ user_id: uid, answer_value: answer, question_id: qid, }) print(uid, resp.json()) PY如果一切正常你会看到提交接口返回{status: ok}。但完整的人机对战还需要执行“结算”。上面示例代码没有写自动结算线程所以这一步你可以临时在数据库里手动把题目状态改为closed然后调用aggregate_crowd_answer和ask_ai_for_estimation再回填结果。这里给出一个结算脚本的参考文件路径scripts/settle_question.pyimport asyncio from sqlalchemy.orm import Session from app.models import Question, UserAnswer, SessionLocal from app.aggregation import aggregate_crowd_answer from app.ai_estimator import ask_ai_for_estimation async def settle_question(question_id: int): db SessionLocal() question db.get(Question, question_id) if question is None or question.status closed: db.close() return answers [ row.answer_value for row in db.query(UserAnswer) .filter(UserAnswer.question_id question_id) .all() ] if not answers: print(no answers, skip) db.close() return crowd_value aggregate_crowd_answer(answers, methodmedian) ai_value await ask_ai_for_estimation( question_textquestion.question_text, lower_boundquestion.answer_lower_bound or 0, upper_boundquestion.answer_upper_bound or 1_000_000_000, ) question.crowd_answer crowd_value question.ai_answer ai_value question.status closed db.commit() db.close() print(freal{question.real_answer}, crowd{crowd_value}, ai{ai_value}) print(crowd error:, abs(crowd_value - question.real_answer)) print(ai error:, abs(ai_value - question.real_answer)) if __name__ __main__: asyncio.run(settle_question(question_id1))运行验证时我建议分三步看看接口连通性/api/question/today是否能拿到今日题目。看数据落库提交答案后SQLite 中user_answers表是否有新增记录。看结算输出settle_question.py能否成功回填 crowd_answer 和 ai_answer并打印误差。如果第二步失败优先检查数据库连接地址和模型的建表语句是否执行成功如果第三步失败优先检查 AI API 的 key、base_url 以及网络连通性。7. 常见问题与排查思路实现这类项目的过程中有几个高频问题值得提前列入排查手册。问题现象可能原因排查方式解决方案今日题目一直不生成调度线程没有启动或数据库中没有候选题目查看进程日志检查 questions 表是否有未使用题目确认start_scheduler()被调用并预置题目种子数据用户提交答案后接口报 400题目状态已经是 closed或题目 ID 不匹配查看接口返回的具体 message前端展示题目时检查题目状态引导用户参与今日题目聚合答案被极端值拉偏直接用了算术平均没有做稳健处理检查聚合函数实现改用中位数或截尾均值AI 返回结果无法解析为数字模型输出了文字解释或 JSON 格式查看原始响应日志使用正则提取数字并增加格式校验多人同时结算导致重复计算结算逻辑在 HTTP 请求中并发执行检查数据库是否有重复回填记录增加computed_at或status的原子更新判断时区不同导致 0 点换题时间不一致服务端与用户处于不同时区查看 start_date 存储时区统一使用 UTC 日期作为“天”的边界展示时再利用前端转换AI API 调用超时网络问题或模型响应过长查看 httpx 超时日志增加超时控制设置合理的重试策略这七个问题几乎覆盖了“每日一题”类最核心的工程坑。提前在设计阶段想清楚比上线后补救要省力得多。8. 最佳实践与工程建议如果只是做个 Demo上面代码已经够用。但如果你想把它当成一个持续运营、甚至能产生研究价值的项目下面这几条经验值得认真对待。8.1 题目设计是核心资产不是代码这类项目 80% 的体验取决于题目质量。差的题目有两种一种是“太难”普通用户没有感知随手乱填另一种是“太简单”AI 和人类都能秒答没有对战悬念。更推荐的题目特征是对普通人有生活经验例如“估算你所在城市一环高架桥全长”“估算一颗鸡蛋从 10 楼落下需要几秒”。有明确但非唯一量纲单位与数量级必须清晰。存在一个可论证的真实值运营方可准备参考答案但不公开算法来源。难度梯度适中每天可以设计一道连续一周形成难度波段让用户既有成就感也有挫败感。8.2 答案质量比答案数量更重要“群智涌现”的前提是答案独立性。如果用户能看到之前提交的答案并下意识地往别人答案靠拢那么中位数聚合就会产生锚定效应。在运营中提交答案前不要展示历史答案分布结算后再展示完整分布反而能提升复盘体验对异常提交如短时间内多次提交、同一 IP 高频提交做标记并在聚合时剔除。对于更严肃的数据分析场景可以给每个用户按历史准确度加权但游戏化场景中建议先保持简单的“一人一票”避免规则复杂化劝退普通玩家。8.3 AI 模型不应该只有固定一种如果你把 AI 对手做成单一模型游戏会很快失去新鲜感。更合理的设计是让“AI 阵营”包含多个模型变体或根据题目类型选择更适合的模型。例如物理常识题适合推理能力强的模型文化地理题适合知识面广的模型数量级估算题可以接一个带代码解释器的模型让它先写计算草稿再输出最终估计。这也会让系统天然成为一个多模型横向评测平台。每一道题结束后你都可以记录“哪个模型赢了人类群体”慢慢形成一个真实场景下的模型胜率榜。8.4 从游戏沉淀数据从数据反哺模型不要只把题目结果扔进数据库吃灰。每天结算后的数据有三重价值反馈给运营调整后续出题难度范围。反馈给模型评测形成持续更新的动态评测集避免静态基准的数据污染问题。反馈给提示词优化分析 AI 在哪些量级、哪些类型问题上偏差最大针对性地优化 prompt 或选用不同模型。如果团队有算法资源还可以把这套系统当成“人类反馈数据采集器”用玩家提交的估算和真实答案构建微调或预训练数据集。这比实验室里人工标注便宜得多而且数据来自真实人类多样化的判断覆盖范围往往更广。8.5 安全与权限边界任何允许用户提交内容的系统都要做输入校验和滥用防护数值字段必须限制范围拒绝负数、超大数、字符串注入用户 ID 需要通过登录体系或设备 ID 生成防止随意冒充对提交频率做限流最简单的策略是同一 user_id 每日每题只允许提交一次管理后台接口需要单独鉴权不能暴露在公网。如果将来要接入真实用户体系建议把用户系统单独拆分不要把用户敏感信息直接写入游戏数据库。9. 从游戏到评测一点延伸思考与下一步回到最开始的问题为什么这种“每日估算人机对战”值得关注我的判断是它表面上是一个轻量娱乐应用但底层是一个动态、持续、抗污染的 AI 能力观察平台。传统评测基准越来越难以回答“模型是否具备真实世界感知力”而这类用人类群体作为参照系的游戏恰好能补充一个不易被刷分的真实场景维度。如果你现在想动手尝试我建议按下面的顺序推进先用文中的代码跑通“每日一题 提交答案 结算”的最小闭环自己设计 5 道以上高质量估算题人工验证答案范围接入至少两个 AI 模型观察不同模型在同一道题上的误差差异增加一个 SQLite 或 PostgreSQL 的导出脚本把每日结算数据保存成 CSV如果验证有效再考虑加上用户体系和防刷策略。下一步可以深入的方向包括更稳健的聚合算法如迭代加权平均、多种群智阈值判断、不同模型的排序融合、以及把连续多日数据汇总成“人类群体对某类常识的共识区间”的可视化分析。这些都是前面提到的“游戏化评测”可以延伸出的次级产品价值。这篇文章不是要给你一个可以直接上线的产品而是把“一群人 AI 估算对战”背后的逻辑和工程路径拆清楚。当你真正跑完这一套再回头看那些 AI 榜单上的数字可能会多一层理解有些能力适合笔试有些能力适合竞赛而有些能力恰恰需要在“所有人一起猜一头牛有多重”这类最朴素的问题里才能看出真正的高低。
返回列表