当前位置: 首页 > 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

http://www.lqws.cn/news/126919.html

相关文章:

  • Python爬虫实战:研究Scrapy-Splash库相关技术
  • [蓝桥杯]对局匹配
  • 深入理解系统:UML类图
  • UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
  • 【PDF提取表格】如何提取发票内容文字并导出到Excel表格,并将发票用发票号改名,基于pdf电子发票的应用实现
  • HDU-2973 YAPTCHA
  • 《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构
  • n8n:解锁自动化工作流的无限可能
  • Ros(控制机器人运动)
  • C语言基础(11)【函数1】
  • 深入理解C#中的Web API:构建现代化HTTP服务的完整指南
  • Linux-文件管理及归档压缩
  • 2025年6月4日收获
  • CentOS7关闭防火墙、Linux开启关闭防火墙
  • Linux 的 find 命令使用指南
  • 构建 MCP 服务器:第一部分 — 资源入门
  • django ssh登录 并执行命令
  • Linux 特殊权限位详解:SetUID, SetGID, Sticky Bit
  • 网络可靠性的定义与核心要素
  • Redis初识
  • Git-git跟踪大文件
  • 01串(二进制串)与集合之间存在天然的对应关系 ← bitset
  • 第三篇:MCP协议深度实践——从理论到生产级AI智能体系统
  • 如何设计订单号生成策略?
  • Java基础原理与面试高频考点
  • Python网页数据抓取常用的库及方法介绍
  • 稻米分类和病害检测数据集(猫脸码客第237期)
  • 第八部分:阶段项目 6:构建 React 前端应用
  • LeetCode[513]找树左下角的值
  • postman自动化测试