首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >联网检索生成:用 20 行代码,让 AI 写出有依据的文章

联网检索生成:用 20 行代码,让 AI 写出有依据的文章

原创
作者头像
资源shanxueit.com
发布于 2026-09-15 14:14:22
发布于 2026-09-15 14:14:22
1370
举报

很多 AI 生成的文章看起来流畅,但经不起查:数据过时、来源编造、结论没有依据。 问题不在模型不会写,而在它只靠训练记忆写。

联网检索生成(Web RAG)解决的就是这件事: 先让程序去网上查资料,再把资料交给模型写。模型不再凭空回忆,而是基于证据组织语言。

核心流程只有五步:

  1. 查询:把主题变成搜索词
  2. 检索:调用搜索 API 拿结果
  3. 拼接:把标题、摘要、链接整理成上下文
  4. 生成:让 LLM 根据上下文写文章
  5. 引用:要求标注来源,方便验证

下面是一个最小可运行版本,代码很少,但闭环完整。

代码语言:javascript
复制
import os, requests
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

def search(q, k=5):
    r = requests.post("https://api.tavily.com/search", json={
        "api_key": os.getenv("TAVILY_API_KEY"),
        "query": q, "max_results": k, "search_depth": "basic"})
    return r.json()["results"]

def write(topic):
    docs = search(topic)
    ctx = "\n\n".join(
        f"[{i+1}] {d['title']}\n{d['content']}\n{d['url']}"
        for i, d in enumerate(docs)
    )
    prompt = f"根据资料写一篇800字文章,主题:{topic}。引用编号,不要编造。\n\n{ctx}"
    res = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}]
    )
    return res.choices[0].message.content

print(write("AI Agent 在 2025 年的发展趋势"))

这段代码做了三件事:

  • search():调用搜索 API,拿到 5 条网页结果;
  • write():把结果拼成带编号的上下文;
  • LLM:根据上下文生成文章,并被要求引用来源。

真正决定质量的,不是代码,而是这几个设计:

第一,查询改写。 用户问“AI Agent 最近怎么样”,搜索词应改成“AI Agent 2025 趋势 企业应用”。查询越具体,资料越干净。

第二,多源交叉。 至少取 3 到 5 个来源。只有一个来源,容易片面;来源互相矛盾,才值得分析。

第三,时间过滤。 新闻、融资、政策类主题,必须加日期。否则模型会把 2022 年的旧闻当新闻写。

第四,引用校验。 生成后检查编号是否对应真实链接。没有引用,就无法判断文章是检索生成,还是模型幻觉。

第五,失败重试。 搜索为空、结果不相关、网页打不开,都要换关键词重试,而不是硬写。

常见坑也很明显:

  • 直接问模型“最新消息”,它可能编;
  • 把整页 HTML 塞进去,噪声太大;
  • 检索一次就写,容易漏掉关键信息;
  • 不标注来源,读者无法验证。

如果你用 Agent 框架,可以把 search 注册成一个工具,让模型自己决定什么时候查、查几次。但最小版本不需要框架:一个搜索 API,一个 LLM,二十行代码,就能跑通。

联网检索生成不是让模型变聪明,而是让它有证据。 少量代码解决“有没有查”,真正难的是“查得准、写得清、引得住”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档