人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用【免费下载链接】KilnBuild, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more.项目地址https://gitcode.com/gh_mirrors/ki/Kiln点击查看免费下载Kiln 的模型支持体系分为四个层次官方测试过的内置模型、本地 Ollama 模型、现有 Provider 上的自定义模型、以及任意 OpenAI 兼容服务器LiteLLM、vLLM 等。本文基于仓库中的模型支持文档与libs/core/kiln_ai/adapters下的实现源码讲清楚每一类模型的接入方式、在 UI 中的呈现规则尤其是 Untested 分区的含义以及结构化输出等关键能力背后的源码机制。模型支持的四个层次Kiln 可以接入几乎所有 LLM 模型但模型来源不同可用性和可靠性也不同。原始文档将其分为四类Included models内置模型推荐经过 Kiln 各功能结构化输出、数据生成、微调等测试的模型Custom Ollama models本地 Ollama 服务器中已安装的任意模型Custom models from existing providersKiln 已支持、但不在内置清单里的某个 Provider 上的模型Custom OpenAI compatible servers任何提供 OpenAI 兼容 API 的自托管服务器LiteLLM、vLLM 等其中 LiteLLM 可进一步代理 100 多家 Provider。这四类模型在模型下拉框中的分组方式按 Provider 分组、Untested Models 分区、Not Recommended 分区直接由后端返回的untested_model、deprecated、能力标志位字段驱动前端逻辑见 available_models_dropdown.svelte。内置模型接入 Provider 后从下拉框直接选择使用方式内置模型是指已在 Kiln 各功能structured output、data gen、fine tuning 等上验证过的模型是最省心的选择。使用步骤在 Settings 页面连接任意一个 AI Provider官方建议 OpenRouter因为其模型覆盖面最广连接完成后在模型下拉框中选择需要的模型。需要注意部分模型可能只支持非结构化输出或者不支持数据生成。从源码结构看当尝试为某个功能选择不支持该能力的模型时下拉框会给出警告提示如果当前功能要求的能力如 logprobs模型不支持选择时还会弹出二次确认available_models_dropdown.svelte。完整清单在源码中文档中给出的完整模型清单入口是 ml_model_list.py。这个文件是整个模型支持体系的核心数据文件超过一万一千行其结构如下ModelFamilyL16-L47模型架构家族枚举涵盖gpt、llama、claude、gemini、qwen、deepseek、kimi、glm、mimo等 28 个家族ModelNameL51具体模型版本枚举例如claude_sonnet_4_6、gpt_5_2、llama_3_3_70b、qwen_3_235b_a22b等数百个条目built_in_modelsL771 起每个KilnModel由family、name、friendly_name和一组providers构成同一个模型可以挂在多个 Provider 下且每个 Provider 有独立的model_id与能力配置。例如 GPT-6.1 Sol 同时配置了openai与openrouter两个 Provider 条目L806-L864。KilnModelProvider决定能不能用的能力标志位KilnModelProviderL368-L482是每个模型×Provider组合的配置载体解释了文档中模型是否支持某功能的底层依据。关键字段包括字段含义默认值supports_structured_output是否支持结构化输出Truesupports_data_gen是否支持数据生成Truestructured_output_mode请求结构化输出所用的 API 模式StructuredOutputMode.defaultuntested_model是否未测试通常为用户添加的模型此时 supports_ 字段不适用Falsereasoning_capable模型是否以结构化格式输出思考内容如think影响 CoT 调用策略Falsesupports_function_calling是否支持工具调用Truesupports_logprobs是否返回 logprobsFalsesupports_doc_extraction/multimodal_capable/supports_vision文档抽取、多模态、视觉能力Falsedeprecated模型在该 Provider 上已弃用Falsestructured_output_mode的取值定义在 datamodel_enums.py共 8 种模式直接对应文档中不同服务器产生结构化输出方式不同这一提示json_schema使用 API 原生的 JSON Schema 能力function_calling借助函数调用能力请求 JSONjson_mode使用 API 的 JSON 模式保证合法 JSON 但不校验 Schemajson_instructions仅在 prompt 中追加指令要求输出符合 Schema 的 JSON不使用任何 API 能力未测试模型的默认值json_instruction_and_object指令 JSON 模式双管齐下json_custom_instructions系统提示词中已含自定义 JSON 指令不再追加default/unknown由 adapter 决定或运行时查找。此外文件顶部还维护了各推理模型的思考等级映射表如GPT_5_2_OPENROUTER_THINKING_LEVELS、CLAUDE_OPUS_5_ANTHROPIC_THINKING_LEVELSL507-L768配合available_thinking_levels/default_thinking_level字段为不同 Provider 的推理强度控制提供依据并有model_validator校验默认等级必须在可选集合内L472-L482。自定义 Ollama 模型使用方式Ollama 服务器上已安装的任何模型都可以被 Kiln 使用。添加模型只需在 Ollama CLI 中执行ollama pull model_name连接成功后模型会出现在下拉框中并分两种情况已测试的 Ollama 模型出现在 Kiln 内置清单中的自动归入对应 Provider 的正常分区未测试的 Ollama 模型仍然会显示但归入 Untested 分区。如果 Ollama 部署在非默认地址可在设置中配置自定义 Ollama URL前端入口见 connect_providers.svelte/setup/(setup)/connect_providers/connect_providers.svelte#L1075) 中的 Set Custom Ollama URL。源码如何区分已测试与未测试Ollama 的连接与模型发现逻辑集中在 ollama_tools.pyollama_base_url()L15-L26优先读取配置项ollama_base_url对应环境变量OLLAMA_BASE_URL见 config.py未配置时回落到默认地址http://localhost:11434get_ollama_connection()L152-L162请求 Ollama 的/api/tags接口获取已安装模型列表超时 5 秒失败时返回Noneparse_ollama_tags()L58-L149这是已测试 vs 未测试划分的实现处。它先从built_in_models中收集所有ModelProviderName.ollama条目的model_id外加ollama_model_aliases别名构成受支持集合然后把 Ollama 返回的每个模型逐个比对命中受支持集合含:latest变体的进入supported_models其余进入untested_models。嵌入模型则单独归入supported_embedding_models不与聊天模型混淆resolve_ollama_model_variant()L178-L213同一模型可能有多个 slug 通过别名指向同一底座该函数按主 model_id → 各别名的顺序探测实际安装的变体用于生成准确的报错信息。Ollama 是否被视为已启用的 Provider由 provider_tools.py 中的provider_enabled()判定能连上且supported_models或untested_models至少有一个非空才算可用。来自现有 Provider 的自定义模型使用方式当某个模型不在内置清单里、但位于 Kiln 已支持的 Provider 上时可以在 Settings 的 AI Providers Models 区域点击Add Model手动添加前端页面见 add_models/page.svelte/settings/providers/add_models/page.svelte)。添加后该模型会出现在下拉框的 untested 分区。源码UserModelEntry 与保守的能力假设新增的自定义模型通过user_model_registry配置项持久化config.py 中同时保留了旧版custom_models与新版user_model_registry两个列表。每个条目的数据结构是UserModelEntryuser_model_entry.pyclass UserModelEntry(BaseModel): provider_type: Literal[builtin, custom] # builtin 为内置 Provider 枚举custom 为 openai_compatible provider_id: str # builtin: 如 openaicustom: 自定义 Provider 名 model_id: str # 该 Provider API 使用的模型 ID name: str | None None # 显示名缺省为 model_id overrides: dict[str, Any] | None None # KilnModelProvider 字段覆盖 id: str Field(default_factorylambda: str(uuid.uuid4()))overrides允许用户覆盖KilnModelProvider上的任意字段例如确认支持结构化输出后设置supports_structured_output: true转换时只应用当前有效的字段未知字段被静默忽略以保证向前兼容user_model_to_provider。其中name、model_id、adapter三个字段禁止覆盖——adapter 由 Provider 决定防止把模型路由到无法调用它的客户端。对自定义模型kiln_model_provider_from 会构造一个运行时KilnModelProvider采用保守默认值untested_modelTrue、supports_structured_outputFalse、supports_data_genFalse、structured_output_modejson_instructions注释标明这是所有模型都能工作的唯一模式。这正解释了为什么这类模型只能进入 Untested 分区且在使用依赖结构化输出的任务前可能需要通过overrides调整能力声明。旧版自定义模型custom_models中以provider::model_id字符串保存仍由 get_legacy_custom_models 处理且注释明确警告其 ID 格式不可变更否则会破坏历史运行记录的匹配。自定义 OpenAI 兼容服务器使用方式与前置条件如果你有 OpenAI 兼容服务器LiteLLM、vLLM 等可以在 Settings 的 AI Providers Models 区域添加一个Custom API前端入口见 connect_providers.svelte/setup/(setup)/connect_providers/connect_providers.svelte#L285-L291) 与 L1234/setup/(setup)/connect_providers/connect_providers.svelte#L1234)。该 API 支持的所有模型会出现在 untested 分区。文档强调两点注意事项与源码实现一一对应API 必须支持/v1/models端点Kiln 靠它拉取模型列表同类探测逻辑可参考 docker_model_runner_tools.py 中对/v1/models的请求多数 Kiln 任务需要结构化JSON输出而自托管服务器往往需要针对每个服务器×模型组合单独配置才能稳定产出结构化输出tools 还是 json_mode 还是纯 JSON 解析、Schema 格式等即对应上文StructuredOutputMode的各种模式。源码base_url、占位 API key 与模型 ID 格式自定义 OpenAI 兼容 Provider 以openai_compatible_providers列表保存在配置中每项含name、base_url、可选api_key其中api_key为敏感字段见 config.py。运行时的连接构造在 lite_llm_core_config_for_provider 的openai_compatible分支中base_url为必填缺失时抛错api_key可选——Ollama 等本地服务不需要密钥但 LiteLLM 客户端构造时缺少 api_key 会报错因此未提供时注入占位值PLACEHOLDER_API_KEY NAL31-L33旧版 OpenAI 兼容模型 ID 采用{provider_name}::{model_id}格式LiteLLM 只需裸模型 ID内部自动构造openai/model_id前缀因此 lite_llm_provider_model 会剥离::前缀而完整 slug 保留在run_config.model_name上用于历史追溯。LiteLLM接入更多 Provider 的通用通道Kiln 与 LiteLLM 兼容——这是一个以 OpenAI 兼容 API 暴露 100 多家模型 Provider 的开源代理。当首选 Provider 未被 Kiln 内置支持时推荐做法是部署 LiteLLM然后直接在 Settings 的 Custom API 中填入 LiteLLM 的 URL 即可无需 Kiln 侧额外配置。值得注意的是Kiln 所有内置云端 Provider 的调用也统一走 LiteLLMModelAdapterIdml_model_list.py中litellm是默认 adapter各 Provider 的 base_url、请求头与鉴权参数由 lite_llm_core_config_for_provider 的 match 语句逐一定制。例如 OpenRouter 会附加HTTP-Referer/X-Title头并注入open_router_api_keyOllama 则走其/v1OpenAI 兼容端点注释说明为了使用json_schema等更高级特性Kiln 有意不走 LiteLLM 原生的 Ollama API 路径L738-L751。Provider 启用校验连接失败的明确报错每个云端 Provider 都有必填配置项的白名单检查。provider_warningsprovider_tools.py把 Provider 映射到所需配置键例如Provider必需配置键openaiopen_ai_api_keyopenrouteropen_router_api_keyanthropicanthropic_api_keyamazon_bedrockbedrock_access_key、bedrock_secret_keyfireworks_aifireworks_api_key、fireworks_account_idazure_openaiazure_openai_api_key、azure_openai_endpointvertexvertex_project_idcloudflarecloudflare_api_key、cloudflare_account_id缺失时在调用模型前由check_provider_warnings()抛出带明确提示的ValueError配置项大多支持同名环境变量如OPENAI_API_KEY、OPENROUTER_API_KEY在 config.py 中声明。Kiln 目前内置的 Provider 全量清单见ModelProviderName枚举datamodel_enums.py共 20 个包括 OpenAI、OpenRouter、Anthropic、Gemini API、Azure OpenAI、Amazon Bedrock、Ollama、Groq、Fireworks、Hugging Face、Vertex、Together AI、SiliconFlow、Cerebras、Featherless、Cloudflare、Docker Model Runner 等。Untested 分区的呈现与测试保障下拉框的分区规则集中在 format_model_optionsuntested_modelTrue的条目统一移入 Untested Models 分组deprecated条目单独成组并禁用能力不满足当前任务要求的条目归入 Not Recommended - Data Gen Not Supported / Structured Output Fails / Tool Calling Not Supported 等动态命名的分组。选中未测试模型时页面会持续显示 This model has not been tested with Kiln. It may not work as expected. 的警告L403-L406。这一整套行为由配套测试保障test_ml_model_list.py校验所有内置模型条目的 Provider 合法性、default_thinking_level必须在可选集合内、openrouter_reasoning_object仅限 openrouter Provider、未弃用 Provider 不被标记建议、多模态 MIME 类型非空等不变量test_provider_tools.py覆盖user_model_registry条目创建、UserModelEntry默认值与 overrides 行为test_ollama_tools.py验证/api/tags解析与已测试/未测试模型的划分。小结Kiln 的模型支持可以概括为内置模型保证开箱即用未测试模型保证灵活可用。选择建议优先连接一个 Provider 并使用内置模型需要本地推理时用ollama pull拉取模型让 Kiln 自动发现并区分已测试与未测试模型使用内置 Provider 之外的模型走 Add Model自托管或小众 Provider 则统一收敛到 Custom APIOpenAI 兼容端点LiteLLM 是覆盖最广的兜底方案。所有未测试模型的底层假设untested_modelTruejson_instructions都可在 ml_model_list.py 与 provider_tools.py 中对照源码逐行核实并在 Model Support 原始文档 中查阅官方说明。赞分享人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用【免费下载链接】KilnBuild, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more.项目地址https://gitcode.com/gh_mirrors/ki/Kiln点击查看免费下载相关推荐zerostack配置LLM完全指南OpenRouter、Ollama本地模型与自定义OpenAI兼容端点一步到位zerostack配置LLM完全指南OpenRouter、Ollama本地模型与自定义OpenAI兼容端点一步到位 zerostack 是一个用 Rust 编GSD Provider 配置全指南内置云端模型、本地推理与自定义 OpenAI-Compatible EndpointGSD Provider 配置全指南内置云端模型、本地推理与自定义 OpenAI Compatible Endpoint 导读 本文以 GSD 项目的 pr人工智能AI Agent代码智能体Agent 编排CLIAI 应用LightRAG模型集成OpenAI、Hugging Face、Ollama全支持LightRAG模型集成OpenAI、Hugging Face、Ollama全支持 还在为RAGRetrieval Augmented Generation人工智能RAG大模型知识图谱本地部署创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考