AnyLanguageModel 入门实战:用 Swift 构建你的第一个 AI 聊天应用
2026/8/18 14:15:43 网站建设 项目流程

AnyLanguageModel 入门实战:用 Swift 构建你的第一个 AI 聊天应用

【免费下载链接】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 里用几十行代码就做出一个能聊天的 AI 应用?AnyLanguageModel正是为此而生的开源框架——它是 Apple Foundation Models 框架的 API 兼容替代品,只需改一行 import,就能让你的 Swift 项目无缝接入 OpenAI、Gemini、Claude、Ollama 乃至本地 MLX 模型。本文是一份面向新手的Swift AI 聊天应用开发实战指南,手把手带你从零搭建第一个可运行的 AI 聊天程序。

什么是 AnyLanguageModel?一个 Swift 大模型接入的「万能插座」🔌

简单来说,AnyLanguageModel 是一个为 Swift 开发者设计的大模型接入框架。它提供了与 Apple 官方 Foundation Models 完全一致的 API,让你只需要修改一行导入语句,就能把代码从 Apple 官方框架平滑迁移过来:

- import FoundationModels + import AnyLanguageModel

这意味着你之前为 Apple 框架写的会话管理、提示词、工具调用代码,几乎可以原样复用,同时还能自由选择接入不同的大模型服务商。官方文档和核心源码位于项目的 README.md,协议定义可参考 LanguageModel.swift。

为什么选择 AnyLanguageModel?6 大核心优势 ✨

优势说明
🎯 API 兼容与 Apple Foundation Models API 对齐,迁移成本极低
🌍 多模型支持一个框架接入 OpenAI、Anthropic、Gemini、Ollama、Core ML、MLX、llama.cpp 等
🧰 工具调用内置 Tool Calling 协议,让 AI 能调用你的函数
📐 结构化输出通过@Generable宏直接生成类型安全的 Swift 数据
🖼️ 多模态输入原生支持在提示词中附加图片
📦 按需加载使用 Swift Package traits,只引入你需要的后端依赖

其中「工具调用」和「结构化输出」是 AI 聊天应用进阶开发的两大利器,稍后我们会逐一实战。

上手准备:环境要求与快速安装 🛠️

开始之前,请确认你的开发环境满足以下条件:

  • Swift 6.1及以上版本
  • iOS 17.0+ / macOS 14.0+(或 visionOS 1.0+)
  • Xcode 或任意支持 Swift Package Manager 的工具链

第 1 步:获取源码(可选),如果你想阅读源码学习,可以克隆仓库:

git clone https://gitcode.com/gh_mirrors/an/AnyLanguageModel

第 2 步:添加依赖。在项目的Package.swift中加入:

dependencies: [ .package(url: "https://github.com/huggingface/AnyLanguageModel", from: "0.8.0") ]

第 3 步:按需启用特性(traits)。框架默认不加载任何本地模型后端,如果你需要 Core ML 或 MLX 支持,只需声明对应 trait 即可,这能让你的 App 体积更小、编译更快。

5 分钟写出你的第一个 AI 聊天应用 🚀

下面这段代码就是完整的聊天应用核心逻辑,全程只有4 步

  1. 创建模型:这里使用 Apple 系统自带的SystemLanguageModel
  2. 创建会话LanguageModelSession负责管理多轮对话上下文
  3. 发起提问:用Prompt包裹你的问题
  4. 获取回复:打印模型返回的内容
import AnyLanguageModel // 1. 创建模型(Apple 系统内置模型) let model = SystemLanguageModel.default // 2. 创建会话 let session = LanguageModelSession(model: model) // 3. 发起提问 let response = try await session.respond { Prompt("用一句话解释什么是量子计算?") } // 4. 输出结果 print(response.content)

就这么简单!整个交互流程由 LanguageModelSession.swift 中的会话对象统一管理,它会自动维护对话记录(Transcript),让你无需关心上下文拼接的细节。

💡小提示respond支持流式输出(streamResponse),在长回答场景下可以实现打字机效果,体验更佳。

一行代码切换模型:多提供商实战 🌐

AnyLanguageModel 最惊艳的地方在于——切换大模型提供商只需要换一行初始化代码。会话管理、提示词、输出解析全部复用,真正的「一套代码,处处运行」。

方式一:接入 OpenAI(Chat Completions API)

let model = OpenAILanguageModel( apiKey: ProcessInfo.processInfo.environment["OPENAI_API_KEY"]!, model: "gpt-4o-mini" ) let session = LanguageModelSession(model: model)

实现细节可参考 OpenAILanguageModel.swift,它还支持自定义baseURL,因此任何 OpenAI 兼容的第三方服务都能接入。

方式二:接入 Google Gemini

let model = GeminiLanguageModel( apiKey: ProcessInfo.processInfo.environment["GEMINI_API_KEY"]!, model: "gemini-2.5-flash" )

方式三:本地模型(Ollama,免费且隐私安全)

let model = OllamaLanguageModel(model: "qwen3") let session = LanguageModelSession(model: model)

Ollama 默认连接本机localhost:11434,无需 API Key,适合本地开发和隐私敏感场景,见 OllamaLanguageModel.swift。

方式四:Apple Silicon 上的 MLX 本地大模型

let model = MLXLanguageModel(modelId: "mlx-community/Qwen3-0.6B-4bit")

此外还有 Anthropic Claude、llama.cpp(GGUF)、Core ML 模型等多种选择,全部集中在 Models 目录 中,你可以按需查阅。

⚠️安全提醒:切勿把 API Key 硬编码进 App!生产环境建议采用「用户自带 Key」或「代理服务器」方式,具体方案可阅读 README.md 中的安全章节。

进阶实战:让 AI 学会调用你的工具 🔧

聊天应用只回答问题当然不够,让 AI 能调用你的函数才是真正的生产力。AnyLanguageModel 内置了 Tool Calling 机制,下面是一个查询天气的示例:

struct WeatherTool: Tool { let name = "getWeather" let description = "查询某个城市的天气信息" @Generable struct Arguments { @Guide(description: "要查询天气的城市") var city: String } func call(arguments: Arguments) async throws -> String { "\(arguments.city) 今天晴,23°C" } } let session = LanguageModelSession(model: model, tools: [WeatherTool()]) let response = try await session.respond { Prompt("北京今天天气怎么样?") } print(response.content)

这里的关键是@Generable:它让模型直接生成结构化的参数,Swift 编译器负责类型安全校验,彻底告别手写 JSON 解析。更强大的是,你还能通过设置toolExecutionDelegate来观察、拦截甚至暂停每一次工具调用(比如在工具执行前弹窗让用户确认)。相关协议定义在 Tool.swift 中。

除了工具调用,@Generable还能直接生成结构化的 Swift 数据——比如让 AI 输出一份包含姓名、年龄、性格描述的「猫咪档案」结构体,无需任何字符串解析,这在构建数据驱动的 AI 应用时极其好用。

写在最后:从「能聊」到「好用」的下一步 🎯

至此,你已经掌握了用 AnyLanguageModel 构建 Swift AI 聊天应用的全部核心技能:

  1. ✅ 认识了这个 API 兼容的 Swift 大模型框架
  2. ✅ 完成了环境配置与依赖安装
  3. ✅ 写出了第一个能对话的聊天应用
  4. ✅ 学会了在 OpenAI、Gemini、Ollama、MLX 之间自由切换
  5. ✅ 掌握了工具调用与结构化输出的进阶玩法

下一步,你可以尝试:给你的聊天应用加上多轮对话记忆(会话对象天然支持)、接入图片输入做多模态问答,或者为你的工具调用增加人工确认环节提升安全性。

AnyLanguageModel 的优秀之处在于,它把所有复杂的大模型接入细节都封装好了,让你专注业务逻辑本身。现在就打开 Xcode,动手构建属于你的第一个 Swift AI 聊天应用吧!🎉

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询