【元宝搜索开发者征文大赛】用元宝搜索做一个可运行的事实核对工具
发布时间:2026/10/29 2:12:54 锦皓数字建站

一、需求我平时有空会写技术科普文章。这件事有个经常被忽视的痛点——事实会过期而我手里的知识不会自动更新。举几个真实场景。写一篇《2026 年 Python 该升级到哪个版本》的文章我想确认Python 3.13 是不是真的引入了可关闭 GIL 的自由线程做一份行业对比我要核React 19 正式版到底哪天发布整理合规材料又得确认生成式 AI 服务现在是不是必须做算法备案。这些问题有三个共同特征答案不在我的训练知识里、或者我记不清、或者它随时在变。以前我的做法是打开浏览器一条条搜手动复制到文档里再手抄来源链接。笨、慢而且来源和时间经常被我抄漏读者一追问就露怯。这就是我做这个工具的出发点我需要一个能把待核验的事实批量变成带来源、带时间、可点击的核对表的东西而且它调用的必须是实时、权威的检索而不是模型凭记忆编。二、为什么需要搜索而不是只问大模型很多人会问直接问大模型不就行了我的结论是——确定性的搜索归 API概率性的表达归大模型两者必须分开。大模型有两个硬伤在这里会致命。第一是知识截止训练数据之后发布的版本、政策、财报它答不出来或者答一半。第二是来源不可控它经常一本正经地编给你一段听起来合理但查无此处的引用。而我写文章要对读者负责引用必须可溯源。元宝搜索原腾讯云联网搜索 API正好补这个位它背靠全网索引加腾讯内容生态覆盖 13 个垂直行业、157 个权威信源返回的是结构化的title / url / passage / site / date / score而不是一段自然语言。这意味着我可以把它当成一个事实取证库——我负责把事实列出来并发起查询它负责把带链接的证据还给我最后由我或我的大模型来写结论。搜索在这一步是应用运行时调用也就是工具真正跑起来的时候才去查而不是写代码时写死的。三、我怎样实现3.1 接入方式元宝搜索提供 API / MCP / Skill 三种接入。我选了最灵活的API 直连一个 HTTPS POSTBearer 鉴权几分钟就能跑通。接入前置动作都来自官方文档腾讯云控制台开通元宝搜索日常免费 2000 次/月活动期用邀请码ZVR8T824提到 6000 次/月2026-10-10 ~ 11-30以活动页最新码为准。在服务 API KEY里新建密钥明文sk-开头只显示一次存好。配置 Key三选一写进脚本顶部DEFAULT_API_KEY、命令行--key sk-xxxx、或环境变量TENCENTCLOUD_WSA_APIKEY。我图省事直接写死在脚本里本地自用没问题注意别把带 Key 的脚本外传。3.2 搜索词与参数设计调用 SearchPro 时几个参数直接影响结果质量我的经验是Query具体、带实体和意图比如Python 3.13 free threading no GIL experimental别写Python 新特性这种空话。Site查官方文档就锁docs.python.org查政策锁gov.cn。锁站比换更强的模型更管用。Freshness查近期信息用d7近 7 天/m3/y1查长期事实可省略。Industry查政务用gov、查财经用finance做领域过滤。Mode0 公开网页 / 1 垂直信源卡片 / 2 混合Cnt取 10/20/30/40/50。3.3 结果处理关键代码元宝搜索的响应里Response.Pages是一个JSON 字符串数组——每个元素本身是一条 JSON 字符串要先json.loads再取字段。这是最容易踩的坑。核心代码片段importos,json,urllib.request ENDPOINThttps://api.wsa.cloud.tencent.com/SearchProdefyuanbao_search(api_key,query,siteNone,mode2,cnt10,freshnessNone,industryNone):payload{Action:SearchPro,Version:2025-05-08,Query:query,Mode:mode,Cnt:cnt}ifsite:payload[Site]siteiffreshness:payload[Freshness]freshnessifindustry:payload[Industry]industry headers{Authorization:fBearer{api_key},Content-Type:application/json; charsetutf-8}requrllib.request.Request(ENDPOINT,datajson.dumps(payload).encode(utf-8),headersheaders,methodPOST)withurllib.request.urlopen(req,timeout10)asr:datajson.loads(r.read().decode(utf-8))returndatadefget_pages(raw):pages(raw.get(Response)or{}).get(Pages)or[]return[json.loads(p)ifisinstance(p,str)elsepforpinpages]完整可运行脚本见附件yuanbao_search_demo.py纯标准库、无需pip install支持单次检索、批量核验、以及无密钥的--sample预览模式。我做了一层封装在脚本顶部的「可编辑配置区」里维护一组{fact, query, site}变量名COMPARE_CLAIMS也可以改用--claims claims_sample.json从外部 JSON 读取脚本自动逐条发起搜索、取前TOP_N条结果渲染成一份 Markdown / HTML 的事实核对表每条都带标题、站点、时间、相关度和可点击链接。报告按每个事实一个分区排版列对齐、长文本自动换行截图发文章也很清爽。3.4 怎么跑起来一键复现依赖只有 Python 标准库不需要pip install。三种跑法# 方式 AKey 写死在脚本 DEFAULT_API_KEY直接跑我用的python yuanbao_search_demo.py# 方式 B命令行传 Keypython yuanbao_search_demo.py--keysk-xxxx# 方式 C传入自己的论断文件python yuanbao_search_demo.py--claims claims_sample.json# 没 Key 想先看效果样例预览不消耗额度python yuanbao_search_demo.py--sample跑完生成report.html打开即是事实核对表加--debug还会把每次原始返回存成debug_raw.json方便排查参数和返回结构。四、最后结果真实输入就是上面那几条待核验事实。运行后yuanbao_search_demo.py会生成一份report.html。以Python 3.13 自由线程为例搜索返回了 Python 官方 3.13 What’s New 文档与 PEP 703发布时间 2024-10-07、相关度 0.91摘要明确写了以实验特性提供 free-threaded 构建。我把这条写进文章读者点链接就能验证——这就是查得到更信得过。最终成果是一张可复用的核对表写任何文章前把要验证的论断加进脚本里的COMPARE_CLAIMS或用--claims传一个 JSON 文件跑一遍几分钟拿到带信源的证据链再动笔。五、实际效果如何有帮助的地方最直观的是省时间——以前手动搜抄链接十几分钟的事现在一条命令。更重要的是质量锁站 锁时间让我基本只拿到官网/政府源幻觉和营销号内容被天然过滤score字段帮我排序低相关的直接忽略。遇到的问题与改进Mode1垂直信源卡只吃极简实体短句“特斯拉股价”“北京天气”一旦加最新/日期等限定词就返回 0 条而且返回 0 条也扣 1 次额度。改进这类查询我改用Mode2混合实测能稳定命中。Cnt最小 10 条想要更少得自己截断。改进我在渲染时只取前 3 条展示原始数据保留。单条调用失败会拖垮整张表。改进verify_claims里对每条做了异常捕获失败只标红该行不影响其他事实。耗时测量方法用time包裹单次yuanbao_search实测单次调用往返约 0.35–0.48 秒官方标称最快 300ms4 条事实批量核验总耗时约 1.5–2 秒。测量均在本地宽带、标准版后付费下进行样本量 10 次取均值。作品阶段可演示原型AI 辅助声明本文代码框架与部分表述由 AI 辅助完成接入调试、参数设计、结果核验与运行均由本人完成运行结果真实可查。参考元宝搜索产品页 https://cloud.tencent.com/product/wsa 接入说明 https://docs.qq.com/doc/DWE54SHRMdkVnRXNK
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。