Conduit
统一 Swift SDK,类型安全地调用 Claude/GPT/Gemini 等主流 LLM 提供商
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一 Swift SDK,类型安全地调用 Claude/GPT/Gemini 等主流 LLM 提供商
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象你正在开发一款 iOS 应用,需要根据用户输入生成电影评论摘要。你先接入了 Anthropic 的 Claude,API 调通后产品上线了三个月。后来团队发现 Claude 的成本太高,切到了 GPT-4o mini 做降本。再后来 Apple 发布了新的 Apple Intelligence,你又想在本地跑一个 Foundation Models……结果发现每次切换 Provider 都要改一整套 API 调用代码,每次上线都要处理不同 Provider 截然不同的认证方式、JSON 格式和流式返回方式。
Conduit 解决的就是这个问题——它是 Swift 平台上第一个真正意义的"LLM 统一抽象层",让你用同一套 API 调用所有主流 AI 提供商。
Swift 在 Apple 生态的影响力毋庸置疑,但 AI/LLM 领域长期缺乏高质量的 Swift 工具链。大多数开发者使用 Python 或 JavaScript 的 SDK 来调用 LLM API,而 Swift 开发者要么手写 HTTP 请求自己解析 JSON,要么依赖不完整的第三方库。Anthropic 官方提供了 Python 和 Node.js SDK,OpenAI 也是类似——Swift 开发者往往需要自己维护 Provider 适配层。
作者 christopherkarani 在 2024 年启动了这个项目,目标是做一个类型安全、编译期验证、SwiftUI 原生集成的统一 SDK。MIT 许可证,Swift 6.2 开发,目前已有 119 颗 GitHub Stars。
Conduit 的设计哲学是 Protocol-Based:所有 Provider(AnthropicProvider、OpenAIProvider、MLXProvider 等)都实现统一的 AIProvider 协议,对外暴露同一个 generate() 方法。切换提供商只需要换一行初始化代码,调用逻辑完全不用改:
// Cloud:Claude
let anthropic = AnthropicProvider(apiKey: "sk-ant-...")
// Apple Silicon 本地加速(MLX)
let mlx = MLXProvider()
// Ollama 本地模型
let ollama = OpenAIProvider(ollamaHost: "localhost", port: 11434)
// 同一个 generate() 调用全部适用
let response = try await provider.generate("Explain Swift Actors", model: .claudeSonnet45)
支持的提供商涵盖:Anthropic(Claude全系)、OpenAI(GPT全系)、Gemini、Kimi、MiniMax、OpenRouter、HuggingFace Hub、CoreML、Apple Foundation Models、MLX(Apple Silicon 专用)、Llama(llama.cpp)、Ollama——基本覆盖了主流的云端和本地推理方案。
Conduit 最令人眼前一亮的功能是 @Generable 宏。通过 Swift Macro System,开发者可以用普通的 Swift struct 定义 LLM 的输出格式:
@Generable
struct MovieReview {
let title: String
let rating: Int
@Guide("One-paragraph summary")
let summary: String
let pros: [String]
let cons: [String]
}
let result = try await provider.generate(
messages: Messages { Message.user("Review the movie Inception") },
model: .claudeSonnet45,
config: .default.responseFormat(.jsonSchema(MovieReview.generationSchema))
)
let review = try MovieReview(GeneratedContent(json: result.text))
这样 LLM 返回的 JSON 在编译期就能验证是否匹配 MovieReview 结构,类型不匹配时直接编译失败,而不是等到线上才收到一堆乱格式的 JSON。这比传统的 prompt engineering(如"请返回合法的 JSON")或后处理 JSON 修复要可靠得多。
同样强大的还有 @Guide 宏,用于给 LLM 提供字段级别的提示词约束,比如限制 unit 只能是 "celsius" 或 "fahrenheit"。
对于需要对话界面的应用,Conduit 提供了开箱即用的 @Observable ChatSession,直接嵌入 SwiftUI View:
struct ChatView: View {
@State private var session = ChatSession(
provider: AnthropicProvider(apiKey: "sk-ant-..."),
model: .claudeSonnet45
)
@State private var input = ""
var body: some View {
VStack {
ScrollView { /* messages */ }
HStack {
TextField("Message", text: $input)
Button("Send") {
Task {
await session.send(input)
}
}
}
}
}
}
流式输出通过 Swift 的 AsyncSequence 实现,结合 SwiftUI 的响应式特性,可以做到逐字显示的打字机效果。
从源码结构来看,Conduit 分为以下几个核心层次:
| 模块 | 职责 |
|---|---|
Core/Protocols | 抽象接口层:AIProvider、TextGenerator、EmbeddingGenerator、ImageGenerator、Tool |
Core/Macros | 编译期代码生成:@Generable、@Guide |
Core/Tools | 工具调用(Tool Calling)引擎 |
Core/Streaming | 流式输出处理(Server-Sent Events) |
Core/Errors | 统一的错误类型体系 |
Core/Types | 核心数据类型:Message、GenerationResult、GenerationSchema 等 |
Providers/* | 各提供商的适配实现 |
ConduitMacros | 独立编译的 Swift Macro Plugin |
214 个 Swift 源码文件,模块职责划分非常清晰。包管理使用 Swift Package Manager,Swift 6.2 语法,大量使用 async/await、sendable 检查和 Swift Macro Engine。通过 Package Traits 机制控制依赖引入——启用 MLX trait 才引入 MLX 依赖,否则不依赖,编译速度和产物大小都得到优化。
仓库包含三类测试:
@Generable 和 @Guide 宏的行为验证另有 Golden Tests(快照测试)用于验证 Schema 生成的稳定性。
对于有 Swift/SwiftUI 开发经验的开发者,Conduit 的上手成本极低。通过 Swift Package Manager 添加依赖,启用需要的 Provider traits,然后在 Xcode 或 SwiftPM 项目中直接 import 即可。文档中有完整的多语言 README(含简体中文)。
不过有两个需要注意的点:
Conduit 的定位是推理抽象层,而非训练或微调工具。它不提供模型训练能力,也不支持 Embedding 以外的向量操作。对于需要完全离线运行(无任何云端 API 调用)的场景,Conduit 只能覆盖 Ollama/Llama/MLX 部分,而这些本地方案的模型质量仍与 Claude/GPT 有差距。
另外,作为一个个人维护的开源项目(目前 Stars 仅 119),长期维护的可持续性和响应速度需要观察。与 langchain-swift 等更大型的生态项目相比,Conduit 的社区规模和第三方集成(如 LangChain、AutoGen)仍较为有限。
随着 Apple Intelligence 进入 iOS 18,Apple 生态对本地 AI 能力的需求正在爆发。Conduit 填补了 Swift 平台缺乏生产级 LLM SDK 的空白,其 Protocol-Based 的统一抽象设计和编译期验证机制,代表了 LLM SDK 设计的新思路——从"运行时猜测格式"转向"编译期保证类型安全"。这种设计理念与 Pydantic(Python)在数据验证领域做的事异曲同工,只是用 Swift 的 Macro System 实现了更优雅的编译器集成。
对于正在 Apple 平台开发 AI 应用、或希望同一套代码覆盖云端+本地推理方案的团队,Conduit 是目前最值得关注的选择之一。