首页/新闻资讯/正文详情

mini-SWE-agent 接入 Portkey 模型指南:API Key 配置、工具调用协议与成本追踪实战

发布时间:2026/9/27 23:51:12 来源:云帆数科 栏目:资讯中心
mini-SWE-agent 接入 Portkey 模型指南:API Key 配置、工具调用协议与成本追踪实战
人工智能大模型AI Agent代码智能体【免费下载链接】mini-swe-agentThe 100 line AI agent that solves GitHub issues or helps you in your command line. Radically simple, no huge configs, no giant monorepo—but scores 74% on SWE-bench verified!项目地址https://gitcode.com/gh_mirrors/mi/mini-swe-agent点击查看免费下载mini-SWE-agent 提供portkey与portkey_response两种模型类分别基于 Portkey 网关的 Chat Completions API 与 OpenAI Responses API用于在不直接绑定单一厂商的前提下访问 OpenAI、Anthropic、Google 等多家大模型并统一获得可观测性、缓存与路由能力。读完本文你将掌握如何安装依赖、配置密钥、在 CLI 与 YAML 配置文件中启用 Portkey 模型、理解其工具调用解析与格式错误处理机制以及如何利用 litellm 完成精确的成本统计与全局限额控制。Portkey 在 mini-SWE-agent 模型体系中的定位在 模型总览 中mini-SWE-agent 将模型后端抽象为一组可互换的模型类通过model.model_class或--model-class快捷名进行选择。从 模型注册表 可以看到两条 Portkey 相关映射portkey→minisweagent.models.portkey_model.PortkeyModel走/completionChat Completions端点支持原生工具调用portkey_response→minisweagent.models.portkey_response_model.PortkeyResponseAPIModel走/responseResponses API端点同样支持原生工具调用。两条路径的完整实现分别位于 portkey_model.py 与 portkey_response_model.py。与默认的litellm模型类不同Portkey 模型直接以portkey_aiSDK 发起请求仅在成本计算环节复用 litellm 的价格表——这是理解其架构的关键点。环境准备安装依赖与配置 API Key安装 portkey-ai两个 Portkey 模型类在模块导入阶段即检查portkey_ai包是否可用见 portkey_model.py缺失时会抛出明确的导入错误pip install portkey-ai配置 PORTKEY_API_KEY 与 PORTKEY_VIRTUAL_KEY模型初始化时强制要求PORTKEY_API_KEY环境变量见 portkey_model.py缺失时直接抛出ValueError并提示可用mini-extra config set PORTKEY_API_KEY YOUR_KEY将密钥持久化写入mini的全局配置文件。该行为在 test_portkey_model.py 中有对应测试。密钥配置有三种方式任选其一# 方式一推荐交互式引导设置首次运行 mini 时也会自动触发 mini-extra config setup # 方式二写入全局配置 mini-extra config set PORTKEY_API_KEY YOUR_KEY # 方式三临时环境变量重启 shell 后失效 export PORTKEY_API_KEYYOUR_KEY除了 API Key还可通过PORTKEY_VIRTUAL_KEY指定 Portkey 虚拟密钥。客户端构造逻辑见 portkey_model.py如下设置了PORTKEY_VIRTUAL_KEY时将virtual_key传给 Portkey 客户端未设置虚拟密钥但配置了provider字段时将provider传给客户端Portkey 在无虚拟密钥时要求显式指定提供商两者都没有时仅携带api_key连接。PortkeyModel与PortkeyResponseAPIModel的测试均验证了客户端以api_key与virtual_key正确初始化参见 test_portkey_model.py 与 test_portkey_response_model.py。启用 Portkey 模型CLI 与 YAML 配置双路径命令行方式与litellm、openrouter等模型类一致可以在命令行中通过-m/--model指定模型名、--model-class指定后端quickstart 指南 的 Model classes 一节给出了示例mini -m claude-sonnet-4-5-20250929 --model-class portkey注意此处模型名不需要携带厂商前缀因为 Portkey 网关本身负责将请求路由到对应厂商这与 litellm 要求模型名形如anthropic/claude-...的约定不同。配置文件方式在 agent 配置文件的model小节中声明model_class: portkey。以下是 quickstart 中给出的两个 Portkey 配置示例model: model_name: openai/gpt-5.1 model_class: portkey model_kwargs: reasoning_effort: medium verbosity: mediummodel: model_name: openai/gpt-5-mini model_class: portkey其中openai/...是 Portkey 的厂商路由命名约定。仓库内置的 swebench_modal.yaml 展示了一个生产可用的完整组合——它额外设置了provider: openai与model_kwargs.drop_params: true# GPT-5 mini via Portkey model: model_name: gpt-5-mini model_class: portkey provider: openai model_kwargs: drop_params: true若希望在 Python 脚本中直接使用可通过minisweagent.models.get_model工厂函数传入model_class: portkey它会在 models/__init__.py 中完成模型类解析与实例化。PortkeyModelConfig全部配置参数详解PortkeyModelConfig 是一个 pydantic 配置模型所有字段均可通过 YAML 的model小节或model_kwargs传入参数类型默认值说明model_namestr必填经 Portkey 网关调用的模型名如gpt-5-mini、openai/gpt-5.1model_kwargsdict[str, Any]{}透传给 Portkey 请求的额外参数如temperature、reasoning_effort、drop_paramsproviderstr使用的 LLM 提供商如openai、anthropic、google。未指定时根据model_name自动检测使用虚拟密钥时非必需否则为必填litellm_model_registryPath \| str \| None$LITELLM_MODEL_REGISTRY_PATH向 litellm 模型注册表注册额外模型用于成本计算。当前实现以 litellm 计算成本后续若 Portkey 支持更完善可能改变litellm_model_name_overridestr成本计算时覆盖传给 litellm 的模型名用于 Portkey 模型名与 litellm 价格表名称不一致的场景set_cache_controlLiteral[default_end] \| NoneNone为 Anthropic 等模型显式设置 cache control 标记cost_trackingLiteral[default, ignore_errors]$MSWEA_COST_TRACKING或default成本追踪模式ignore_errors表示忽略成本计算中的错误或缺失信息format_error_templatestr{{ error }}模型输出不符合预期格式时生成错误消息的 Jinja 模板observation_templatestr见源码渲染工具执行结果observation的 Jinja 模板包含returncode、output与可选的exception标签multimodal_regexstr提取多模态内容的正则表达式为空字符串时禁用多模态处理其中observation_template的默认值如下见 portkey_model.py{% if output.exception_info %}exception{{output.exception_info}}/exception\n{% endif %}returncode{{output.returncode}}/returncode\noutput\n{{output.output}}/output核心请求链路query 方法全流程PortkeyModel.query见 portkey_model.py是每次模型调用的主入口其流程可概括为五步消息预处理_prepare_messages_for_api会剥离消息中非 API 的extra字段、重排 Anthropic thinking blocks_reorder_anthropic_thinking_blocks并按需应用 cache controlset_cache_control。带重试的请求通过retry包装器调用_query后者调用client.chat.completions.create固定携带tools[BASH_TOOL]并将model_kwargs与调用方传入的 kwargs 合并见 portkey_model.py。BASH_TOOL定义了唯一的bash函数工具其 schema 位于 actions_toolcall.py。成本计算_calculate_cost返回{cost: float}并累加进全局统计GLOBAL_MODEL_STATS。动作解析_parse_actions将响应的tool_calls解析为动作列表解析失败抛出FormatError继承自InterruptAgentFlow见 exceptions.py并在错误消息的extra中携带成本与完整响应保证响应被持久化。返回消息将响应、解析出的动作、成本与时间戳组装进message[extra]返回给上层 agent。重试机制retry见 utils/retry.py基于 tenacity 实现默认最多尝试 10 次可用MSWEA_MODEL_RETRY_STOP_AFTER_ATTEMPT覆盖指数退避等待 460 秒并对abort_exceptionsKeyboardInterrupt、TypeError、ValueError立即中止不重试。测试用例验证了 rate limit 场景会重试成功、而TypeError只调用一次见 test_portkey_response_model.py。工具调用解析与格式错误处理parse_toolcall_actions见 actions_toolcall.py逐条解析工具调用无任何工具调用时抛出FormatError消息为format_error_template渲染的 No tool calls found in the response...并附带has_tool_callsFalse与finish_reason变量使模板能区分真正的格式错误与max_tokens截断工具名不是bash、参数 JSON 解析失败、或缺少command字段时均抛出FormatError并携带相应错误描述合法调用转换为{command: ..., tool_call_id: ...}动作字典。执行结果随后由format_observation_messages通过observation_template渲染成工具结果消息未执行的动作会被填充为returncode: -1、exception_info: action was not executed的占位输出见 actions_toolcall.py。成本追踪litellm 兜底与缓存 token 的坑PortkeyModel._calculate_cost见 portkey_model.py展示了几个重要的防御性细节若usage.prompt_tokens或usage.completion_tokens为None记录警告并置为 0当total_tokens - prompt_tokens - completion_tokens ! 0时说明 Portkey 未把缓存 token 计入 prompt tokens源码注释明确指出这是 probably a portkey bug or incompatibility with litellm cost tracking此时将prompt_tokens重算为total_tokens - completion_tokens并告警成本计算失败时若cost_tracking为ignore_errors或设置环境变量export MSWEA_COST_TRACKINGignore_errors则成本记为 0.0 继续运行否则抛出RuntimeError终止调用。PortkeyResponseAPIModel._calculate_cost见 portkey_response_model.py则断言成本必须为正数失败时同样受cost_tracking控制。所有成本都会累加到 models/__init__.py 中定义的全局单例GLOBAL_MODEL_STATS它支持通过MSWEA_GLOBAL_COST_LIMIT与MSWEA_GLOBAL_CALL_LIMIT设置总成本/总调用次数上限超限即抛出RuntimeError。两个 Portkey 模型类均在其query中调用GLOBAL_MODEL_STATS.add(cost_output[cost])因此 Portkey 路径同样受全局限额保护。PortkeyResponseAPIModel基于 Responses API 的无状态实现PortkeyResponseAPIModel 面向 OpenAI Responses API 设计其类 docstring 明确说明该实现是无状态的——每次请求必须携带完整对话历史不使用previous_response_id。核心差异有三点请求端点_query调用client.responses.create携带tools[BASH_TOOL_RESPONSE_API]定义于 actions_toolcall_response.py工具 schema 采用 Responses API 的function_call形式。消息扁平化_prepare_messages_for_api见 portkey_response_model.py遍历历史消息将object response的对象展开为其output项即function_call/function_call_output等条目并剥离所有extra字段从而把带状态的响应对象转换为无状态的输入序列。消息格式format_message将消息构造为{type: message, role: ..., content: [{type: input_text, text: ...}]}的 Responses API 结构_parse_actions从响应的output中提取function_call并通过finish_reason_from_responses_api获取结束原因传入错误模板。测试用例对上述行为逐项验证test_response_api_model_stateless_flattens_response断言带object: response的历史消息被正确展开为function_call与function_call_output条目test_response_api_model_multiple_tool_calls验证单次响应可解析出多个动作见 test_portkey_response_model.py。两种 Portkey 模型的选择建议目标模型走 Chat Completions 兼容接口、且你希望沿用provider/model的 Portkey 命名约定时选择portkeyPortkeyModel它支持provider自动/显式指定、Anthropic cache control 与多模态正则处理。目标模型如 GPT-5 系列依赖 OpenAI Responses API 的原生function_call语义时选择portkey_responsePortkeyResponseAPIModel。它的工具调用格式与 OpenAI Responses API 对齐但实现是无状态的需要在消息层面维护完整历史。两者的配置方式完全一致model_class分别填portkey与portkey_responseAPI Key、虚拟密钥、成本追踪与全局限额机制也完全通用。若需要为 litellm 价格表补充自定义模型可通过litellm_model_registry指向一个 JSON 注册文件或通过litellm_model_name_override直接指定 litellm 侧的计费模型名。可验证的参考资源模型类实现portkey_model.py、portkey_response_model.py工具调用与观察消息工具actions_toolcall.py、actions_toolcall_response.py重试与全局统计retry.py、models/__init__.py配置示例quickstart 指南、swebench_modal.yaml单元测试test_portkey_model.py、test_portkey_response_model.py模型类总览与选择依据模型总览赞分享人工智能大模型AI Agent代码智能体【免费下载链接】mini-swe-agentThe 100 line AI agent that solves GitHub issues or helps you in your command line. Radically simple, no huge configs, no giant monorepo—but scores 74% on SWE-bench verified!项目地址https://gitcode.com/gh_mirrors/mi/mini-swe-agent点击查看免费下载相关推荐SWE-agent 模型与 API Key 配置完全指南从云模型到本地模型SWE agent 模型与 API Key 配置完全指南从云模型到本地模型 本文以 SWE agent 官方文档 docs/installation/keysAI AgentAgent 框架代码智能体后端开发工具SWE-agent 模型配置完全指南多模型接入、成本控制与测试模型实战SWE agent 模型配置完全指南多模型接入、成本控制与测试模型实战 SWE agent 通过 litellm 统一接入各大语言模型其模型配置决定了整个AI AgentAgent 框架代码智能体后端开发工具warp 安装指南Windows、Linux、macOS 与 Docker 部署一次讲清warp 安装指南Windows、Linux、macOS 与 Docker 部署一次讲清 warp 是 NVIDIA 出品的 Python GPU 仿真框架高性能计算物理引擎图形学机器人上一篇Genshin FPS Unlocker终极指南免费突破原神60帧限制的完整教程下一篇Genshin FPS Unlocker终极指南5步解锁原神帧率限制畅享丝滑游戏体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

设计师做单页的网站安全注意事项:防黑客5大坑
设计师做单页的网站安全注意事项:防黑客5大坑

设计师做单页的网站安全注意事项:防黑客5大坑 很多设计师接到单子,客户只要一个炫酷的单页,但自己不会代码,直接用模板拖拽。结果上线三天,后台被拖库,或者页面被挂马。这时候客户问:“为什么我花大价钱做的网站,比免费博客还不安全?”… · 2026/9/27 23:51:12

具身智能创新设计方案(2):从单一技术到底座协同的技术突破必然性
具身智能创新设计方案(2):从单一技术到底座协同的技术突破必然性

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&… · 2026/9/27 23:51:12

具身智能创新设计方案(1):三层架构原理与协同演化逻辑研究
具身智能创新设计方案(1):三层架构原理与协同演化逻辑研究

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习(DRL)、卷积神经网络(CNN)与因式分解算法(FRA),构成了具身智… · 2026/9/27 23:51:12

新手入门gzip压缩网站:3个配置坑让加载快50%
新手入门gzip压缩网站:3个配置坑让加载快50%

新手入门gzip压缩网站:3个配置坑让加载快50% 改个需求建站公司拖一周,这种经历在行业里太常见了。很多刚入行的前端或运营新手,面对这种低效沟通往往感到无力。其实,除了沟通技巧,技术层面的优化才是硬道理。今天咱们聊的 gzip压缩网站… · 2026/9/28 0:19:04

3步搞定wordpress中文博客模板下载,告别等待的完整流程
3步搞定wordpress中文博客模板下载,告别等待的完整流程

3步搞定wordpress中文博客模板下载,告别等待的完整流程 改个需求建站公司拖一周,这种憋屈感谁懂?我做过10年建站,见过太多老板花几万块定制,结果改个颜色都要排队。其实想要个漂亮的中文博客,根本不用找外包。WordPress中文博客模… · 2026/9/28 0:18:10

2026最新网站查询访问域名避坑指南
2026最新网站查询访问域名避坑指南

2026最新网站查询访问域名避坑指南 备案流程一头雾水?别慌。很多新手刚接手网站项目,对着工信部备案系统发呆,分不清域名解析、服务器绑定和访问验证的区别,更不知道2026最新政策对“网站查询访问域名”有哪些硬性要求。… · 2026/9/28 0:17:58

娱乐彩票网站建设制作避坑指南:模板vs定制实战对比
娱乐彩票网站建设制作避坑指南:模板vs定制实战对比

娱乐彩票网站建设制作避坑指南:模板vs定制实战对比 别信那些“一键生成”的鬼话。上周一个客户拿着某知名模板站找我改,首页加载慢了8秒,后台数据全乱,看着就廉价。做娱乐彩票这类高敏感、高并发站点, 模板网站太丑不够用… · 2026/9/28 0:17:46

拒绝拖稿!《奖励自己的网站》性能优化报价单揭秘
拒绝拖稿!《奖励自己的网站》性能优化报价单揭秘

拒绝拖稿!《奖励自己的网站》性能优化报价单揭秘 改个需求建站公司拖一周,这大概是无数甲方和开发者最崩溃的瞬间。你只是想把首页那张图换个颜色,或者加个“立即购买”按钮,结果对方让你等,一等就是7天。等你急了去催,得到的回复往往是“测试环境还在… · 2026/9/28 0:17:33

网站管理建设的总结:源码下载后如何搞定服务器与证书
网站管理建设的总结:源码下载后如何搞定服务器与证书

网站管理建设的总结:源码下载后如何搞定服务器与证书 域名服务器搞不懂,是不是让你建站时心里没底?很多新手拿到【源码下载】包,解压后一脸茫然:这代码往哪放?服务器怎么连?HTTPS证书怎么搞?别慌,这就是典型的“有代码无环境”困境。… · 2026/9/28 0:17:33

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

制作网页比较方便的软件怎么选?一文搞懂避坑指南
制作网页比较方便的软件怎么选?一文搞懂避坑指南

制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码