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
相关文章:

DeepSwiftSeek 开源软件 |用于 DeepSeek LLM 模型的 Swift 客户端 |轻量级和高效的 DeepSeek 核心功能通信
一、软件介绍 文末提供程序和源码下载 DeepSeek Swift SDK 是一个轻量级且高效的基于 Swift 的客户端,用于与 DeepSeek API 进行交互。它支持聊天消息完成、流式处理、错误处理以及使用高级参数配置 DeepSeekLLM。 二、Features 特征 Supports chat completion …...

Flask-Login使用示例
项目结构 首先创建以下文件结构: flask_login_use/ ├── app.py ├── models.py ├── requirements.txt └── templates/├── base.html├── index.html├── login.html├── register.html└── profile.html1. requirements.txt Flask2.3.3 Fl…...
React Hooks 基础指南
React Hooks 是 React 16.8 引入的重要特性,它允许开发者在函数组件中使用状态和其他 React 特性。本文将详细介绍 6 个最常用的 React Hooks。 1. useState useState 是最常用的 Hook,用于在函数组件中添加 state。 import React, { useState } from…...

web第九次课后作业--SpringBoot基于mybatis实现对数据库的操作
前言 在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。 在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执…...
沪铜6月想法
市场回顾 2025年5月,沪铜期货主力合约价格整体呈现震荡走势。从月初到月末,价格在7.67-7.82万元/吨之间波动。截至5月31日,沪铜主力合约收盘价为7.76万元/吨。本月铜价围绕供需基本面和宏观政策预期展开波动,尤其在5月14日至5月1…...
网络通信核心概念全解析:从IP地址到TCP/UDP实战
一、网络基础架构三要素 1. IP地址:互联网的“门牌号” 本质:32位整数标识主机位置(IPv4)表示法:点分十进制(如 192.168.1.1)功能:全球唯一标识网络设备特殊地址: 127.…...
Spring 中的disposableBean介绍
在 Spring 框架中,DisposableBean 是一个接口,用于定义 Bean 在被销毁前需要执行的清理逻辑。它是 Spring 容器生命周期回调机制的一部分。 🌱 什么是 DisposableBean DisposableBean 接口是 Spring 提供的一个标准接口,用于通知…...
【Linux命令学习】获取cpu信息 - lscpu命令学习
lscpu命令显示的是服务器cpu架构相关信息,lscpu从伪文件系统(sysfs)、/proc/cpuinfo和任何可用的特定体系架构库中收集cpu架构信息。输出内容包括:CPU、线程、内核的数量以及非同一存储器存取节点。此外还包括关于CPU高速缓存和高速缓存共享的信息&#…...

wordpress免费主题网站
这是一款WordPress主题,由jianzhanpress开发,可以免费下载。专为中小微企业设计,提供专业的网站建设、网站运营维护、网站托管和网站优化等服务。主题设计简约、现代,适合多种行业需求。 主要特点: 多样化展示&#…...

Go中的协程并发和并发panic处理
1 协程基础 1.1 协程定义(Goroutine) 概念:Go 语言特有的轻量级线程,由 Go 运行时(runtime)管理,相比系统线程(Thread),创建和销毁成本极低,占用…...

Qt Creator工具编译器配置
1、打开Qt Creator,工具-->选项 2、选择"编译器",Manual配置编译器。 初始化填入“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe”,选择64位amd64。 ABI根据msvc版本进行选择msvc2015. 3、新建项目…...
从零开始的数据结构教程(六) 贪心算法
🍬 标题一:贪心核心思想——发糖果时的最优分配策略 贪心算法 (Greedy Algorithm) 是一种简单直观的算法策略。它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望得到一个全局最优解。这就像你…...

Spring框架学习day7--SpringWeb学习(概念与搭建配置)
SpringWeb1.SpringWeb特点2.SpringWeb运行流程3.SpringWeb组件4.搭建项目结构图:4.1导入jar包4.2在Web.xml配置**4.2.1配置统一拦截分发器 DispatcherServlet**4.2.2开启SpringWeb注解(spring.xml) 5.处理类的搭建6.SpringWeb请求流程(自己理…...

打造高效多模态RAG系统:原理与评测方法详解
引言 随着信息检索与生成式AI的深度融合,检索增强生成(RAG, Retrieval-Augmented Generation) 已成为AI领域的重要技术方向。传统RAG系统主要依赖文本数据,但真实世界中的信息往往包含图像、表格等多模态内容。多模态RAG…...
SSM 框架核心知识详解(Spring + SpringMVC + MyBatis)
🌱 第一部分:Spring 核心原理与使用 1. 什么是 Spring Spring 是一个开源的 Java 企业级开发框架,旨在简化 Java 企业应用程序开发。它核心思想是控制反转(IoC)和面向切面编程(AOP)࿰…...
1.2 fetch详解
浏览器 Fetch API 详解 Fetch API 是现代浏览器提供的用于发起网络请求的接口,它基于 Promise 实现,替代了传统的 XMLHttpRequest,提供了更强大、更灵活的功能。 1. 基本用法 使用 fetch() 函数发起请求,返回一个 Promise&…...

【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...

02 Deep learning神经网络的编程基础 逻辑回归--吴恩达
逻辑回归 逻辑回归是一种用于解决二分类任务(如预测是否是猫咪等)的统计学习方法。尽管名称中包含“回归”,但其本质是通过线性回归的变体输出概率值,并使用Sigmoid函数将线性结果映射到[0,1]区间。 以猫咪预测为例 假设单个样…...
Android Native 内存泄漏检测全解析:从原理到工具的深度实践
引言 Android应用的内存泄漏不仅发生在Java/Kotlin层,Native(C/C)层的泄漏同样普遍且隐蔽。由于Native内存不受Java虚拟机(JVM)管理,泄漏的内存无法通过GC自动回收,长期积累会导致应用内存占用…...
React---扩展补充
一些额外的扩展 4.3 高阶组件 高阶组件是参数为组件,返回值为新组件的函数; 高阶组件 本身不是一个组件,而是一个函数;其次,这个函数的参数是一个组件,返回值也是一个组件; import React fr…...
HTML 中 class 属性介绍、用法
1、🔖 什么是 class class 是 HTML 元素的一个核心属性,用来为元素指定一个或多个类名。它在网页开发中承担三大作用: 🎨 连接样式(CSS):让元素应用预定义的视觉效果⚙️ 绑定行为(…...

MySQL的并发事务问题及事务隔离级别
一、并发事务问题 1). 赃读:一个事务读到另外一个事务还没有提交的数据。 比如 B 读取到了 A 未提交的数据。 2). 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。 事务 A 两次读取同一条记录&…...

ProfiNet 分布式 IO 在某污水处理厂的应用
随着城市化进程的加速,污水处理厂的规模和复杂性不断增加,对自动化控制系统的要求也越来越高。PROfinet 分布式 IO 作为一种先进的工业通信技术,以其高速、可靠、灵活的特性,为污水处理厂的自动化升级提供了有力支持。本文将结合某…...
vue2使用笔记、vue2和vue3的区别
文章目录 vue2和vue3的区别1. 实现数据响应式的原理不同2. 生命周期不同3. vue 2.0 采用了 option 选项式 API,vue 3.0 采用了 composition 组合式 API4. 新特性编译宏5. 父子组件间双向数据绑定 v-model 不同6. v-for 和 v-if 优先级不同7. 使用的 diff 算法不同8.…...
Vue2数组数字字段求和技巧 数字求和方法
<template><div><p>总和: {{ totalSum }}</p></div> </template><script> export default {data() {return {items: [{ id: 1, value: 10 },{ id: 2, value: 20 },{ id: 3, value: 30 }]};},computed: {totalSum() {return this.ite…...

vue2 , el-select 多选树结构,可重名
人家antd都支持,elementplus 也支持,vue2的没有,很烦。 网上其实可以搜到各种的,不过大部分不支持重名,在删除的时候可能会删错,比如树结构1F的1楼啊,2F的1楼啊这种同时勾选的情况。。 可以全…...

Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
邮件合并功能让您能够轻松批量创建个性化文档,例如信函、电子邮件、发票或证书。您可以从模板入手,并使用电子表格中的数据进行填充。Excel 文件中的每一行都会生成一个新文档,并在正确的位置包含正确的详细信息。这是一种自动化重复性任务&a…...
Jenkins | Jenkins构建成功服务进程关闭问题
Jenkins构建成功服务进程关闭问题 1. 原因2. 解决 1. 原因 Jenkins 默认会在构建结束时终止所有由构建任务启动的子进程,即使使用了nohup或后台运行符号&。 2. 解决 在启动脚本中加上 BULID_IDdontkillme #--------------解决jenkins 自动关闭进程问题-----…...
模块化架构下的前端调试体系建设:WebDebugX 与多工具协同的工程实践
随着前端工程化的发展,越来越多的项目采用模块化架构:单页面应用(SPA)、微前端、组件化框架等。这类架构带来了良好的可维护性和复用性,但也带来了新的调试挑战。 本文结合我们在多个模块化项目中的真实经验ÿ…...

EXCEL通过DAX Studio获取端口号连接PowerBI
EXCEL通过DAX Studio获取端口号连接PowerBI 昨天我分享了EXCEL链接模板是通过获取端口号和数据库来连接PowerBI模型的,链接:浅析EXCEL自动连接PowerBI的模板,而DAX Studio可以获取处于打开状态的PowerBI的端口号。 以一个案例分享如何EXCEL…...