关键词:AI Agent、Function Calling、工具调用、高可用、聚合 API
适用:想给自己的项目加一个「能自己想办法完成任务」的智能体

一、Agent 到底是什么

很多人把「调一次大模型」当成 Agent,其实不是。真正的 Agent(像 WorkBuddy 这类)核心是循环

模型看任务 → 决定调哪个工具 → 我们执行 → 结果喂回模型 → 模型继续想,直到给出最终答案。

关键在「模型自己决定调工具」,而不是你来硬编码流程。今天就用聚合 API,把这个过程跑通,并且支持一键切换大脑(Claude / GPT / DeepSeek)

二、环境准备

pip install openai

登录 TokenPortal 控制台创建 API Key,存好。控制台入口与模型清单来我主页查看。base_url 以控制台「API 文档」页为准(本文用 https://api.tokenportal.ai/v1 占位)。

三、最小 Agent:模型 + 工具循环

先给 Agent 一个计算器工具,看它会不会自己决定调用:

import json
from openai import OpenAI

client = OpenAI(api_key="你的_KEY", base_url="https://api.tokenportal.ai/v1")

tools = [{
    "type": "function",
    "function": {
        "name": "calculator",
        "description": "计算数学表达式",
        "parameters": {"type": "object", "properties": {"expr": {"type": "string"}}, "required": ["expr"]},
    },
}]

def calculator(expr):  # 真实项目里换成查库/跑代码/调内部API
    return str(eval(expr))  # demo 用,生产请做安全校验

messages = [{"role": "user", "content": "帮我算 (123*456+789)/3 是多少?"}]

while True:
    r = client.chat.completions.create(
        model="anthropic/claude-opus-4.8",  # ← 换大脑只改这里
        messages=messages, tools=tools,
    )
    msg = r.choices[0].message
    if msg.tool_calls:                      # 模型自己决定调工具
        for tc in msg.tool_calls:
            args = json.loads(tc.function.arguments)
            result = calculator(args["expr"])
            messages.append(msg)
            messages.append({"role": "tool", "tool_call_id": tc.id, "content": result})
    else:
        print(msg.content)
        break

运行后你会看到:模型没有直接瞎编答案,而是先调用 calculator,拿到结果再组织回答。这就是 Agent 的「自主」所在。

四、进阶:多模型兜底(高可用)

生产环境最怕单点——某家模型抽风,业务就挂了。聚合 API 让兜底非常轻松:主模型异常,自动切到备选。

def ask(prompt, order):
    messages = [{"role": "user", "content": prompt}]
    for m in order:
        try:
            while True:
                r = client.chat.completions.create(model=m, messages=messages, tools=tools, timeout=30)
                msg = r.choices[0].message
                if msg.tool_calls:
                    for tc in msg.tool_calls:
                        res = calculator(json.loads(tc.function.arguments)["expr"])
                        messages.append(msg)
                        messages.append({"role": "tool", "tool_call_id": tc.id, "content": res})
                else:
                    return msg.content
        except Exception as e:
            print(f"{m} 失败,切下一个")
            continue
    return "全部模型暂不可用"

print(ask(
    "帮我算 (123*456+789)/3",
    order=["anthropic/claude-opus-4.8", "openai/gpt-5.5", "deepseek/deepseek-v4-pro"],
))

默认最强模型(Opus)打头阵,出问题 1 秒内落到 GPT、再不行到 DeepSeek,业务不中断

五、还能怎么扩

  • calculator 换成 run_python / search / read_file,Agent 就能写代码、检索、读文档;
  • 工具组合越多,Agent 能干的事越复杂(长周期任务用 GLM、长篇文档用 Kimi/Qwen);
  • 同一套循环,换 model 就换「性格」,按任务性价比调度。

六、小结

用聚合 API 搭 Agent 的好处很实在:

  • 一个接口接所有模型,Agent 的大脑随时可换、可兜底;
  • 覆盖 Anthropic / OpenAI / Google / DeepSeek / 通义 / Kimi / 智谱 / MiniMax / 百度等;
  • 部分模型有折扣(如 Anthropic 低至 5 折),Agent 高频调用也扛得住成本;
  • 渠道正规、可开票、官方货源、稳定,适合公司级项目。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐