ARTICLE DETAIL

资讯详情

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

FreeLLMAPI采样参数治理:每个模型在/v1/models里如何诚实地申报supported_parameters

FreeLLMAPI采样参数治理:每个模型在/v1/models里如何诚实地申报supported_parameters FreeLLMAPI采样参数治理每个模型在/v1/models里如何诚实地申报supported_parameters【免费下载链接】freellmapi7.4 billion tokens per month. 34 free LLM providers. 635 free model endpoints. All behind one /v1 endpoint, plus any custom OpenAI-compatible endpoint. Smart routing, automatic failover, encrypted keys. Personal experimentation only.项目地址: https://gitcode.com/GitHub_Trending/fr/freellmapiFreeLLMAPI 是一个免费 LLM 聚合网关34 个免费供应商、635 个免费模型端点全部收敛到一个/v1端点背后。在OpenAI 兼容的承诺里最难兑现的往往不是基础对话而是采样参数治理——seed、top_k、logprobs、response_format这些旋钮各供应商的脾气完全不同有的严格到收到陌生字段就返回 422有的直接 400 拒绝。FreeLLMAPI 的做法是让每个模型在/v1/models里诚实地申报supported_parameters网关能安全转发什么就只宣称什么。这篇文章带你搞懂这套机制的完整设计。问题背景为什么OpenAI 兼容会悄悄变窄在治理之前FreeLLMAPI 只把temperature/max_tokens/top_p/stop四个基础参数转发给上游客户端发的其余参数seed、penalties、logit_bias、logprobs、response_format……会被请求 schema 直接校验丢弃。结果是OpenAI 兼容名不副实——结构化输出JSON 模式根本不可用。反向的问题同样真实如果无脑全量转发不同供应商的脾气会让请求翻车供应商收到陌生参数时的表现Mistral严格模式未知字段直接 422且把seed改名叫random_seedGroqlogprobs家族参数直接 400 拒绝GitHub ModelsAzure 底座只认 OpenAI 官方参数集其余 400AI Horde自建报文格式扩展参数全都不映射采样参数治理要同时解决这两个方向不转发会 400 的参数不宣称做不到的能力。治理管线三步走从请求到线上报文的完整链路整套逻辑集中在一个单一事实源模块 sampling-params.ts分三层第一步统一 schema 校验接受比想象中更宽容模块用 zod 定义了 11 个扩展参数的 schema 字段L89-L121。两个值得新手注意的宽容设计显式null一律视为未发送真实客户端会把整个请求结构体序列化未设置的旋钮带着null发过来issue #200null被静默丢弃而非报错。reasoning_effort不按枚举硬校验客户端会发明max、xhigh这类值issue #619。网关把它们钳制到最近的合法档位而不是让一个建议性旋钮变成致命的 400。第二步pickSamplingParams 提炼请求pickSamplingParams()L167-L188把解析后的 body 转成可转发字段丢弃null丢弃默认的response_format: {type:text}部分供应商收到它会 400并处理reasoning: { effort }这种对象形式的别名。第三步按平台政策改写线上报文核心是PLATFORM_PARAM_POLICIES政策表L240-L292每行记录一个供应商的已知行为drop该供应商确认会拒绝的参数发送前剥离rename参数改名如 Mistral 的seed → random_seedjsonObjectToSchemaReka 支持json_schema但拒绝json_object网关自动升级为宽松 schema保住结构化输出reasoningEfforts/maxTokensCap把越界值钳制到供应商可接受范围而不是让请求去撞 400。政策表刻意保守只记录有文档或实测证据的拒绝行为因为错误地丢掉一个可用参数和 400 一样糟糕。某个供应商如果仍然 400它会像任何无效请求一样触发故障转移并在尝试痕迹中留下记录——补一行drop条目就能修复。/v1/models 里的诚实申报如何计算申报逻辑在 model-listing.ts 与 proxy.ts 中{ id: groq/gpt-oss-120b, supported_parameters: [temperature, top_p, seed, response_format, tools, ...] }计算规则supportedParametersFor基础集temperature、top_p、max_tokens、max_completion_tokens、stop、stream是所有供应商都支持的底座加扩展集11 个扩展参数减去该平台的drop列表加工具能力只有模型自身支持 function calling 时才追加tools、tool_choice、parallel_tool_calls统一组取交集开启 unify 后一个模型名背后可能是多个供应商。此时申报的是所有成员平台的交集supportedParametersForPlatforms——只有路由器可能选中的每个平台都认账的参数才会被写进列表。比如seed能通过交集Mistral 只是改名而非不支持而top_k和logprobs都会出局。这种宁缺毋滥的申报正是诚实二字的含义客户端读到的列表就是保证不会被打回的列表。对客户端和 Agent 的实际价值按模型挑旋钮Agent 先读/v1/models只对申报了response_format的模型启用 JSON 模式避免无效请求路由侧联动路由器的结构化输出路由会跳过已知剥离response_format的平台router.ts 中调用platformDropsResponseFormat让 JSON 请求根本不落进申报过但到不了的供应商新增供应商成本极低接入方只需要在政策表里加一行drop条目申报、转发、路由三处行为自动保持一致。整套行为由测试锁住例如 Mistral 的random_seed改名、AI Horde 全量剥离、统一组交集等用例见 sampling-params.test.ts。小结与延伸阅读FreeLLMAPI 的采样参数治理可以概括为一句话转发是默认拒绝需证据申报取交集越界做钳制。它让OpenAI 兼容从一句口号变成了可审计的承诺。核心模块sampling-params.ts模型列表构建model-listing.ts行为测试sampling-params.test.ts架构文档相关描述architecture.md【免费下载链接】freellmapi7.4 billion tokens per month. 34 free LLM providers. 635 free model endpoints. All behind one /v1 endpoint, plus any custom OpenAI-compatible endpoint. Smart routing, automatic failover, encrypted keys. Personal experimentation only.项目地址: https://gitcode.com/GitHub_Trending/fr/freellmapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表