公司动态
通过 Open Responses 切换供应商:AnyLanguageModel 连接 OpenRouter 教程
通过 Open Responses 切换供应商AnyLanguageModel 连接 OpenRouter 教程【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apples Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModelAnyLanguageModel 是一个 API 兼容的 Swift 语言模型框架可作为 Apple Foundation Models 的即插即用替代品核心亮点是支持自定义语言模型供应商。本文带你通过 Open Responses 协议切换供应商用 AnyLanguageModel 快速连接 OpenRouter——一个聚合数百款大模型的统一 API 平台一份 Key 即可按需切换模型彻底摆脱单一供应商锁定。 全流程 4 步注册 OpenRouter → 添加依赖 → 3 行代码初始化模型 → 调用响应全程约 10 分钟。为什么用 Open Responses 切换供应商Open Responses 是一套基于 OpenAI Responses API 的多供应商互操作规范定义了统一的请求/响应格式。AnyLanguageModel 内置了 OpenResponsesLanguageModel凡是实现了该规范的端点OpenRouter、OpenAI 等都能直接接入。对比维度传统对接方式Open Responses 切换供应商接入成本每家写一套适配代码一套代码通吃所有兼容供应商模型选择被单一厂商锁定数百款模型随意切换迁移难度高需重写请求逻辑低改一行 baseURL 即可选择OpenRouter作为供应商的理由非常实在聚合了开源与闭源主流模型、按量计费价格透明、无需分别注册各家账号是测试多模型对比的理想沙盒。准备工作注册 OpenRouter 并获取 API Key前往 OpenRouter 官网注册账号在后台的API Keys页面创建一个新 Key将 Key 保存到环境变量推荐切勿硬编码进代码避免泄露风险export OPENROUTER_API_KEYsk-or-v1-你的密钥最快配置方法添加 AnyLanguageModel 依赖在你的Package.swift中声明依赖即可如使用源码可直接 clone 后本地引用dependencies: [ .package(url: https://gitcode.com/gh_mirrors/an/AnyLanguageModel, from: 0.8.0) ]git clone https://gitcode.com/gh_mirrors/an/AnyLanguageModel连接 OpenRouter 的核心代码只需替换import FoundationModels为import AnyLanguageModel再用OpenResponsesLanguageModel指定 OpenRouter 的端点与模型标识符即可其余代码零改动import AnyLanguageModel let model OpenResponsesLanguageModel( baseURL: URL(string: https://openrouter.ai/api/v1/)!, apiKey: ProcessInfo.processInfo.environment[OPENROUTER_API_KEY]!, model: openai/gpt-4o-mini // OpenRouter 的模型标识格式厂商/模型名 ) let session LanguageModelSession(model: model) let response try await session.respond(to: 用一句话解释量子计算) print(response.content)切换模型就这么简单想换模型只改model字符串例如换成anthropic/claude-3.5-sonnet或meta-llama/llama-3.1-8b-instruct。想换供应商只改baseURL。这套改一行、换一家的体验正是 Open Responses 切换供应商的价值所在。进阶自定义生成选项精细控制每次请求OpenResponsesLanguageModel提供了丰富的专有选项定义见 OpenResponsesLanguageModel.swift包括工具调用策略、推理强度、采样参数与厂商扩展字段var options GenerationOptions(temperature: 0.7) options[custom: OpenResponsesLanguageModel.self] .init( toolChoice: .auto, // 工具选择策略 allowedTools: [getWeather], // 仅允许调用指定工具 reasoningEffort: .high, // 推理强度none/low/medium/high/xhigh topP: 0.9, // 核采样 maxOutputTokens: 500, // 输出上限 extraBody: [custom_param: .string(value)] // 未建模的参数直接透传 ) let response try await session.respond(to: 今天天气如何, options: options)结构化输出让模型返回强类型数据配合Generable宏OpenRouter 上的模型可以直接按 JSON Schema 严格模式返回结构化数据无需手写解析Generable(description: 猫咪档案) struct CatProfile { var name: String Guide(description: 猫咪的年龄, .range(0...20)) var age: Int } let response try await session.respond( to: 生成一只可爱猫咪的档案, generating: CatProfile.self ) print(response.content.name, response.content.age)流式响应边生成边输出需要打字机效果streamResponse原生支持逐帧返回增量内容let stream session.streamResponse(to: 从 1 数到 10) for try await snapshot in stream { print(snapshot.content) }常见问题与排查返回 400 错误确认 baseURL 以/结尾源码 OpenResponsesLanguageModel.swift 会自动补齐斜杠通常是你填错了端点路径。模型名报错OpenRouter 使用厂商/模型格式如openai/gpt-4o-mini可先去其模型列表页核对准确 ID。结构化输出失败严格模式要求字段全部必填且additionalProperties: false见源码自动处理逻辑请为每个字段添加Guide描述。想验证功能可参考官方测试用例 OpenResponsesLanguageModelTests.swift设置OPEN_RESPONSES_API_KEY与OPEN_RESPONSES_BASE_URL后直接运行swift test。小结通过 Open Responses 切换供应商AnyLanguageModel 让你以近乎零成本的改动接驳 OpenRouter 的丰富模型生态一个统一接口、一个 API Key、一次配置数百款模型随时换。从代码不变、只换模型名的体验开始逐步尝试工具调用、推理强度与结构化输出等高级能力轻松构建多模型驱动的 Swift 应用。/DSMLparameter /DSMLinvoke /DSMLtool_calls【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apples Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考