
搞 AI Agent 这半年我最大的感受是模型推理能力还在其次真正让人抓狂的是工具链。你想让 Agent 自动查代码库、抓网页、下模型文件、发通知每一个动作背后都是一个 API。很多初学者一上来就卡在“API 选哪个、免费额度多少、怎么接进流程”上面尤其是一听到 GitHub/Gitee/GitLab 下载加速就头大。这篇文章把我自己实际用过、踩过坑、现在还在用的 10 个免费 API 整理出来全部围绕 AI Agent 的真实开发场景展开涵盖大模型对话、联网搜索、网页正文提取、代码仓库操作、语音合成、对象存储、天气数据等。无论你是刚入门的 Agent 玩家还是已经在做多智能体系统的工程师这 10 个 API 都能让你少走很多弯路而且每个我都会给出可复现代码和注意事项。1. 为什么 AI Agent 需要这 10 个免费 API1.1 Agent 工具箱的四个维度AI Agent 本质上是一个“能感知、能决策、能行动”的循环系统。一个大模型只能做文本生成但加上搜索、代码执行、文件读写、语音输出这些工具之后它才变成真正的智能体。所以你需要的不只是一个大模型 API而是一整套免费的、稳定的、够用的 API 组合。我把 Agent 常用的 API 分成四个维度推理与生成大模型对话接口、图像生成接口、语音合成接口。检索与感知网页搜索、新闻、天气、股票行情等外部数据接口。代码与仓库GitHub、Gitee、GitLab 的开放 API用于拉取代码、下载 Release 资源、触发流水线。存储与分发对象存储、文件直链、静态资源 CDN用于保存 Agent 生成的文件。这四个维度覆盖了 Agent 从“读懂问题”到“调用工具”再到“产出结果”的完整链路。下面的 10 个 API 就是按这个思路选的不是随便凑数。1.2 选型标准别只看“免费”很多同学一看到“免费”两个字就冲过去注册结果接进去才发现要么限流严格要么需要绑信用卡要么文档写得稀烂。我自己的选型标准有这么几条免费额度给得干脆不需要复杂的审核流程或企业认证。API 风格现代最好是 RESTful返回 JSON兼容 OpenAI 格式的更佳。错误信息清晰比如缺 key 会直接提示 “no api key”而不是返回一串莫名其妙的状态码。生态成熟有官方 SDK 或大量社区封装遇到问题能搜到方案。合规安全不需要依赖任何非官方网络工具调用链路清晰透明。基于这套标准我最终留下了下面这 10 个 API。2. 逐个拆解10 个值得收藏的免费 API2.1 DeepSeek / 智谱 GLM大模型对话与 Function Calling大模型 API 是 Agent 的“大脑”我首推 DeepSeek 和智谱 GLM。DeepSeek 的开放平台注册后会有一定额度的免费体验 token足够跑通测试智谱的glm-4-flash则是长期免费适合做轻量级 Agent 的默认模型。这两个都兼容 OpenAI 的接口格式所以代码可以复用。你只需要改 base_url 和 api_key。下面是一个最简的对话调用import os from openai import OpenAI client OpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), base_urlhttps://api.deepseek.com ) resp client.chat.completions.create( modeldeepseek-chat, messages[{role: user, content: 用一段话解释什么是 AI Agent}], temperature0.7 ) print(resp.choices[0].message.content)如果你用智谱只需要把base_url换成https://open.bigmodel.cn/api/paas/v4模型名改成glm-4-flash即可。更关键的在于 Function Calling。Agent 需要通过结构化参数触发工具调用DeepSeek 和 GLM 都原生支持。你可以在请求里声明toolstools [{ type: function, function: { name: get_weather, description: 获取指定城市的实时天气, parameters: { type: object, properties: {city: {type: string}}, required: [city] } } }]然后模型如果认为需要查天气就会在返回值里带上tool_calls字段而不是直接写一段话。你的 Agent 解析这个结构执行真正的天气查询把结果再回传给模型如此循环。我实测过DeepSeek 的 Function Calling 在简单场景下够用但复杂嵌套工具调用偶尔会漏参数所以务必做参数校验和兜底。2.2 Tavily Search API给 LLM 一个联网搜索工具离线大模型永远不知道最新的新闻、股价、赛事结果所以联网搜索是 Agent 最需要的工具之一。Tavily 是这个领域里对开发者最友好的服务注册后每个月送 1000 次免费搜索足够个人项目和原型验证。Tavily 的 API 非常简单一个POST请求就能拿到搜索结果摘要和来源链接import requests response requests.post( https://api.tavily.com/search, json{ api_key: 你的key, query: 2025年AI Agent最新框架, search_depth: basic, max_results: 5 } ) data response.json() for result in data[results]: print(result[title], result[url])它最棒的地方在于返回结果已经做了内容提取直接可以作为上下文塞给大模型不需要你再自己抓网页。我通常会把搜索到的页面再用下一节的网页提取 API 做二次清洗效果更好。注意免费版每分钟请求数有限如果 Agent 需要并发搜索一定要在本地做限流否则容易 429。2.3 Jina AI Reader API把网页变成干净的 MarkdownAgent 拿到一个网页链接想要读正文内容直接用 requests 抓 HTML 往往得到一堆脚本广告。Jina AI 的 Reader 接口能帮你把任意 URL 转成 Markdown 文本请求方式极其粗暴curl https://r.jina.ai/https://example.com/article更推荐在 Python 里加请求头使用import requests headers { Authorization: Bearer 你的jina_key, X-Return-Format: markdown } url https://r.jina.ai/https://news.ycombinator.com/item?id123456 resp requests.get(url, headersheaders, timeout30) markdown_text resp.text这个接口对新闻、博客、文档页面效果很好正文提取干净表格也能保留结构。如果你的 Agent 需要做领域调研、竞品分析、日报生成拿它当信息采集器非常合适。免费额度的体验期比较短如果项目长期跑可以考虑自建一个轻量的提取服务或者搭配下面的 GitHub API 缓存结果避免重复消耗。2.4 GitHub REST API管理仓库、拿 Release 下载地址GitHub API 是开发者的基础设施。AI Agent 可以用它自动拉取依赖项目、监控 Release、下载模型权重或二进制工具。未认证的匿名请求只有 60 次/小时认证后是 5000 次/小时所以一定要配置 token。获取最新 Release 信息的代码import requests headers { Accept: application/vnd.githubjson, Authorization: Bearer ghp_你的token, X-GitHub-Api-Version: 2022-11-28 } release requests.get( https://api.github.com/repos/huggingface/transformers/releases/latest, headersheaders ).json() for asset in release[assets]: print(asset[name], asset[browser_download_url])拿到browser_download_url之后Agent 可以直接用这个直链下载。但 GitHub 的下载速度在国际网络环境下波动较大所以我一般会把小文件比如配置文件、文本资源、配置文件放到 jsDelivr 这个公共 CDN 上加速。jsDelivr 可以访问 GitHub 仓库里的文件路径规则是https://cdn.jsdelivr.net/gh/用户名/仓库名版本号/文件路径比如要访问仓库user/repo里main分支的data/config.jsoncurl https://cdn.jsdelivr.net/gh/user/repomain/data/config.json这种方式只适合仓库中未超过 CDN 限制的中小文件不适合传输动辄几个 GB 的模型权重。对于大文件我建议用第 9 个 APICloudflare R2配合预签名 URL 做分发而不是直接硬扛 GitHub 下载。2.5 Gitee OpenAPI国内仓库归档包下载如果你的 Agent 运行在国内服务器或者你的用户群体在国内Gitee 的速度优势非常明显。Gitee 开放 API 可以拉取仓库信息、创建 Issue、获取归档包。其中zipball接口能直接生成仓库源码的 zip 压缩包直链特别适合 Agent 去同步一份代码。获取公开仓库 zip 包的最简单方式curl -L https://gitee.com/api/v5/repos/用户名/仓库名/zipball?refmaster如果是私有仓库需要带 access tokencurl -L https://gitee.com/api/v5/repos/用户名/仓库名/zipball?refmasteraccess_token你的tokenPython 里可以直接用 requests 下载并解压import requests import zipfile import io url https://gitee.com/api/v5/repos/用户/仓库/zipball?refmaster resp requests.get(url, timeout60) z zipfile.ZipFile(io.BytesIO(resp.content)) z.extractall(./downloaded)我实际测试下来同样一个仓库从 Gitee 下 zip 的速度比 GitHub 快不少而且内网可达性更好。你可以写一个周期任务每天用 GitHub API 拉取最新 commit hash如果发现远程有更新就把仓库同步到 Gitee通过 Gitee 的“仓库镜像”功能或 git push然后 Agent 再从 Gitee 的 zipball 接口获取快照。2.6 GitLab API私有仓库归档与 CI 触发GitLab 的 API 比 GitHub 更“工程化”特别是自建 GitLab 的企业用 API 做自动发布、归档、流水线触发特别顺手。GitLab 免费账号可以创建私有仓库个人访问令牌可以控制精确权限。获取一个项目指定分支的归档包curl --header PRIVATE-TOKEN: 你的token \ https://gitlab.com/api/v4/projects/项目ID/repository/archive.zip?shamain注意项目 ID 不是仓库名需要先在 GitLab 页面里查看或者通过 API 搜索curl --header PRIVATE-TOKEN: 你的token \ https://gitlab.com/api/v4/projects?search仓库名如果你的 Agent 需要触发 CI 流水线可以用curl --request POST \ --header PRIVATE-TOKEN: 你的token \ --data refmain \ https://gitlab.com/api/v4/projects/项目ID/pipeline这个能力在自动化发布场景里极有用。我之前写过一个小型 Agent定期检查 GitLab 仓库的 MR 状态发现有合并事件就自动跑测试流水线再把测试报告通过 API 提交到 Issue 里全程免人工。2.7 Hugging Face Inference API免征费用开源模型做推理Hugging Face 是模型界的“GitHub”它的 Inference API 可以让 Agent 直接调用上面托管的开源模型不用自己部署 GPU。免费额度虽然限流但对原型和低频率任务完全够用。调用文本 Embedding 模型生成向量可以用下面的方式import requests API_URL https://api-inference.huggingface.co/models/sentence-transformers/all-MiniLM-L6-v2 headers {Authorization: Bearer hf_你的token} response requests.post( API_URL, headersheaders, json{inputs: AI Agent 是一种自主智能体} ) vector response.json() print(len(vector[0]))同样地你也可以调用文本生成模型、问答模型、图像分类模型。很多模型在免费额度下每个请求的排队时间较长因为共享 GPU 资源紧张所以尽量把输出结果缓存到本地数据库减少重复调用。如果你是做 RAG 应用Hugging Face 的 Embedding 接口可以作为向量化服务配合本地向量数据库完全能支撑中小规模的检索增强。2.8 Azure Speech / edge-tts语音合成与识别AI Agent 有时候需要“说话”语音合成 API 就成了必需。Azure 认知服务的语音相关接口有免费额度注册一年内每月有 50 万字符的免费 TTS足够做个人助理或语音播报类应用。Azure 的调用需要密钥和区域import azure.cognitiveservices.speech as speechsdk speech_config speechsdk.SpeechConfig( subscription你的azure_key, regioneastasia ) speech_config.speech_synthesis_voice_name zh-CN-XiaoxiaoNeural synthesizer speechsdk.SpeechSynthesizer(speech_configspeech_config) synthesizer.speak_text_async(你好我是你的AI助手).get()如果想要零成本快速验证也可以尝试开源社区维护的edge-tts库。它调用的是微软 Edge 浏览器的在线语音服务不需要 key一条命令就能生成 mp3pip install edge-tts edge-tts --voice zh-CN-XiaoxiaoNeural --text 你好Agent --write-media output.mp3不过这类非官方接口随时可能失效不建议在生产环境长期依赖。我的策略是原型阶段用 edge-tts上线前切到 Azure 或本地 TTS 引擎。2.9 Cloudflare R25GB 级别免费下载流量的对象存储Agent 会生成很多文件周报 PDF、图片、模型导出的 JSON、用户上传的附件。这些文件需要一个低成本的存储方案。Cloudflare R2 是目前对个人开发者最友好的对象存储之一它兼容 S3 API而且出站流量不额外收费——这意味着你可以把下载直链公开给用户不用担心带宽账单。我个人的习惯是把测试环境的所有产出文件都放 R2一个月的流出流量通常在 5GB 以内这部分在免费额度覆盖下基本接近零成本。你可以这样理解如果 Agent 只是做小规模分发5GB/月 的流量已经可以支撑几千次常规文件下载。用 S3 SDK 上传文件import boto3 from botocore.client import Config s3 boto3.client( s3, endpoint_urlhttps://account_id.r2.cloudflarestorage.com, aws_access_key_id你的access_key_id, aws_secret_access_key你的access_key_secret, configConfig(signature_versions3v4) ) s3.upload_file(./agent_report.pdf, my-bucket, reports/agent_report.pdf)上传后你可以直接生成带有签名的临时下载链接url s3.generate_presigned_url( get_object, Params{Bucket: my-bucket, Key: reports/agent_report.pdf}, ExpiresIn3600 )然后把url返回给 Agent让用户从 URL 下载。放到公网服务器上用户直接访问这个链接即可。需要注意存储桶要配置好 CORS前端 JavaScript 直接跨域访问时才会正常。2.10 Open-Meteo无 key 免费天气与地理数据天气查询是 Agent 工具调用里最常见的“小工具”。市面上的天气 API 大多需要 key、有免费额度但 Open-Meteo 完全不需要 key直接通过 GET 请求获取数据。查询北京的实时天气import requests resp requests.get( https://api.open-meteo.com/v1/forecast, params{ latitude: 39.9, longitude: 116.4, current_weather: True, hourly: temperature_2m,precipitation, timezone: Asia/Shanghai } ) data resp.json() print(data[current_weather])返回的 JSON 干净、体积小非常适合 Agent 解析。除了实时天气它还有 16 天预报、历史天气、空气质量等接口全部免费。我经常把 Open-Meteo 和 Tavily 组合使用Agent 先通过 Tavily 搜索事件再通过 Open-Meteo 检查天气生成一份“当日出行建议”。3. 实操过程中的 4 个核心环节3.1 API Key 的统一管理与安全热词里有一个很典型的报错llm-deepseek: no api key for provider route deepseek-official。这个我见过太多次了基本都是因为代码里读不到环境变量。比如你明明在 shell 里 export 了DEEPSEEK_API_KEY但在 IDE 里运行代码时没有继承环境变量程序就报错。我的做法是统一用一个.env文件管理所有 keyDEEPSEEK_API_KEYsk-xxxx TAVILY_API_KEYtvly-xxxx HF_TOKENhf_xxxx GITEE_TOKENxxxx GITLAB_TOKENxxxx然后在项目启动入口用python-dotenv加载from dotenv import load_dotenv load_dotenv() import os key os.getenv(DEEPSEEK_API_KEY)注意永远不要把 key 写进代码仓库尤其是提交到 GitHub / Gitee / GitLab 的公开仓库里。一旦泄露立刻去控制台 revoke 并重建。3.2 下载链路的提速组合拳很多 Agent 需要自动下载依赖资源但下载慢会堵塞整个流程。我给团队定的标准流程是先用 GitHub API 查询 Release 信息和文件大小。如果文件小于 20MB 且是公开仓库的静态文件优先走 jsDelivr CDN。如果文件大小在 500MB 以内且用户主要在国内优先同步到 Gitee 后走 zipball 接口。如果文件更大比如模型权重直接用 R2 预签名 URL或者让 Agent 走断点续传R2 支持 Range 请求。这个流程写成一个download_manager.py模块里面是fetch(url, modeauto)函数内部做策略判断极大提高了稳定性。实际验证过的一个例子我要下载一个 300MB 的开源软件包直接从 GitHub Releases 下载需要 15 分钟把这个包放到 Gitee Release 后同样的网络环境只需要 2 分钟。如果不想手动操作可以在自己的云服务器上定时用 GitHub Action 同步到 Gitee。3.3 免费额度用光了怎么办免费 API 毕竟是有限的我归纳了三种自救方式多供应商轮询比如大模型接口DeepSeek 没额度了切智谱 GLM再不行切本地私有化模型。缓存一切可缓存的内容网页提取、天气查询、搜索结果的周期性任务结果都放到本地 SQLite 或者 R2设置 TTL避免重复调用付费额度。降级策略免费额度耗尽时让 Agent 返回“当前工具不可用但我可以基于常识回答”的提示而不是直接报错崩溃。我自己以前踩过最大的坑没有一个额度监控。后来写了一个系统每天凌晨统计每个 API 的剩余配额配额低于 20% 时通过邮件/企业微信通知管理员。真正做到心里有数。3.4 让 Agent 稳定调用 API 的工程习惯对于“AI Agent 怎么扛并发”这个问题如果你只是百人以下的小项目核心逻辑很简单限流 重试 隔离。限流是每个调用都包一层节流器比如 Tavily 免费版每分钟 10 次请求就写一个装饰器import time from functools import wraps def rate_limiter(interval): def decorator(func): last_call [0.0] wraps(func) def wrapper(*args, **kwargs): now time.time() wait_time interval - (now - last_call[0]) if wait_time 0: time.sleep(wait_time) result func(*args, **kwargs) last_call[0] time.time() return result return wrapper return decorator重试方面对于 429、503、5xx 错误要加指数退避重试对于 401 key 失效则直接报错不要盲目重试。隔离的意思是同一个 Agent 的多个工具调用要放在独立线程或进程里某个 API 阻塞不能影响其他任务。4. 常见问题与排查技巧实录这一节是实打实的排错经验我按照最容易踩的坑整理成了一个速查表。问题现象常见原因解决办法DeepSeek 报no api key for provider route deepseek-official环境变量未加载或 API key 为空检查.env文件和os.getenv调用确认程序启动时已加载GitHub API 返回403 rate limit exceeded未使用认证 token60 次额度耗尽加上Authorization头或用X-GitHub-Api-Version新版接口Gitee zipball 下载返回 403私有仓库未带 access_token或 token 权限不够生成新的 token勾选仓库读写权限GitLab archive 下载超时仓库过大、请求的 sha 分支不存在指定path参数只下载需要的子目录或限制 CI 深度Hugging Face Inference API 返回 429免费额度耗尽或并发太高加本地缓存排队请求之间 sleep 2-5 秒edge-tts 生成空白 mp3网络无法连接微软语音服务或防火墙拦截换 Azure Speech 官方接口或切换到本地 TTS 引擎R2 预签名 URL 打开报InvalidArgument签名过期或时钟偏差增加 ExpiresIn 时间检查本机时间是否准确调用 Jina Reader 时获取到乱码目标网页本身是 JS 渲染页面改用 Playwright 无头浏览器先渲染页面再用 Reader 提取还有一个我特别想提醒的不要把所有希望寄托在一个第三方加速服务上。网上有些所谓“GitHub 下载加速”接口本质是别人搭的中转服务你自己无法控制它的稳定性和安全边界而且有可能把你的请求内容暴露给未知服务商。合规安全起见我建议优先用官方 API、云厂商对象存储和代码托管平台自带的分发能力。我的经验是直接走 GitHub Releases 下载慢就把大文件传到 R2然后在 GitHub Release 说明里附上 R2 的链接要不就把公开仓库同步到 Gitee利用 Gitee 在国内的带宽优势。这样既不依赖隐藏的中转也能把下载速度提上去。写在最后这套 10 个 API 的组合我用到现在最大的感受是免费额度不是在做慈善它是在给你机会验证产品和快速迭代。真正上线后你随时可以切换到付费套餐但只要前期跑通了流程后面升级是水到渠成的事情。另外一个小技巧把所有 API 的调用都封装成统一的call_tool(name, params)函数Agent 只管输出工具名和参数底层自动做鉴权、限流、重试、日志。这样以后替换 API 供应商时只要改一个适配层不用动 Agent 本身的逻辑。我个人在实际操作中还有一个体会不要囤积 API key。最多半年没用的服务直接注销或关闭权限因为每多一个 key 就多一个泄露面。保持极简的工具链你的 Agent 会更稳定你自己也会更省心。希望这份清单能帮你在 AI Agent 开发路上少踩几个坑。