Grok怎么读取文件?公开URL、私有上传与文档问答核对教程
从 Grok 官方文件问答 API 开始,分清 file_url 和 file_id,用公开示例…
文章目录
给 Grok 一个下载链接,不代表模型已经读到文件内容。官方文件问答 API 提供 input_file,可引用公开 URL 或已上传的文件 ID,并自动使用文档搜索。本教程先用官方公开文本练习证据提取,再说明私有文件怎样接入,适合准备把文档问答接入自己工具的开发者。
第一步:分清两种文件入口
file_url 适用于无需登录即可读取的文件直链;带登录页面或临时会话的链接未必能被服务端读取。file_id 则对应通过 Files API 上传到自己账户的文件。私有材料不要为了方便测试改成公开 URL,应使用账户内上传,并检查授权与保留需求。
需要 xAI API 密钥及可用额度,聊天平台会员不等于 API 账户。本例采用官方文档推荐的 grok-4.7;文件问答要求模型能使用服务端工具。附件会让请求进入智能体式文档搜索流程,不能据此推断所有模型或所有普通聊天入口都支持。
第二步:先跑通公开示例
将 XAI_API_KEY 放在本机环境变量,安装 requests,用以下代码读取官方公开销售报告文本。代码只展示请求结构,返回数字必须根据实际文件核对,不预先假定报告中的收入值。
import os, json, requests
response = requests.post(
"https://api.x.ai/v1/responses",
headers={"Authorization": "Bearer " + os.environ["XAI_API_KEY"]},
json={
"model": "grok-4.7",
"input": [{"role": "user", "content": [
{"type": "input_text", "text": "只根据附件找出总收入、统计期间与单位。每项提供原文短引;没有写明就说未说明,不计算推测值。"},
{"type": "input_file", "file_url": "https://docs.x.ai/assets/api-examples/documents/sales-report.txt"}
]}]
}, timeout=120)
response.raise_for_status()
data = response.json()
print(json.dumps(data.get("output", []), ensure_ascii=False, indent=2))
print(json.dumps(data.get("usage", {}), ensure_ascii=False, indent=2))
第三步:用原文验证读取结果
自己打开示例文件,搜索答案中的短引,确认金额、期间和单位一致。文件不存在的字段应显示未说明。如果答案只是泛泛讲收入概念,没有原文,先检查工具调用和实际返回,不要继续追加经营分析。HTTP 成功也不能保证每个字段都被正确理解。
请重新核对:这条答案对应附件的哪一小段原文?区分明确写出的值和你计算的值。若计算总额,请列出参与计算的全部数字、单位与公式。找不到原文时撤回该结论。
第四步:换成自己的私有文件
按官方 Managing Files 文档通过 Files API 上传允许处理的材料,得到文件 ID 后,把 input_file 中的 file_url 替换为 file_id,值填写真实上传结果。不要同时保留两个字段,也不要复制别的账户返回的 ID。先用脱敏的小文件确认读取正确,再处理完整材料。
多文件比较时为文件命名并要求答案标明来源,避免把A文件的金额配到B文件的日期。修改本地文件后,旧的上传 ID 不会自动代表新版本;重新上传并更新请求中的 ID,记录文件版本。处理结束后按账户需要通过文件管理接口删除文件,避免遗留不再使用的材料。
常见错误与完成标准
鉴权错误先检查密钥与目标账户;文件找不到时核对 ID、删除状态及所属账户;公开 URL 读取失败时,检查是否返回文件本身、是否需要登录或已过期。复杂扫描件、结构混乱的长文可能需要先整理成可搜索的材料,不能靠重复提交修复内容结构。
官方提醒文档搜索附件不支持 n 大于1的批量候选请求,长文档与多次搜索也可能增加用量。生产环境可用流式输出观察进度,但流式显示文字不代表结论已核验。交付时至少保存文件版本、提问、原文依据与用量;仅当来源对应、单位正确、缺失字段没有被补造,问答流程才算通过。
官方资料
本文依据官方文档编写,资料核对日期:2026年10月18日。操作示例用于说明流程,不代表已在你的账户中运行。
本文地址:https://www.163264.com/17292
