基于 SwiftUI 开发 iOS Ollama 客户端实践
一、背景与动机
因行业特殊性,许多敏感数据需要使用大模型进行处理和分析,无法使用公有云上的各种模型。因此,在公司内部部署了 Ollama 来跑本地模型解决问题。
此时面临一个问题:手机端需要访问 Ollama API,但市面上缺乏趁手的 App。为了解决这一痛点,决定使用 Swift + SwiftUI 开发一个原生客户端。
二、功能设计
2.1 Ollama 服务配置
支持以下配置项:
- 服务地址(URL)
- 使用的模型名称
- 系统 Prompt(System Prompt)
- 模型参数(Temperature, TopP 等,预留扩展)
2.2 Ollama API 流式调用
为了提升用户体验,采用流式调用方式。每次调用只返回一部分结果,客户端不断读取并实时渲染,直到全部返回。
2.3 会话管理
- 支持创建新会话
- 支持重开历史会话
- 支持选择会话列表中的历史记录继续对话
三、数据模型建模
为了方便调用和解析 JSON,首先定义核心数据模型。
3.1 聊天请求对象
struct OllamaChatRequest: Codable {
var model: String = ""
var messages: [OllamaMessage] = []
var stream: Bool = true
}
3.2 聊天响应对象
struct OllamaChatResponse: Codable {
var message: OllamaMessage
}
3.3 消息流对象
struct OllamaChatStream: Codable {
var done: Bool
var message: OllamaMessage
}


