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

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.lryc.cn/news/2402468.html

相关文章:

  • Flask-Login使用示例
  • React Hooks 基础指南
  • web第九次课后作业--SpringBoot基于mybatis实现对数据库的操作
  • 沪铜6月想法
  • 网络通信核心概念全解析:从IP地址到TCP/UDP实战
  • Spring 中的disposableBean介绍
  • 【Linux命令学习】获取cpu信息 - lscpu命令学习
  • wordpress免费主题网站
  • Go中的协程并发和并发panic处理
  • Qt Creator工具编译器配置
  • 从零开始的数据结构教程(六) 贪心算法
  • Spring框架学习day7--SpringWeb学习(概念与搭建配置)
  • 打造高效多模态RAG系统:原理与评测方法详解
  • SSM 框架核心知识详解(Spring + SpringMVC + MyBatis)
  • 1.2 fetch详解
  • 【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
  • 02 Deep learning神经网络的编程基础 逻辑回归--吴恩达
  • Android Native 内存泄漏检测全解析:从原理到工具的深度实践
  • React---扩展补充
  • HTML 中 class 属性介绍、用法
  • MySQL的并发事务问题及事务隔离级别
  • ProfiNet 分布式 IO 在某污水处理厂的应用
  • vue2使用笔记、vue2和vue3的区别
  • Vue2数组数字字段求和技巧 数字求和方法
  • vue2 , el-select 多选树结构,可重名
  • Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
  • Jenkins | Jenkins构建成功服务进程关闭问题
  • 模块化架构下的前端调试体系建设:WebDebugX 与多工具协同的工程实践
  • EXCEL通过DAX Studio获取端口号连接PowerBI
  • PostgreSQL 技术峰会,为您打造深度交流优质平台