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

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.xdnf.cn/news/11992.html

相关文章:

  • FTPS、HTTPS、SMTPS以及WebSockets over TLS的概念及其应用场景
  • 部署SD-WAN与现有网络架构的兼容性分析:如何实现平滑集成与避免设备浪费?
  • 夏普比率(Sharpe ratio)​
  • SSL安全证书怎么安装?
  • 数据湖是什么?数据湖和数据仓库的区别是什么?
  • 记一次运行spark报错
  • 【Linux】编译器gcc/g++及其库的详细介绍
  • NumPy 2.x 完全指南【二十四】结构化数组
  • Springboot——整合websocket并根据type区别处理
  • 【25软考网工】第十章 网络规划与设计(1)综合布线
  • 【HarmonyOS 5】生活与服务开发实践详解以及服务卡片案例
  • vue源码解析——diff算法
  • Golang——7、包与接口详解
  • 每天掌握一个Linux命令 - rpm
  • 前端组件推荐 Swiper 轮播与 Lightbox 灯箱组件深度解析
  • day63—回溯—全排列(LeetCode-46)
  • SimpleDateFormat 和 DateTimeFormatter 的异同
  • OpenCV C/C++ 视频播放器 (支持调速和进度控制)
  • MySQL 事务的 ACID 四大特性及其实现原理
  • 【echarts】堆叠柱形图
  • ubuntu自定义服务自动启动
  • Python绘图库及图像类型
  • SARIMA时间序列分析:三大模型对比
  • AWS中国区IAM相关凭证自行管理策略(只读CodeCommit版)
  • 【通用技巧】使用 AI 进行技术写作:使用 AI 写作助手编写技术内容的方法
  • MySQL 核心知识点解析
  • 高防IP可以防护什么攻击类型?企业网络安全的第一道防线
  • 找到每一个单词+模拟的思路和算法
  • Elasticsearch的写入性能优化
  • 常见优化器Optimizer总结