☰
AI Agent 的数据源:public-apis 免费 API 使用指南
2026/10/10 14:27:26 网站建设 项目流程

目录

  • 1. 引言:AI Agent 的数据源
  • 2. public-apis 是什么
  • 3. 仓库结构说明
  • 4. 如何浏览与筛选 API
    • 4.1 按分类浏览
    • 4.2 按需求筛选
  • 5. 快速上手:调用一个免费 API
    • 5.1 示例一:猫的图片 API(TheCatAPI)
    • 5.2 示例二:天气查询 API(Open-Meteo)
    • 5.3 示例三:随机用户生成 API(RandomUser)
  • 6. 在代码中调用 API
    • 6.1 Python 示例
    • 6.2 JavaScript 示例
  • 7. 作为 AI Agent 的数据源
    • 7.1 为什么用免费 API 作为数据源
    • 7.2 内置知识 vs 调用免费 API:对比一览
    • 7.3 典型场景
    • 7.4 在 Agent 中接入 API(Python 示例)
    • 7.5 接入时的注意事项
  • 8. 注意事项与最佳实践
  • 9. 总结public-apis是一个由社区维护的开源项目,收录了全球超过 1400 个免费公开 API,覆盖 40 余个分类,是开发者寻找免费数据接口的「一站式目录」。本文首先介绍如何通过 README 中的字段(Auth、HTTPS、CORS 等)高效浏览与筛选 API,随后以猫图、天气、随机用户三个示例演示了从 curl 到 Python、JavaScript 的调用方式。文章重点展示了如何将这些免费 API 作为 AI Agent 的外部数据源,通过 Function Calling 让智能体实时获取真实世界信息,弥补大模型在时效性与事实性上的不足。最后总结了接入时的注意事项与最佳实践,帮助你快速上手并顺利将免费 API 集成到自己的 Agent 项目中。

1. 引言:AI Agent 的数据源

在构建 AI Agent(智能体)时,一个关键问题是如何让 Agent 获取真实世界的最新信息。大模型本身的知识存在时效性限制,无法覆盖实时变化的天气、新闻、汇率等数据。这时,外部 API 就成了 AI Agent 不可或缺的数据源。

GitHub 上有一个非常著名的开源项目——public-apis,它收录了全球数百个免费公开 API,涵盖动物、金融、天气、娱乐、开发工具等几十个分类,是开发者寻找免费数据接口的「一站式目录」。这些接口恰好可以作为 AI Agent 的「工具箱」,让 Agent 通过 Function Calling / Tool Use 实时调用外部数据,弥补大模型在事实性和时效性上的不足。

本指南将带你从零开始认识 public-apis,学会如何浏览、筛选、调用其中的 API,并重点演示如何将这些免费 API 作为 AI Agent 的数据源,给出可直接上手的实战示例。

2. public-apis 是什么

public-apis 是一个由社区维护的开源项目,仓库地址为:

https://github.com/public-apis/public-apis

它的核心价值在于:

  • 覆盖面广:收录了数百个免费公开 API,按类别组织,方便查找。
  • 信息透明:每个 API 都标注了是否免费、是否需要认证(Auth)、是否支持 HTTPS、是否支持 CORS 等关键信息。
  • 社区驱动:任何人都可以提交新的 API 或修正已有条目,内容持续更新。

简单来说,它本身不是一个 API 服务,而是一份「API 索引清单」,帮你快速发现可用的免费接口。截至撰写本文时,该仓库已收录超过 1400 个 API,覆盖 40 余个分类,是 GitHub 上最活跃的 API 索引项目之一。

3. 仓库结构说明

public-apis 仓库的核心是一个README.md文件,其中以表格形式列出了所有 API。每个 API 条目通常包含以下字段:

字段含义
API接口名称及链接
Description接口功能简介
Auth是否需要认证(如apiKey、OAuth、No)
HTTPS是否支持 HTTPS 访问
CORS是否支持跨域请求(Yes/No/Unknown)

此外,仓库还包含:

  • CONTRIBUTING.md:贡献指南,说明如何提交新的 API。
  • LICENSE:开源许可证。
  • 分类目录:README 中按类别(如 Animals、Finance、Weather 等)分组展示。

理解这些字段的含义,是高效筛选 API 的前提。例如,Auth字段决定了你调用接口前是否需要注册并获取密钥,CORS字段则直接影响该接口能否在浏览器端被前端代码直接调用。

4. 如何浏览与筛选 API

4.1 按分类浏览

打开 README 后,你会看到按字母顺序排列的分类标题,例如:

  • Animals(动物)
  • Anime(动漫)
  • Finance(金融)
  • Food & Drink(食品饮料)
  • Games(游戏)
  • Music(音乐)
  • News(新闻)
  • Weather(天气)
  • 等等

点击分类标题即可跳转到对应区域的 API 表格。每个分类下通常有多个候选接口,建议先浏览 Description 列,快速判断哪个接口最贴合你的需求。

4.2 按需求筛选

在表格中,你可以根据以下条件快速筛选:

  • Auth 列为No:无需任何认证,直接调用,适合快速测试。
  • HTTPS 列为Yes:接口支持加密传输,更安全。
  • CORS 列为Yes:支持浏览器跨域请求,适合前端项目直接调用。

例如,如果你只想找「无需认证、支持 HTTPS、支持 CORS」的接口,可以同时满足这三个条件的行优先尝试。一个实用技巧是:先用浏览器的「查找」功能(Ctrl+F / Cmd+F)在当前页面搜索关键词,再结合上述条件逐行核对,能显著提升筛选效率。

5. 快速上手:调用一个免费 API

下面以几个典型的免费 API 为例,演示如何快速调用。

5.1 示例一:猫的图片 API(TheCatAPI)

TheCatAPI 无需认证即可获取随机猫咪图片,非常适合练手。

curl"https://api.thecatapi.com/v1/images/search"

返回结果示例(JSON):

[{"id":"abc123","url":"https://cdn2.thecatapi.com/images/abc123.jpg","width":1024,"height":768}]

5.2 示例二:天气查询 API(Open-Meteo)

Open-Meteo 无需 API Key,即可获取全球天气数据。

curl"https://api.open-meteo.com/v1/forecast?latitude=39.9&longitude=116.4&current_weather=true"

返回结果示例(JSON):

{"latitude":39.9,"longitude":116.4,"current_weather":{"temperature":18.5,"windspeed":12.3,"weathercode":1}}

5.3 示例三:随机用户生成 API(RandomUser)

RandomUser 可以生成模拟用户数据,适合测试列表页或表单。

curl"https://randomuser.me/api/"

返回结果示例(JSON):

{"results":[{"name":{"first":"John","last":"Doe"},"email":"john.doe@example.com"}]}

6. 在代码中调用 API

6.1 Python 示例

使用 Python 的requests库调用随机用户 API:

importrequests url="https://randomuser.me/api/"response=requests.get(url)data=response.json()user=data["results"][0]print(f"姓名:{user['name']['first']}{user['name']['last']}")print(f"邮箱:{user['email']}")

6.2 JavaScript 示例

使用浏览器原生fetch调用猫图 API:

fetch("https://api.thecatapi.com/v1/images/search").then((response)=>response.json()).then((data)=>{constimgUrl=data[0].url;console.log("猫咪图片地址:",imgUrl);}).catch((error)=>console.error("请求失败:",error));

7. 作为 AI Agent 的数据源

public-apis 收录的免费 API 非常适合作为 AI Agent(智能体)的外部数据源,让 Agent 在对话中实时获取真实世界的信息,而不只是依赖训练时的静态知识。

7.1 为什么用免费 API 作为数据源

  • 实时性:天气、新闻、汇率等数据时刻变化,通过 API 获取能保证 Agent 回答的时效性。
  • 扩展能力:Agent 可以调用工具(Function Calling / Tool Use)访问外部 API,弥补大模型在事实性、时效性上的不足。
  • 低成本:public-apis 中大量接口免费且无需认证,适合快速搭建原型验证。

7.2 内置知识 vs 调用免费 API:对比一览

在决定是否让 Agent 接入外部 API 之前,先理解两种数据获取方式的差异会很有帮助。下表从几个关键维度做了对比:

对比维度直接使用大模型内置知识通过 Function Calling 调用免费 API
实时性受训练数据截止时间限制,无法获取最新信息实时获取天气、新闻、汇率等动态数据
准确性可能产生「幻觉」,对事实性细节易出错数据来自真实接口,事实性更强、可溯源
成本无需额外接口费用,但长上下文推理成本较高免费 API 通常零成本,仅需少量请求开销
实现复杂度零配置,开箱即用需要定义工具、处理调用与结果回传,稍复杂
覆盖范围依赖模型训练语料,覆盖面固定可扩展任意分类,覆盖数百个真实数据源
稳定性稳定,不依赖外部服务依赖第三方接口可用性,需做错误处理与降级

简要说明:内置知识适合回答常识性、通用性问题,胜在简单稳定;而免费 API 则适合需要实时、精确数据的场景,如天气查询、汇率换算、新闻摘要等。实际项目中,两者往往互补——先用内置知识理解意图,再按需调用 API 获取最新数据,最后让模型基于真实数据生成回答。这也是 7.3 中 Function Calling 示例的核心思路。

7.3 典型场景

场景推荐 API 分类示例
天气助手WeatherOpen-Meteo
新闻摘要News各类新闻聚合 API
汇率换算Finance免费汇率接口
随机数据生成Test DataRandomUser
图片生成素材Animals / ImagesTheCatAPI

7.4 在 Agent 中接入 API(Python 示例)

下面以 OpenAI 风格的 Function Calling 为例,演示如何让 Agent 调用天气 API 作为数据源:

importjsonimportrequestsfromopenaiimportOpenAI client=OpenAI()defget_weather(latitude:float,longitude:float)->str:"""调用 Open-Meteo 获取实时天气"""url="https://api.open-meteo.com/v1/forecast"params={"latitude":latitude,"longitude":longitude,"current_weather":"true"}response=requests.get(url,params=params)returnjson.dumps(response.json())tools=[{"type":"function","function":{"name":"get_weather","description":"获取指定经纬度的实时天气","parameters":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"]}}}]messages=[{"role":"user","content":"北京现在多少度?"}]# 第一轮:模型决定调用工具response=client.chat.completions.create(model="gpt-4o",messages=messages,tools=tools)# 如果模型要求调用工具,则执行并返回结果ifresponse.choices[0].message.tool_calls:tool_call=response.choices[0].message.tool_calls[0]args=json.loads(tool_call.function.arguments)weather_data=get_weather(args["latitude"],args["longitude"])messages.append(response.choices[0].message)messages.append({"role":"tool","tool_call_id":tool_call.id,"content":weather_data})# 第二轮:模型基于工具结果生成最终回答final_response=client.chat.completions.create(model="gpt-4o",messages=messages,tools=tools)print(final_response.choices[0].message.content)

7.5 接入时的注意事项

  • 错误处理:外部 API 可能超时或返回异常,Agent 应捕获异常并给出友好提示。
  • 数据校验:对 API 返回的数据做结构校验,避免脏数据进入对话上下文。
  • 频率控制:为 Agent 的 API 调用设置速率限制,防止触发接口封禁。
  • 上下文裁剪:只把关键字段注入提示词,避免返回的 JSON 过大占用上下文窗口。

8. 注意事项与最佳实践

  • 遵守接口使用限制:部分 API 有请求频率限制,请勿高频调用,避免被封禁。
  • 注意认证要求:有些 API 虽然免费,但需要注册获取 API Key,调用时需在请求头或参数中携带。
  • 检查 HTTPS 与 CORS:在浏览器端调用时,优先选择支持 CORS 的接口,避免跨域问题。
  • 关注数据许可:部分 API 返回的数据可能有使用限制,商用前请仔细阅读其条款。
  • 保持更新:public-apis 仓库持续更新,建议定期查看最新条目。

9. 总结

参考资料

  • public-apis GitHub 仓库:本文核心介绍的免费公开 API 索引清单,收录超过 1400 个接口,覆盖 40 余个分类。
  • Open-Meteo 官方文档:无需 API Key 即可获取全球天气数据的免费接口,本文天气查询示例即基于此服务。
  • TheCatAPI 官方文档:无需认证即可获取随机猫咪图片的免费 API,适合快速练手与前端演示。
  • RandomUser 官方文档:生成模拟用户数据的免费接口,适合测试列表页、表单与分页场景。
  • OpenAI Function Calling 官方指南:介绍如何让大模型通过工具调用外部 API,本文 7.3 节 Agent 接入示例即遵循该模式。

public-apis 是开发者寻找免费公开 API 的绝佳起点。通过它,你可以快速发现适合自己项目的接口,并用几行代码完成调用。无论是学习、原型验证还是正式开发,这份清单都能帮你节省大量搜索时间。

更重要的是,这些免费 API 为 AI Agent 提供了丰富的外部数据源,让智能体能够实时获取真实世界的信息。希望本指南能帮你快速上手 public-apis,找到心仪的免费 API,并顺利将其接入你的 AI Agent 项目中!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询