DeepSwiftSeek 开源软件 |用于 DeepSeek LLM 模型的 Swift 客户端 |轻量级和高效的 DeepSeek 核心功能通信
一、软件介绍
文末提供程序和源码下载
DeepSeek Swift SDK 是一个轻量级且高效的基于 Swift 的客户端,用于与 DeepSeek API 进行交互。它支持聊天消息完成、流式处理、错误处理以及使用高级参数配置 DeepSeekLLM。
二、Features 特征
- Supports chat completion requests
支持聊天完成请求 - Supports fill in the middle completion requests
支持填充中间完成请求 - Handles error responses with detailed error descriptions and recovery suggestions.
使用详细的错误描述和恢复建议处理错误响应。 - streaming responses both for chat completion and as well fill in the middle responses
用于聊天完成的流式处理响应,以及填充中间响应 - Built-in support for different models and advanced parameters
内置对不同模型和高级参数的支持 - User balance fetchin and available LLM models fetching
用户余额获取和可用LLM模型获取 - Uses Swift concurrency (async/await) for network calls
使用 Swift 并发 (async/await) 进行网络调用
三、Installation 安装
To integrate DeepSwiftSeek
into your project, you can use Swift Package Manager (SPM):
要集成到 DeepSwiftSeek
您的项目中,您可以使用 Swift Package Manager (SPM):
let package = Package(dependencies: [.package(url: "https://github.com/tornikegomareli/DeepSwiftSeek.git", exact: "0.0.2")]
)
Or add it via Xcode:
或通过 Xcode 添加它:
- Open your project in Xcode.
在 Xcode 中打开您的项目。 - Navigate to File > Swift Packages > Add Package Dependency.
导航到 File > Swift Packages > Add Package Dependency。 - Enter the repository URL.
输入存储库 URL。 - Choose the latest version and click Next.
选择最新版本,然后单击 Next(下一步)。
Usage 用法
1. Initialize the Client 1. 初始化客户端
import DeepSwiftSeeklet configuration = Configuration(apiKey: "YOUR_API_KEY")
let deepSeekClient = DeepSeekClient(configuration: configuration)
2. Sending a Chat Completion Request
2. 发送聊天完成请求
Task {do {let response = try await deepSeekClient.chatCompletions(messages: {ChatMessageRequest(role: .user, content: "Tell me a joke.", name: "User")},model: .deepSeekChat,parameters: .creative)print(response.choices.first?.message.content ?? "No response")} catch {print("Error: \(error.localizedDescription)")}
}
3. Streaming Chat Completions
3. 流式聊天完成
Task {do {let stream = try await deepSeekClient.chatCompletionStream(messages: {ChatMessageRequest(role: .user, content: "Write a poem.", name: "User")},model: .deepSeekChat,parameters: .streaming)for try await chunk in stream {print(chunk) // Prints streamed responses}} catch {print("Streaming error: \(error.localizedDescription)")}
}
4. Streaming FIM Completion
4. 流式 FIM 完成
Task {do {let stream = try await deepSeekClient.fimCompletionStream(messages: {[ChatMessageRequest(role: .user,content: "function greet() {\n /* FIM_START */\n /* FIM_END */\n return 'Hello world';\n}",name: "User")]},model: .deepSeekReasoner,parameters: .streaming)for try await chunk in stream {// Each chunk is a streamed part of the fill-in-the-middle response.print("FIM Stream Chunk:\n\(chunk)")}} catch {print("FIM Streaming Error: \(error.localizedDescription)")}
}
5. Sending FIM Completion Request
5. 发送 FIM 完成请求
Task {do {let response = try await deepSeekClient.fimCompletions(messages: {[ChatMessageRequest(role: .user,content: "function greet() {\n // FIM_START\n // FIM_END\n return 'Hello world';\n}",name: "User")]},model: .deepSeekReasoner,parameters: .creative)if let content = response.choices.first?.message.content {print("FIM Completion:\n\(content)")}} catch {print("FIM Error: \(error.localizedDescription)")}
}
6. Getting List of Models
6. 获取模型列表
Task {do {let response = try await deepSeekClient.listModels()} catch {print("ListModels Error: \(error.localizedDescription)")}
}
7. Getting Balance of the user
7. 获取用户的余额
Task {do {let response = try await deepSeekClient.fetchUserBalance()} catch {print("UserBalance Error: \(error.localizedDescription)")}
}
8. Handling Errors 8. 处理错误
The SDK provides detailed error handling:
SDK 提供了详细的错误处理:
catch let error as DeepSeekError {print("DeepSeek API Error: \(error.localizedDescription)")print("Recovery Suggestion: \(error.recoverySuggestion ?? "None")")
} catch {print("Unexpected error: \(error)")
}
四、Models 模型
DeepSeek SDK supports multiple models:
DeepSeek SDK 支持多种模型:
public enum DeepSeekModel: String {case deepSeekChat = "deepseek-chat"case deepSeekReasoner = "deepseek-reasoner"
}
Available Parameters 可用参数
You can configure chat completion parameters:
您可以配置聊天完成参数:
let parameters = ChatParameters(frequencyPenalty: 0.5,maxTokens: 512,presencePenalty: 0.5,temperature: 0.7,topP: 0.9
)
Predefined Parameter Sets
预定义参数集
Mode 模式 | Temperature 温度 | Max Tokens 最大令牌数 | Top P 前 P |
---|---|---|---|
Creative 创造性 | 0.9 | 2048 | 0.9 |
Focused 集中 | 0.3 | 2048 | 0.3 |
Streaming 流 | 0.7 | 4096 | 0.9 |
Code Generation 代码生成 | 0.2 | 2048 | 0.95 |
Concise 简明 | 0.5 | 256 | 0.5 |
Creating Custom Predefined Parameters
创建自定义预定义参数
If you need specific configurations, you can define your own parameter presets:
如果您需要特定配置,您可以定义自己的参数预设:
extension ChatParameters {static let myCustomPreset = ChatParameters(frequencyPenalty: 0.4,maxTokens: 1024,presencePenalty: 0.6,temperature: 0.8,topP: 0.85)
}
Then use it in your requests:
然后在您的请求中使用它:
let parameters = ChatParameters.myCustomPreset
This approach allows you to maintain reusable configurations tailored to different needs.
此方法允许您维护针对不同需求量身定制的可重用配置。
Error Handling 错误处理
DeepSeek SDK has built-in error handling for various API failures:
DeepSeek SDK 内置了针对各种 API 故障的错误处理功能:
Error Type 错误类型 | Description 描述 |
---|---|
invalidFormat | Invalid request body format. 请求正文格式无效。 |
authenticationFailed | Incorrect API key. API 密钥不正确。 |
insufficientBalance | No balance remaining. 没有余额。 |
rateLimitReached | Too many requests sent. 发送的请求过多。 |
serverOverloaded | High traffic on server. 服务器上的高流量。 |
encodingError | Failed to encode request body. 无法对请求正文进行编码。 |
TODOs 都
- Improve documentation with more examples
通过更多示例改进文档 - SwiftUI full demo based on chat, history and reasoning
基于聊天、历史记录和推理的 SwiftUI 完整演示 - Reasoning model + OpenAI SDK
推理模型 + OpenAI SDK
五、软件下载
迅雷云盘
本文信息来源于GitHub作者地址:GitHub - tornikegomareli/DeepSwiftSeek: DeepSwiftSeek 🚀 | Swift Client for DeepSeek LLM Models | Lightweight and efficient communication to the core functionality of DeepSeek