HyperAgents LLM调用层深度剖析litellm多模型路由与JSON工具调用协议设计【免费下载链接】HyperAgentsSelf-referential self-improving agents that can optimize for any computable task项目地址: https://gitcode.com/gh_mirrors/hy/HyperAgentsHyperAgents 是一个自参照、自改进的 AI Agent 系统——它能持续优化可计算任务的表现。支撑这一切的核心是其精巧的LLM 调用层通过 litellm 实现多模型路由一个接口驱动 OpenAI、Anthropic、Google 三大厂商共 14 个主流大模型并设计了一套基于 JSON 标记块的工具调用协议让 Agent 可靠地说出工具调用、做出执行结果。本文带你逐层拆解这套设计。LLM 调用层的两层架构整个调用层由两个文件组成职责清晰文件职责核心函数agent/llm.py单次 LLM 调用含重试、参数适配get_response_from_llm()agent/llm_withtools.py带工具的对话循环chat_with_agent()上层的 MetaAgent 和 TaskAgent 都继承自 AgentSystem 抽象基类统一通过chat_with_agent()消费 LLM 能力——底层换模型上层代码零改动。litellm 多模型路由一个接口驱动 14 个大模型 这是本层最漂亮的设计agent/llm.py 顶部维护了一张模型注册表覆盖三大厂商厂商模型14 个OpenAI8gpt-4o、gpt-4o-mini、o3、o3-mini、o4-mini、gpt-5、gpt-5-mini、gpt-5.2Anthropic3claude-sonnet-4-5、claude-3-5-sonnet、claude-3-haikuGoogle3gemini-3-pro-preview、gemini-2.5-pro、gemini-2.5-flash路由逻辑本身极简litellm.completion(model..., messages...)由 litellm 根据openai/gpt-4o这类前缀自动分发到对应厂商 API。但简单背后藏着三个工程细节① 宽容参数模式litellm.drop_paramsTrue # 自动丢弃某厂商不支持的参数避免报错② 按模型适配参数agent/llm.pyGPT-5 / GPT-5-mini 只支持默认 temperature主动跳过该参数GPT-5 系列要求用max_completion_tokens而非max_tokensClaude Haiku 有 4096 token 上限自动截断。③ 消息格式双向转换LiteLLM 使用content字段而项目沿用的 MetaGen API 使用text字段llm.py 和 llm.py 各做一次批量转换让两套生态无缝衔接。三步指数退避重试应对 API 抖动大模型 API 偶发超时、返回坏 JSON 是常态。get_response_from_llm() 用backoff装饰器做了兜底指数退避重试间隔翻倍最多 60 秒总时限 600 秒避免无限等待覆盖三类异常网络异常、JSON 解析失败、KeyError——把偶尔抽风变成几乎不影响。依赖版本锁定在 requirements.txt 与 requirements.txtbackofflitellm。JSON 工具调用协议让 Agent 可靠地动手这是 agent/llm_withtools.py 的核心。它没有依赖厂商私有的 tool-calling API而是自定义了一套文本协议——这保证了换任何模型都能用。协议格式用 标记块get_tooluse_prompt() 向模型注入工具清单并规定每轮只输出一个工具调用json { tool_name: bash, tool_input: {command: ls -la} } /json三个关键函数构成完整闭环函数作用check_for_tool_uses()正则提取所有json块解析失败直接跳过而非崩溃实现容错解析should_retry_tool_use()检测模型说了一半就被截断出现标记但无完整 JSON、长度 ≥2000触发重试process_tool_call()执行工具并捕获所有异常把错误文本化回传给模型自愈工具循环上限保护的 Agent 主循环chat_with_agent() 实现了调用→解析→执行→反馈的循环并内置两道安全阀max_tool_calls40单轮响应最多 40 次工具调用防止死循环multiple_tool_calls开关默认一次只执行一个工具行为更可预测。工具自动发现一个约定两个契约 工具扩展设计得极其简洁。load_tools() 扫描agent/tools/下所有 Python 文件只要模块同时暴露tool_info()JSON Schema 元信息和tool_function执行函数就被自动注册——新增工具 新增一个文件。当前内置两个工具bash 工具维持一个持久的 bash 会话BashSession用exit哨兵字符串精准切分命令输出120 秒超时保护editor 工具支持view/create/str_replace/insert/undo_edit五种操作str_replace要求old_str在文件中唯一匹配才执行文件历史栈 让每次编辑可一键撤销。LLM 调用层在整体流程中的位置理解了调用层再看整体就一目了然generate_loop.py 是总入口MetaAgent 不断改写自己TaskAgent 用 extract_jsons() 从json块中提取最终答案。这套 LLM 调用层驱动的任务可以是代码基准、IMO 证明题也可以像下图这样的游戏环境NLE/NetHack 瓦片素材新手快速上手指南配置密钥与运行入口只需三步即可跑起来配置密钥在.env中写入OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEYlitellm 会自动读取初始化 Agentbash ./setup_initial.sh启动自改进循环python generate_loop.py --domains domain。关键文件清单路径说明agent/llm.pylitellm 路由、模型注册表、重试逻辑agent/llm_withtools.pyJSON 工具调用协议与 Agent 循环agent/tools/bash.py持久 bash 会话工具agent/tools/edit.py带撤销历史的文件编辑工具meta_agent.py / task_agent.py自改进元 Agent 与任务 Agent一句话总结HyperAgents 的 LLM 调用层用一张模型表 一次参数适配 一套文本协议换来了跨厂商的模型自由与跨模型的协议稳定——这正是自改进系统敢于让 Agent 自己修改底层代码也敢于随时切换大脑的工程底气。【免费下载链接】HyperAgentsSelf-referential self-improving agents that can optimize for any computable task项目地址: https://gitcode.com/gh_mirrors/hy/HyperAgents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考