在 Agent(智能体)开发中,获取各个平台(如 Twitter, GitHub, Google, Slack 等)的 Token 是赋予 Agent “行动能力”(Tool Use)的关键步骤。

Agent 获取 Token 的方式取决于应用场景:是 Agent 代表开发者操作,还是代表最终用户操作。

以下是 Agent 获取多平台 Token 的四种核心模式:


1. 静态配置模式 (API Key / PAT)

适用场景: Agent 是你的私人助理,或者 Agent 代表企业本身(如客服机器人)。

这是最简单的方式。开发者在各平台的后台手动生成 Token,然后配置给 Agent。

  • 流程:

    1. 开发者操作: 登录目标平台(如 OpenAI, GitHub, Notion)的开发者后台。
    2. 生成凭证: 创建 API Key 或 PAT (Personal Access Token)。
    3. 注入 Agent: 将这些 Key 写入环境变量(.env 文件)或密钥管理服务(Vault)。
    4. Agent 读取: Agent 启动时读取环境变量初始化工具类。
  • 代码示例 (Python/LangChain):

    import os
    from langchain.tools import GitHubAction
    
    # 1. 从环境变量获取 Token
    os.environ["GITHUB_ACCESS_TOKEN"] = "ghp_xxxxxxxxxxxx"
    
    # 2. Agent 初始化工具时自动使用该 Token
    tools = [GitHubAction()] 

2. OAuth 2.0 授权模式 (User Authorization)

适用场景: Agent 是一个 SaaS 产品(如 AutoGPT 网页版),需要代表不同的用户去发推特、读邮件。

这是最复杂但最标准的模式。Agent 不能预存 Token,必须让用户通过浏览器进行“授权”。

  • 核心流程 (Authorization Code Flow):

    1. 引导授权: Agent 检测到需要访问 Google Calendar,生成一个 URL 返回给用户。
    2. 用户点击: 用户在浏览器点击链接,跳转到 Google 的登录页。
    3. 用户同意: 用户勾选“允许该 Agent 读写日历”,点击确认。
    4. 回调 (Callback): Google 将浏览器重定向回 Agent 的服务器,并附带一个临时 code
    5. 换取 Token: Agent 后端使用 code + client_secret 向 Google 换取 access_token 和 refresh_token
  • Agent 的处理逻辑:
    Agent 必须具备持久化存储(数据库),将用户的 Token 与用户的 ID 绑定存储。

    User ID Platform Access Token Refresh Token Expires In
    user_01 Google ya29.a0... 1//0g... 35993599
    user_01 Slack xoxb-12... - -

3. 自动刷新机制 (Refresh Token Loop)

适用场景: 长期运行的 Agent(如 24 小时监控市场的 Agent)。

Access Token 通常有效期很短(如 1 小时)。Agent 在执行任务过程中,如果 Token 过期,必须具备**自动“续命”**的能力,否则任务会中断。

  • 逻辑流程:
    1. Agent 发起 API 请求(例如获取 Gmail 列表)。
    2. 平台返回 HTTP 401401 Unauthorized。
    3. 捕获异常: Agent 的网络层捕获该错误。
    4. 自动刷新: Agent 读取数据库中的 refresh_token,请求平台获取新的 access_token
    5. 重试: 更新数据库,并使用新 Token 重新发起刚才失败的请求。

4. 服务账号模式 (Service Account / JWT)

适用场景: 企业级 Agent,操作云资源(AWS, GCP, Azure)。

不需要人类用户交互,而是基于机器身份认证。

  • 流程:
    1. 开发者下载一个 JSON 格式的私钥文件(Private Key)。
    2. Agent 代码加载该私钥。
    3. Agent 本地生成一个 JWT,并用私钥签名。
    4. Agent 将 JWT 发送给云平台,换取临时的 Access Token。

5. Agent 架构中 Token 的流转

在 LangChain 或 AutoGPT 等架构中,Token 并不直接给 LLM(大模型),而是给执行器(Executor)

错误的做法:直接放入 Prompt

"请帮我查询天气,这是我的 API Key: sk-123456..."

  • 风险: Token 会被发送给 LLM 提供商(如 OpenAI),存在泄露风险;且 Token 可能被模型“幻觉”修改。
正确的做法:工具封装 (Tool Wrapper)

Token 保存在运行环境(Runtime)中,LLM 只负责决定调用哪个工具

流程详解:

  1. LLM 思考: 输出 JSON 指令 {"action": "search_google", "query": "Tesla stock"}
  2. Runtime 拦截: Agent 框架(如 LangChain)解析该指令。
  3. 查找 Token: 框架从环境变量或数据库中找到 Google Search API Key。
  4. 执行请求: 框架将 Key 放入 HTTP Header,发起真实请求。
  5. 返回结果: 结果文本返回给 LLM。

6. 高级技巧:通过浏览器 Cookie 获取 (灰色地带)

适用场景: 平台没有开放 API,或者 API 限制极其严格(如某些逆向工程 Agent)。

Agent 可以通过模拟浏览器(Selenium / Puppeteer / Playwright)直接“偷”取用户登录后的 Session Token 或 Cookie。

  • 方法:
    1. 用户在 Agent 提供的浏览器窗口中扫码登录。
    2. Agent 代码执行 driver.get_cookies()
    3. Agent 保存这些 Cookie,后续请求直接附带 Cookie。
  • 缺点: 极不稳定,Cookie 失效快,且容易触发平台的风控(封号)。

总结表

模式 核心凭证 获取难度 稳定性 适用场景
静态配置 API Key / Token 低 (手动复制) 私人 Bot,测试环境
OAuth 2.0 Access/Refresh Token 高 (需开发回调) 中 (需刷新) 面向公众的 SaaS Agent
服务账号 Private Key File 极高 云资源管理 (AWS/GCP)
浏览器模拟 Cookie / Session ID 高 (逆向) 低 (易失效) 无 API 的平台
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐