当前位置: 首页 > news >正文

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 添加它:

  1. Open your project in Xcode.
    在 Xcode 中打开您的项目。
  2. Navigate to File > Swift Packages > Add Package Dependency.
    导航到 File > Swift Packages > Add Package Dependency。
  3. Enter the repository URL.
    输入存储库 URL。
  4. 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.920480.9
Focused 集中0.320480.3
Streaming 流0.740960.9
Code Generation 代码生成0.220480.95
Concise 简明0.52560.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 描述
invalidFormatInvalid request body format.
请求正文格式无效。
authenticationFailedIncorrect API key. API 密钥不正确。
insufficientBalanceNo balance remaining. 没有余额。
rateLimitReachedToo many requests sent.
发送的请求过多。
serverOverloadedHigh traffic on server.
服务器上的高流量。
encodingErrorFailed 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

相关文章:

  • 《复制粘贴的奇迹:小明的原型工厂》
  • Python训练营打卡DAY44
  • JavaScript性能优化实战技术
  • 全志A40i android7.1 调试信息打印串口由uart0改为uart3
  • leetcode刷题日记——二叉树的锯齿形层序遍历
  • 为UE5的Actor添加能够读写姿态的功能
  • stm32——UART和USART
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B-function_tool(二)
  • AI在网络安全领域的应用现状和实践
  • 虚拟机无法开启-关掉虚拟化
  • Java直接内存(directMemory)分配与查看
  • 腾讯位置商业授权AOI边界查询开发指南
  • Web攻防-SQL注入高权限判定跨库查询文件读写DNS带外SecurePriv开关绕过
  • 【Windows开发】Windows 事件跟踪 (ETW)
  • idea相关功能
  • leetcode删除排序链表中的重复元素-小白初学简单解说
  • [Java 基础]银行账户程序
  • 【无标题】Statement对象详解
  • 【Win32 API】 lstrlenA()
  • java.sql.BatchUpdateException: Incorrect string value: ‘\xF0\x9F\x91\x91**...‘
  • 百度公司做网站可靠吗/seo扣费系统源码
  • 怎样用vps做网站/目前主流搜索引擎是哪种
  • 微商可以做网站推广吗/宣传链接怎么做
  • 大网站制作公司/长沙seo关键词
  • 网站底部素材/windows优化大师在哪里
  • 做设计找图片的网站/网站新站整站排名