ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

agno 集成 TokenLab 模型网关:同步、流式、异步与异步流式四种响应模式实战

agno 集成 TokenLab 模型网关:同步、流式、异步与异步流式四种响应模式实战 agno 集成 TokenLab 模型网关同步、流式、异步与异步流式四种响应模式实战【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno本篇文章以仓库中cookbook/90_models/tokenlab/目录为切入点系统讲解如何在 agno 中接入 TokenLab 这一 AI 模型网关从环境准备、basic.py示例所覆盖的同步/流式/异步/异步流式四种 Agent 响应模式到TokenLab模型类的源码实现与字符串式模型选择语法再到测试日志TEST_LOG所记录的验证状态与复现方法。读完本文你将能够在本地配置TOKENLAB_API_KEY并完整运行该示例同时理解 agno 模型层如何复用 OpenAI 兼容协议实现第三方网关的接入。TokenLab 与 agno一个 OpenAI 兼容的模型网关入口根据 tokenlab 目录下的 READMETokenLab 是一个 AI 模型网关AI model gateway提供OpenAI 兼容的/v1API在线模型发现能力端点位于https://api.tokenlab.sh/v1/models可实时查询可用模型列表额外的原生端点家族包括 Responses、Anthropic Messages 以及 Gemini 兼容 API。这意味着接入 TokenLab 后同一个 agno Agent 可以通过网关按需路由到不同协议生态的模型而无需在业务代码中感知底层协议的差异。在 agno 中TokenLab 的接入点集中在libs/agno/agno/models/tokenlab/目录模型实现位于 tokenlab.py并通过init.py 导出TokenLab类。cookbook 示例 basic.py 就是围绕该类构建的完整可运行示例。环境准备与最小运行按照 README 的四步操作即可完成环境搭建并运行示例第一步创建并激活虚拟环境python3 -m venv ~/.venvs/aienv source ~/.venvs/aienv/bin/activate第二步导出TOKENLAB_API_KEYexport TOKENLAB_API_KEY***TOKENLAB_API_KEY是 TokenLab 网关的访问密钥也是本示例能否成功运行的先决条件。cookbook 中的 TEST_LOG.md 明确记录了该示例在当前 checkout 中因未提供此密钥而被标记为SKIP的原因详见后文“测试记录解读”小节。第三步安装依赖uv pip install -U openai agno其中openai是 TokenLab 模型类底层依赖的 OpenAI 客户端库agno提供 Agent 与模型框架本身。第四步运行基础 Agentpython cookbook/90_models/tokenlab/basic.py运行前请确认TOKENLAB_API_KEY已正确导出否则源码中的认证检查会直接抛出ModelAuthenticationError具体机制见“TokenLab 模型类源码实现”一节。basic.py四种响应模式全解析basic.py 是本次测试记录对应的核心 cookbook 示例。它先构造了一个基于 TokenLab 模型的 Agentimport asyncio from agno.agent import Agent, RunOutput # noqa from agno.models.tokenlab import TokenLab agent Agent( modelTokenLab(idgpt-5.6-luna), markdownTrue, )modelTokenLab(idgpt-5.6-luna)指定使用 TokenLab 网关上的gpt-5.6-luna模型markdownTrue让 Agent 以 Markdown 格式渲染输出RunOutput用于以变量方式接收运行结果示例中以注释形式给出用法# run: RunOutput agent.run(Share a 2 sentence sci-fi story) # print(run.content)脚本在if __name__ __main__:中依次演示了四种响应模式模式调用方式说明同步Syncagent.print_response(...)阻塞等待完整响应后打印同步 流式Sync Streamingagent.print_response(..., streamTrue)边生成边输出提升首 token 体验异步Asyncasyncio.run(agent.aprint_response(...))通过asyncio.run在事件循环中执行异步 流式Async Streamingasyncio.run(agent.aprint_response(..., streamTrue))异步方式下的流式输出四个分支对应 basic.py 的__main__段if __name__ __main__: # --- Sync --- agent.print_response(Share a 2 sentence sci-fi story) # --- Sync Streaming --- agent.print_response(Share a 2 sentence sci-fi story, streamTrue) # --- Async --- asyncio.run(agent.aprint_response(Share a 2 sentence sci-fi story)) # --- Async Streaming --- asyncio.run(agent.aprint_response(Share a 2 sentence sci-fi story, streamTrue))这正是 TEST_LOG.md 对basic.py测试范围的概括“covering sync, streaming, async, and async streaming agent responses”。在实际项目中同步模式适合脚本与批处理任务流式模式适合聊天类交互界面异步模式则适合需要并发调度多个 Agent 的服务端场景——四种模式可以灵活组合为不同运行时约束提供对应出口。TokenLab 模型类源码级实现解读在 agno 中TokenLab是一个数据类dataclass定义于 tokenlab.py其关键字段与默认值如下字段默认值说明idgpt-5.4-mini默认模型 ID可在构造时覆盖示例中即覆盖为gpt-5.6-lunanameTokenLab模型显示名称providerTokenLab提供方标识api_key读取环境变量TOKENLAB_API_KEY网关访问密钥通过field(default_factorylambda: getenv(TOKENLAB_API_KEY))惰性读取base_urlhttps://api.tokenlab.sh/v1网关 API 基地址与 README 所述 OpenAI 兼容/v1API 对应类继承自OpenAILike定义于 like.py而OpenAILike又继承自OpenAIChat。这意味着 TokenLab 直接复用了 agno 对 OpenAI 协议的全部实现——包括系统/用户/助手/工具四种角色的default_role_mapsystem,user,assistant,tool与请求构造、消息解析等底层逻辑只需替换base_url和api_key即可指向任意 OpenAI 兼容网关。认证检查逻辑在_get_client_params中tokenlab.pydef _get_client_params(self) - Dict[str, Any]: if not self.api_key: self.api_key getenv(TOKENLAB_API_KEY) if not self.api_key: raise ModelAuthenticationError( messageTOKENLAB_API_KEY not set. Please set the TOKENLAB_API_KEY environment variable., model_nameself.name, ) return super()._get_client_params()即若api_key为空会再次尝试读取环境变量仍然缺失则抛出agno.exceptions.ModelAuthenticationError。这从源码层面印证了TOKENLAB_API_KEY是运行示例的硬性前置条件——也正是 TEST_LOG.md 将该测试标记为SKIP的直接原因。字符串语法modeltokenlab:gpt-5.6-luna除了直接实例化TokenLab类README 还提供了更简洁的字符串式模型选择语法from agno.agent import Agent agent Agent(modeltokenlab:gpt-5.6-luna)其底层机制在libs/agno/agno/models/utils.py的模型注册表中utils.pytokenlab: (agno.models.tokenlab, TokenLab, TokenLab, tokenlab)即get_model()解析tokenlab:gpt-5.6-luna字符串时会定位到agno.models.tokenlab模块的TokenLab类并构造出idgpt-5.6-luna的实例。这一行为由单元测试明确锁定——test_model_string.py 中的test_get_model_parses_tokenlab_stringdef test_get_model_parses_tokenlab_string(): Test get_model() parses TokenLab model string. model get_model(tokenlab:gpt-5.4-mini) assert isinstance(model, TokenLab) assert model.id gpt-5.4-mini因此字符串语法与显式实例化是等价的两种写法前者更简短适合配置驱动或快速原型后者则便于在代码中显式指定额外的模型参数。测试记录解读TEST_LOG 与 SKIP 状态TEST_LOG.md 是本次示例的测试记录完整内容如下测试目标basic.py—— Basic TokenLab model cookbook覆盖同步、流式、异步、异步流式四种 Agent 响应状态SKIP原因当前 checkout 中未提供TOKENLAB_API_KEY因此未在本地运行。需要强调的是SKIP并不代表功能异常而是“无法在当前无密钥环境下验证”的客观记录。这恰好为读者提供了完整的复现路径按照 README 导出自己的TOKENLAB_API_KEY后执行python cookbook/90_models/tokenlab/basic.py即可完成四种模式的端到端验证。若密钥缺失程序会按上文所述抛出ModelAuthenticationError并提示“TOKENLAB_API_KEY not set”方便快速定位问题。小结通过本文你可以掌握在 agno 中使用 TokenLab 模型网关的完整链路接入方式TokenLab模型类tokenlab.py基于OpenAILike → OpenAIChat复用 OpenAI 协议只需配置TOKENLAB_API_KEY与base_url模型选择既可用TokenLab(id...)显式构造也可用modeltokenlab:gpt-5.6-luna字符串语法二者由 utils.py 注册表与 test_model_string.py 测试保证等价四种运行模式同步、同步流式、异步、异步流式四套调用方式覆盖脚本、交互、并发服务等典型场景示例即 basic.py验证与排障以 TEST_LOG.md 为参照补齐密钥后即可复现完整测试缺失密钥时会得到明确的认证错误提示。在此基础上你还可以结合 TokenLab 网关的在线模型发现端点https://api.tokenlab.sh/v1/models查询可用模型并将id替换为其他模型继续复用同一套 agno 代码。【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表