AnyLanguageModel 是什么?Swift 开发者接入大模型的终极一站式方案
【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apple's Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModel
如果你是一名 Swift 开发者,想要在 App 里接入大模型,却苦于每个厂商的 SDK 各不相同、API 五花八门——那么AnyLanguageModel正是你需要的一站式大模型接入方案。它是一个与 Apple 官方 Foundation Models 框架 API 完全兼容的开源 Swift 包,只需把import FoundationModels改成import AnyLanguageModel,就能在**本地模型(Core ML、MLX、llama.cpp、Ollama)与云端模型(OpenAI、Anthropic、Gemini 等)**之间自由切换,而业务代码几乎不用改动。本文将带你快速认识这个 Swift 大模型开发利器。
为什么 Swift 开发者需要它?🚀
传统 Swift 接入大模型的痛点非常明显:
- 厂商 SDK 碎片化:OpenAI、Anthropic、Gemini 各有各的请求格式和类型系统,切换厂商就要重写一大片代码。
- 本地与云端割裂:想在本地跑 MLX / llama.cpp,又要对接云端 API,往往需要维护两套调用逻辑。
- 类型不安全:大模型返回的是字符串,解析 JSON 全靠手写,容易出错、难维护。
AnyLanguageModel 用一个统一的LanguageModel协议把这些全部封装起来,让大模型在 Swift 里变成"一等公民"。
AnyLanguageModel 是什么:一句话说清楚
一句话:它是 Apple Foundation Models 框架的"即插即用"替代品,同时支持自定义模型提供方。官方定位是An API-compatible, drop-in replacement for Apple's Foundation Models framework。
也就是说,苹果官方框架怎么写,AnyLanguageModel 就怎么写;官方框架不支持的模型(比如本地 Ollama、开源 GGUF),它也能跑。核心抽象都集中在 Sources/AnyLanguageModel/ 目录下,例如统一的 LanguageModel.swift、会话管理 LanguageModelSession.swift,以及模型实现 Models/。
接入有多简单?只改一行 import ✨
这是它最打动人的地方。原来用 Apple 官方框架的代码,迁移成本几乎为零:
- import FoundationModels + import AnyLanguageModel改完 import 之后,代码风格和官方 API 完全一致:
let model = SystemLanguageModel.default let session = LanguageModelSession(model: model) let response = try await session.respond { Prompt("用一句话解释量子计算") } print(response.content)一个框架,九大模型提供方全覆盖
这是 AnyLanguageModel 最核心的亮点。下表一目了然:
| 模型类型 | 提供方 | 说明 |
|---|---|---|
| 🍎 苹果官方 | Foundation Models | 系统级语言模型(macOS/iOS 26+) |
| 🧠 本地推理 | Core ML | .mlmodelc模型 |
| ⚡ 本地推理 | MLX | Apple Silicon 上的 MLX 模型 |
| 🦙 本地推理 | llama.cpp | GGUF 量化模型 |
| 🐳 本地服务 | Ollama | 默认连localhost:11434 |
| 🤖 云端 API | OpenAI | Chat Completions + Responses 双 API |
| 🟣 云端 API | Anthropic | Claude Messages API |
| 🔮 云端 API | Google Gemini | Gemini API |
| 🌐 云端 API | Open Responses | 多厂商兼容端点 |
每个模型的实现都可以在 Models/ 目录下找到源码,比如 OllamaLanguageModel.swift、OpenAILanguageModel.swift。
三大杀手级特性,开箱即用 💡
1. 结构化输出(Guided Generation)
用@Generable和@Guide宏,让模型直接生成类型安全的 Swift 结构体,彻底告别手写 JSON 解析:
@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 )宏的实现位于 AnyLanguageModelMacros/,相关协议在 Generable.swift。
2. 工具调用(Tool Calling)
定义好Tool协议之后,模型可以自动调用你的函数(如查询天气、查数据库),并在ToolExecutionDelegate中观察或拦截每次执行,非常适合做"用户确认"类交互。
3. 图像输入(多模态)
OpenAI、Anthropic、Gemini、Open Responses 原生支持图片输入;MLX 和 Ollama 使用视觉模型(VLM)也能传图,比如提取收据金额、对比海报等场景,一行参数即可搞定。
Package Traits:按需加载,控制包体积 📦
AnyLanguageModel 还引入了 Swift 6.1 的Package Traits 机制,默认不启用任何后端,用哪个开哪个:
.package( url: "https://gitcode.com/gh_mirrors/an/AnyLanguageModel", from: "0.8.0", traits: ["CoreML", "MLX"] // 按需开启 )CoreML:Core ML 模型支持MLX:MLX 模型支持Llama:llama.cpp 支持AsyncHTTPClient:异步 HTTP 客户端
这能显著减小二进制体积、加快构建速度,是工程化程度很高的设计。
快速开始:两步接入步骤
第一步:添加依赖。在Package.swift中声明:
dependencies: [ .package(url: "https://gitcode.com/gh_mirrors/an/AnyLanguageModel", from: "0.8.0") ]第二步:引入并创建一个会话。选一个你喜欢的模型,比如本地 Ollama:
let model = OllamaLanguageModel(model: "qwen3") let session = LanguageModelSession(model: model) let response = try await session.respond { Prompt("讲个笑话") }就这么简单,一个能对话的 App 就完成了。⚠️ 注意:需要Swift 6.1+,支持 iOS 17+ / macOS 14+ / visionOS 1+ 以及 Linux。
API 密钥安全提醒 🔐
使用 OpenAI、Anthropic、Gemini 等云端服务时,千万不要把 API Key 硬编码进 App——攻击者可以逆向二进制或抓包提取密钥。推荐两种安全做法:
- BYO(用户自带 Key):用户输入自己的 Key,存入系统钥匙串(Keychain)。
- 代理服务器:密钥只存服务端,客户端通过短期令牌访问。
总结
AnyLanguageModel 的价值在于:一套 Swift API,通吃本地与云端九大模型提供方。无论你是想快速 Demo、做本地隐私推理,还是构建生产级多模型应用,它都能大幅降低接入成本,堪称 Swift 大模型开发的终极一站式方案。如果你是 Swift 开发者且正打算接大模型,不妨现在就 clone 下来试试吧!
【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apple's Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModel
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考