[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-adamrushy--OpenAISwift":3,"tool-adamrushy--OpenAISwift":64},[4,17,27,35,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,26,14,13],"图像",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85013,"2026-04-06T11:09:19",[26,43,44,45,14,46,15,13,47],"数据工具","视频","插件","其他","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":23,"last_commit_at":54,"category_tags":55,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[14,26,13,15,46],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":23,"last_commit_at":62,"category_tags":63,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75054,"2026-04-07T10:38:03",[15,26,13,46],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":83,"owner_website":84,"owner_url":85,"languages":86,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":10,"env_os":99,"env_gpu":100,"env_ram":100,"env_deps":101,"category_tags":108,"github_topics":109,"view_count":10,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":146},5174,"adamrushy\u002FOpenAISwift","OpenAISwift","This is a wrapper library around the ChatGPT and OpenAI HTTP API","OpenAISwift 是一个专为 Swift 开发者设计的开源库，旨在简化 iOS、macOS 等苹果平台应用与 OpenAI HTTP API（包括 ChatGPT）的集成过程。它充当了原生代码与人工智能服务之间的桥梁，让开发者无需手动处理复杂的网络请求和 JSON 数据解析，即可轻松在应用中调用文本生成、智能对话等强大功能。\n\n该工具主要解决了 Swift 生态中缺乏官方或便捷客户端的问题，显著降低了接入门槛。无论是构建智能客服机器人、内容辅助创作工具，还是进行原型验证，开发者都能通过它快速实现 AI 能力落地。OpenAISwift 特别适合熟悉 Swift 语言的移动应用开发者、独立程序员以及希望将大模型能力融入苹果生态产品的技术团队。\n\n其技术亮点在于全面支持现代 Swift 并发特性，同时提供传统的回调闭包写法，兼顾新旧项目需求。库内封装了完整的 API 参数选项，涵盖从基础的文本补全到多轮对话上下文管理，并预定义了多种模型类型供灵活选择。作为一个社区维护的项目，它通过 Swift Package Manager 和 CocoaPods 提供了简便的安装方式，帮助开发者高","OpenAISwift 是一个专为 Swift 开发者设计的开源库，旨在简化 iOS、macOS 等苹果平台应用与 OpenAI HTTP API（包括 ChatGPT）的集成过程。它充当了原生代码与人工智能服务之间的桥梁，让开发者无需手动处理复杂的网络请求和 JSON 数据解析，即可轻松在应用中调用文本生成、智能对话等强大功能。\n\n该工具主要解决了 Swift 生态中缺乏官方或便捷客户端的问题，显著降低了接入门槛。无论是构建智能客服机器人、内容辅助创作工具，还是进行原型验证，开发者都能通过它快速实现 AI 能力落地。OpenAISwift 特别适合熟悉 Swift 语言的移动应用开发者、独立程序员以及希望将大模型能力融入苹果生态产品的技术团队。\n\n其技术亮点在于全面支持现代 Swift 并发特性，同时提供传统的回调闭包写法，兼顾新旧项目需求。库内封装了完整的 API 参数选项，涵盖从基础的文本补全到多轮对话上下文管理，并预定义了多种模型类型供灵活选择。作为一个社区维护的项目，它通过 Swift Package Manager 和 CocoaPods 提供了简便的安装方式，帮助开发者高效、稳定地构建下一代智能应用。","[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fadamrushy%2FOpenAISwift%2Fbadge%3Ftype%3Dswift-versions)](https:\u002F\u002Fswiftpackageindex.com\u002Fadamrushy\u002FOpenAISwift)\n[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fadamrushy%2FOpenAISwift%2Fbadge%3Ftype%3Dplatforms)](https:\u002F\u002Fswiftpackageindex.com\u002Fadamrushy\u002FOpenAISwift)\n\n![](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fadamrushy\u002FOpenAISwift)\n![GitHub Workflow Status (with branch)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fadamrushy\u002FOpenAISwift\u002Fswift.yml?branch=main)\n[![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSPM-supported-DE5C43.svg?style=flat)](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F)\n\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fadam9rush?style=social)](https:\u002F\u002Ftwitter.com\u002Fadam9rush)\n\n# OpenAI API Client Library in Swift\n\nThis is a community-maintained library to access OpenAI HTTP API's. The full API docs can be found here:\nhttps:\u002F\u002Fbeta.openai.com\u002Fdocs\n\n## Installation 💻\n\n### Swift Package Manager (Preferred)\n\nYou can use Swift Package Manager to integrate the library by adding the following dependency in the `Package.swift` file or by adding it directly within Xcode.\n\n`.package(url: \"https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift.git\", from: \"1.2.0\")`\n\n### CocoaPods\n\n[CocoaPods](https:\u002F\u002Fcocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate `OpenAISwift` into your Xcode project using CocoaPods, specify it in your `Podfile`:\n\n```ruby\npod 'OpenAISwift'\n```\n\n### Manual\n\nCopy the source files into your own project.\n\n## Usage 🤩\n\nImport the framework in your project:\n\n`import OpenAISwift`\n\n[Create an OpenAI API key](https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys) and add it to your configuration:\n\n`let openAI = OpenAISwift(config: OpenAISwift.Config.makeDefaultOpenAI(apiKey: MY SECRET KEY))`\n\nThis framework supports Swift concurrency; each example below has both an async\u002Fawait and completion handler variant.\n\n### [Completions](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fcompletions)\n\nPredict completions for input text.\n\n```swift\nopenAI.sendCompletion(with: \"Hello how are you\") { result in \u002F\u002F Result\u003COpenAI, OpenAIError>\n    switch result {\n    case .success(let success):\n        print(success.choices.first?.text ?? \"\")\n    case .failure(let failure):\n        print(failure.localizedDescription)\n    }\n}\n```\n\nThis returns an `OpenAI` object containing the completions.\n\nOther API parameters are also supported:\n\n```swift\ndo {\n    let result = try await openAI.sendCompletion(\n        with: \"What's your favorite color?\",\n        model: .gpt3(.davinci), \u002F\u002F optional `OpenAIModelType`\n        maxTokens: 16,          \u002F\u002F optional `Int?`\n        temperature: 1          \u002F\u002F optional `Double?`\n    )\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\nFor a full list of supported models, see [OpenAIModelType.swift](https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fblob\u002Fmain\u002FSources\u002FOpenAISwift\u002FModels\u002FOpenAIModelType.swift). For more information on the models see the [OpenAI API Documentation](https:\u002F\u002Fbeta.openai.com\u002Fdocs\u002Fmodels).\n\n### [Chat](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fchat)\n\nGet responses to chat conversations through ChatGPT (aka GPT-3.5) and GPT-4 (in beta).\n\n```swift\ndo {\n    let chat: [ChatMessage] = [\n        ChatMessage(role: .system, content: \"You are a helpful assistant.\"),\n        ChatMessage(role: .user, content: \"Who won the world series in 2020?\"),\n        ChatMessage(role: .assistant, content: \"The Los Angeles Dodgers won the World Series in 2020.\"),\n        ChatMessage(role: .user, content: \"Where was it played?\")\n    ]\n\n    let result = try await openAI.sendChat(with: chat)\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\nAll API parameters are supported, except streaming message content before it is completed:\n\n```swift\ndo {\n    let chat: [ChatMessage] = [...]\n\n    let result = try await openAI.sendChat(\n        with: chat,\n        model: .chat(.chatgpt),         \u002F\u002F optional `OpenAIModelType`\n        user: nil,                      \u002F\u002F optional `String?`\n        temperature: 1,                 \u002F\u002F optional `Double?`\n        topProbabilityMass: 1,          \u002F\u002F optional `Double?`\n        choices: 1,                     \u002F\u002F optional `Int?`\n        stop: nil,                      \u002F\u002F optional `[String]?`\n        maxTokens: nil,                 \u002F\u002F optional `Int?`\n        presencePenalty: nil,           \u002F\u002F optional `Double?`\n        frequencyPenalty: nil,          \u002F\u002F optional `Double?`\n        logitBias: nil                 \u002F\u002F optional `[Int: Double]?` (see inline documentation)\n    )\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [Images (DALL·E)](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fimages\u002Fcreate)\n\nGenerate an image based on a prompt.\n\n```swift\nopenAI.sendImages(with: \"A 3d render of a rocket ship\", numImages: 1, size: .size1024) { result in \u002F\u002F Result\u003COpenAI, OpenAIError>\n    switch result {\n    case .success(let success):\n        print(success.data.first?.url ?? \"\")\n    case .failure(let failure):\n        print(failure.localizedDescription)\n    }\n}\n```\n\n### [Edits](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fedits)\n\nEdits text based on a prompt and an instruction.\n\n```swift\ndo {\n    let result = try await openAI.sendEdits(\n        with: \"Improve the tone of this text.\",\n        model: .feature(.davinci),               \u002F\u002F optional `OpenAIModelType`\n        input: \"I am resigning!\"\n    )\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [Moderation](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fmoderations)\n\nClassifies text for moderation purposes (see OpenAI reference for more info).\n\n```swift\ndo {\n    let result = try await openAI.sendModeration(\n        with: \"Some harmful text...\",\n        model: .moderation(.latest)     \u002F\u002F optional `OpenAIModelType`\n    )\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [Embeddings](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fembeddings)\n\nGet a vector representation of a given input that can be easily consumed by machine learning models and algorithms.(see OpenAI reference for more info).\n\n```swift\ndo {\n    let result = try await openAI.sendEmbeddings(\n        with: \"The food was delicious and the waiter...\"\n    )\n    \u002F\u002F use result\n} catch {\n    \u002F\u002F ...\n}\n```\n\n## Contribute ❤️\n\nI created this mainly for fun, we can add more endpoints and explore the library even further. Feel free to raise a PR to help grow the library.\n\n## Licence 📥\n\nThe MIT License (MIT)\n\nCopyright (c) 2022 Adam Rush\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and\u002For sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fadamrushy%2FOpenAISwift%2Fbadge%3Ftype%3Dswift-versions)](https:\u002F\u002Fswiftpackageindex.com\u002Fadamrushy\u002FOpenAISwift)\n[![](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fadamrushy%2FOpenAISwift%2Fbadge%3Ftype%3Dplatforms)](https:\u002F\u002Fswiftpackageindex.com\u002Fadamrushy\u002FOpenAISwift)\n\n![](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fadamrushy\u002FOpenAISwift)\n![GitHub Workflow Status (with branch)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fadamrushy\u002FOpenAISwift\u002Fswift.yml?branch=main)\n[![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSPM-supported-DE5C43.svg?style=flat)](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F)\n\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fadam9rush?style=social)](https:\u002F\u002Ftwitter.com\u002Fadam9rush)\n\n# Swift 中的 OpenAI API 客户端库\n\n这是一个由社区维护的库，用于访问 OpenAI 的 HTTP API。完整的 API 文档可以在这里找到：\nhttps:\u002F\u002Fbeta.openai.com\u002Fdocs\n\n## 安装 💻\n\n### Swift 包管理器（推荐）\n\n你可以使用 Swift 包管理器来集成该库，在 `Package.swift` 文件中添加以下依赖项，或者直接在 Xcode 中添加。\n\n`.package(url: \"https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift.git\", from: \"1.2.0\")`\n\n### CocoaPods\n\n[CocoaPods](https:\u002F\u002Fcocoapods.org) 是一个适用于 Cocoa 项目的依赖管理工具。有关使用和安装说明，请访问其官网。要通过 CocoaPods 将 `OpenAISwift` 集成到你的 Xcode 项目中，请在你的 `Podfile` 中指定：\n\n```ruby\npod 'OpenAISwift'\n```\n\n### 手动方式\n\n将源文件复制到你自己的项目中。\n\n## 使用 🤩\n\n在你的项目中导入框架：\n\n`import OpenAISwift`\n\n[创建一个 OpenAI API 密钥](https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys)，并将其添加到你的配置中：\n\n`let openAI = OpenAISwift(config: OpenAISwift.Config.makeDefaultOpenAI(apiKey: MY SECRET KEY))`\n\n该框架支持 Swift 并发；下面的每个示例都同时提供了 async\u002Fawait 和完成处理程序两种版本。\n\n### [补全](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fcompletions)\n\n预测输入文本的补全内容。\n\n```swift\nopenAI.sendCompletion(with: \"Hello how are you\") { result in \u002F\u002F Result\u003COpenAI, OpenAIError>\n    switch result {\n    case .success(let success):\n        print(success.choices.first?.text ?? \"\")\n    case .failure(let failure):\n        print(failure.localizedDescription)\n    }\n}\n```\n\n这将返回一个包含补全结果的 `OpenAI` 对象。\n\n还支持其他 API 参数：\n\n```swift\ndo {\n    let result = try await openAI.sendCompletion(\n        with: \"What's your favorite color?\",\n        model: .gpt3(.davinci), \u002F\u002F 可选的 `OpenAIModelType`\n        maxTokens: 16,          \u002F\u002F 可选的 `Int?`\n        temperature: 1          \u002F\u002F 可选的 `Double?`\n    )\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n有关支持的完整模型列表，请参阅 [OpenAIModelType.swift](https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fblob\u002Fmain\u002FSources\u002FOpenAISwift\u002FModels\u002FOpenAIModelType.swift)。更多关于模型的信息，请参阅 [OpenAI API 文档](https:\u002F\u002Fbeta.openai.com\u002Fdocs\u002Fmodels)。\n\n### [聊天](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fchat)\n\n通过 ChatGPT（即 GPT-3.5）和 GPT-4（处于测试阶段）获取聊天对话的响应。\n\n```swift\ndo {\n    let chat: [ChatMessage] = [\n        ChatMessage(role: .system, content: \"You are a helpful assistant.\"),\n        ChatMessage(role: .user, content: \"Who won the world series in 2020?\"),\n        ChatMessage(role: .assistant, content: \"The Los Angeles Dodgers won the World Series in 2020.\"),\n        ChatMessage(role: .user, content: \"Where was it played?\")\n    ]\n\n    let result = try await openAI.sendChat(with: chat)\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n所有 API 参数均受支持，除了在消息完成之前进行流式传输之外：\n\n```swift\ndo {\n    let chat: [ChatMessage] = [...]\n\n    let result = try await openAI.sendChat(\n        with: chat,\n        model: .chat(.chatgpt),         \u002F\u002F 可选的 `OpenAIModelType`\n        user: nil,                      \u002F\u002F 可选的 `String?`\n        temperature: 1,                 \u002F\u002F 可选的 `Double?`\n        topProbabilityMass: 1,          \u002F\u002F 可选的 `Double?`\n        choices: 1,                     \u002F\u002F 可选的 `Int?`\n        stop: nil,                      \u002F\u002F 可选的 `[String]?`\n        maxTokens: nil,                 \u002F\u002F 可选的 `Int?`\n        presencePenalty: nil,           \u002F\u002F 可选的 `Double?`\n        frequencyPenalty: nil,          \u002F\u002F 可选的 `Double?`\n        logitBias: nil                 \u002F\u002F 可选的 `[Int: Double]?`（请参阅内联文档）\n    )\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [图像（DALL·E）](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fimages\u002Fcreate)\n\n根据提示生成一张图片。\n\n```swift\nopenAI.sendImages(with: \"A 3d render of a rocket ship\", numImages: 1, size: .size1024) { result in \u002F\u002F Result\u003COpenAI, OpenAIError>\n    switch result {\n    case .success(let success):\n        print(success.data.first?.url ?? \"\")\n    case .failure(let failure):\n        print(failure.localizedDescription)\n    }\n}\n```\n\n### [编辑](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fedits)\n\n根据提示和指令对文本进行编辑。\n\n```swift\ndo {\n    let result = try await openAI.sendEdits(\n        with: \"Improve the tone of this text.\",\n        model: .feature(.davinci),               \u002F\u002F 可选的 `OpenAIModelType`\n        input: \"I am resigning!\"\n    )\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [内容审核](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fmoderations)\n\n对文本进行分类以用于内容审核目的（更多信息请参阅 OpenAI 参考资料）。\n\n```swift\ndo {\n    let result = try await openAI.sendModeration(\n        with: \"Some harmful text...\",\n        model: .moderation(.latest)     \u002F\u002F 可选的 `OpenAIModelType`\n    )\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n### [嵌入](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fembeddings)\n\n获取给定输入的向量表示，该表示可以被机器学习模型和算法轻松消费。（更多信息请参阅 OpenAI 参考资料）。\n\n```swift\ndo {\n    let result = try await openAI.sendEmbeddings(\n        with: \"The food was delicious and the waiter...\"\n    )\n    \u002F\u002F 使用结果\n} catch {\n    \u002F\u002F ...\n}\n```\n\n## 贡献 ❤️\n\n我主要是出于兴趣而创建了这个库，我们可以添加更多的端点，并进一步探索这个库。欢迎提交 PR 来帮助扩展这个库。\n\n## 许可证 📥\n\nMIT 许可证（MIT）\n\n版权所有 © 2022 Adam Rush\n\n特此授予任何人免费获取本软件及与其相关的文档文件（“软件”）副本的权利，允许以任何方式处理该软件，包括但不限于使用、复制、修改、合并、发布、分发、再许可和\u002F或销售该软件的副本，并允许向其提供本软件的人进行上述操作，但须遵守以下条件：\n\n上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。\n\n“软件”按“原样”提供，不提供任何形式的明示或暗示担保，包括但不限于适销性、特定用途适用性和非侵权性担保。在任何情况下，作者或版权所有者均不对任何索赔、损害或其他责任负责，无论该等责任是基于合同、侵权或其他原因，亦无论该等责任是否源于、与本软件有关或因使用本软件而产生。","# OpenAISwift 快速上手指南\n\nOpenAISwift 是一个由社区维护的 Swift 库，用于轻松访问 OpenAI HTTP API。它支持 Swift 原生并发（async\u002Fawait）和传统的回调模式。\n\n## 环境准备\n\n*   **操作系统**：macOS, iOS, watchOS, tvOS, Linux\n*   **开发工具**：Xcode 14.0+ 或 Swift 5.7+\n*   **前置依赖**：\n    *   有效的 OpenAI API Key（需在 [OpenAI 平台](https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys) 获取）\n    *   网络连接（需能访问 `api.openai.com`）\n\n## 安装步骤\n\n推荐使用 **Swift Package Manager (SPM)** 进行安装。\n\n### 方式一：在 Xcode 中直接添加\n1. 打开你的 Xcode 项目。\n2. 点击菜单栏 `File` > `Add Packages...`。\n3. 在搜索框输入以下仓库地址：\n   ```text\n   https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift.git\n   ```\n4. 选择版本规则为 `Up to Next Major Version`，起始版本设为 `1.2.0`，点击 `Add Package`。\n\n### 方式二：手动编辑 Package.swift\n如果你在使用纯 Swift 包管理，请在 `Package.swift` 的 `dependencies` 数组中添加：\n\n```swift\n.package(url: \"https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift.git\", from: \"1.2.0\")\n```\n\n并在你的 target 依赖中添加 `\"OpenAISwift\"`。\n\n### 方式三：CocoaPods (可选)\n在 `Podfile` 中添加：\n```ruby\npod 'OpenAISwift'\n```\n然后运行 `pod install`。\n\n## 基本使用\n\n### 1. 导入与初始化\n在你的 Swift 文件中导入框架并配置 API Key：\n\n```swift\nimport OpenAISwift\n\n\u002F\u002F 替换为你的真实 API Key\nlet openAI = OpenAISwift(config: OpenAISwift.Config.makeDefaultOpenAI(apiKey: \"YOUR_SECRET_KEY\"))\n```\n\n### 2. 发送文本补全请求 (Completions)\n以下示例展示了如何使用 `async\u002Fawait` 语法调用 GPT-3 模型：\n\n```swift\ndo {\n    let result = try await openAI.sendCompletion(\n        with: \"Hello, how are you?\",\n        model: .gpt3(.davinci), \u002F\u002F 指定模型\n        maxTokens: 16,          \u002F\u002F 最大生成 token 数\n        temperature: 1          \u002F\u002F 创造性参数\n    )\n    \n    \u002F\u002F 打印返回的第一个选项\n    print(result.choices.first?.text ?? \"\")\n} catch {\n    print(\"Error: \\(error.localizedDescription)\")\n}\n```\n\n### 3. 发送聊天请求 (Chat \u002F ChatGPT)\n调用 ChatGPT (GPT-3.5) 或 GPT-4 进行对话：\n\n```swift\ndo {\n    let chat: [ChatMessage] = [\n        ChatMessage(role: .system, content: \"You are a helpful assistant.\"),\n        ChatMessage(role: .user, content: \"Who won the world series in 2020?\")\n    ]\n\n    let result = try await openAI.sendChat(with: chat, model: .chat(.chatgpt))\n    \n    \u002F\u002F 打印助手回复\n    print(result.choices.first?.message.content ?? \"\")\n} catch {\n    print(\"Error: \\(error.localizedDescription)\")\n}\n```\n\n> **提示**：该库也支持传统的闭包回调方式（Completion Handler），具体用法可参考上述代码将 `try await` 替换为闭包结构。","一位 iOS 开发者正在为一款教育类 App 开发\"AI 口语陪练”功能，需要让应用能够实时理解用户输入并生成自然的对话回复。\n\n### 没有 OpenAISwift 时\n- 开发者必须手动构建复杂的 HTTP 请求头、处理 JSON 序列化与反序列化，代码冗长且容易出错。\n- 难以直接利用 Swift 原生的 async\u002Fawait 特性，导致回调嵌套严重，主线程阻塞风险高，界面易卡顿。\n- 缺乏类型安全的模型定义，调用 ChatGPT 或 GPT-4 接口时需反复查阅文档确认参数格式，调试效率极低。\n- 每次更新 API 版本或切换模型（如从 davinci 切换到 gpt-4）都需要大量修改底层网络代码，维护成本高昂。\n\n### 使用 OpenAISwift 后\n- 仅需几行代码即可初始化客户端并发送请求，库自动处理底层网络通信与数据解析，大幅减少样板代码。\n- 完美支持 Swift 并发编程，通过 `try await` 语法即可异步获取对话结果，代码逻辑清晰且保证 UI 流畅响应。\n- 提供强类型的 `ChatMessage` 和 `OpenAIModelType` 枚举，编译期即可检查参数错误，显著降低运行时崩溃概率。\n- 灵活配置模型参数（如 temperature、maxTokens），切换不同 AI 模型只需更改枚举值，无需重构核心逻辑。\n\nOpenAISwift 将繁琐的 API 对接工作转化为简洁的类型安全调用，让 iOS 开发者能专注于打造卓越的 AI 交互体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fadamrushy_OpenAISwift_2d4645a0.png","adamrushy","Adam Rush","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fadamrushy_230fe3ab.jpg","iOS Engineer 💻  #Swift enthusiast 🚀 running some conferences you might have heard of 👀","Spoke","UK",null,"adam9rush","https:\u002F\u002Fwww.swiftleeds.com","https:\u002F\u002Fgithub.com\u002Fadamrushy",[87,91],{"name":88,"color":89,"percentage":90},"Swift","#F05138",99.1,{"name":92,"color":93,"percentage":94},"Ruby","#701516",0.9,1710,255,"2026-04-06T11:13:17","MIT","macOS, Linux, Windows","未说明",{"notes":102,"python":103,"dependencies":104},"这是一个 Swift 编写的 OpenAI API 客户端库，并非本地运行的 AI 模型，因此不需要 GPU、特定显存或大量内存。它通过 HTTP 请求调用 OpenAI 云端服务，主要依赖有效的 OpenAI API Key。支持 Swift 并发 (async\u002Fawait) 和传统回调写法。可通过 Swift Package Manager、CocoaPods 或手动复制源码集成到 iOS、macOS、watchOS、tvOS 或 Linux 项目中。","不适用 (Swift 语言项目)",[105,106,107],"Swift 5.7+","Xcode (推荐)","Swift Package Manager 或 CocoaPods",[15],[110,111,112],"chatgpt","swift","swiftui","2026-03-27T02:49:30.150509","2026-04-08T01:49:26.378418",[116,121,126,131,136,141],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},23458,"遇到响应解码错误（DecodingError）或 API 请求失败怎么办？","最常见的原因是 API Key 无效或不匹配。请前往 OpenAI 官网的 API Keys 页面检查您的密钥。注意页面上显示的密钥中间部分是被截断的，请仔细核对您代码中使用的密钥末尾字符是否与官网显示的一致。如果不一致或密钥突然失效，建议生成一个新的 API Key 并更新到代码中。此外，OpenAI 可能会自动轮换那些被认为已泄露的密钥。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F11",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},23457,"为什么调用 gpt-4 模型时报错 \"model_not_found\" 或 \"The model: gpt-4 does not exist\"？","这通常不是代码错误，而是因为您的 OpenAI 账户尚未获得 GPT-4 的访问权限。即使 API Key 有效，如果您未被加入 GPT-4 的等待名单或未收到准入邮件，调用该模型就会失败。请检查您的邮箱确认是否已获准访问，或者尝试使用 .chatgpt 等已有权限的模型。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F103",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},23459,"频繁遇到 \"keyNotFound: object\" 的解码错误如何解决？","这个问题通常与免费试用账户的速率限制或令牌限制有关，尤其是在试用超过 3 个月或未绑定支付方式时更容易发生。解决方案是在您的 OpenAI 账户中添加账单详细信息（绑定支付方式）。一旦账户升级为付费状态或验证了支付信息，该错误通常会消失。如果问题持续，也可以尝试将 SPM 依赖标签从特定版本（如 1.2.0）更改为 \"Main\" 分支以获取修复。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F50",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},23460,"为什么 AI 返回的回答与问题完全无关或内容随机混乱？","这通常是由于发送给 API 的输入内容为空字符串导致的。请检查您的代码，确保传递给 `sendCompletion` 或类似方法的文本参数不是空的。另外，尝试在问题末尾添加问号（?）有时也能帮助模型更好地理解意图，但主要请排查是否误传了空值。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F17",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},23461,"为什么收到的 AI 回复文本被截断，感觉不完整？","这是因为 OpenAI API 默认的 `max_tokens`（最大生成令牌数）限制为 16，导致长回答被切断。您需要在调用方法时显式传递 `maxTokens` 参数来增加长度限制。例如：`openAI.sendCompletion(with: \"Hello\", maxTokens: 100) { ... }`。库的新版本已支持此参数，请确保您使用的是最新版本。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F3",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},23462,"如何修复因 API 响应字段缺失导致的 Codable 解码崩溃？","这是由于 OpenAI API 返回的某些字段（如 \"object\"）在特定情况下可能缺失，而库中的结构体将其定义为非可选类型导致的。维护者已在新版本中将这些属性修改为可选类型（String?）。解决方法是将您的 Swift Package Manager (SPM) 依赖项更新到最新发布的版本，或者暂时将依赖分支指向 \"Main\" 以包含此修复。","https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fissues\u002F62",[147,152],{"id":148,"version":149,"summary_zh":150,"released_at":151},144962,"1.4.1","## 变更内容\n* @bluepi0j 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F63 中添加了对聊天流的支持\n* @ysak-y 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F94 中为 ChatMessage 添加了 id 属性，以符合 Identifiable 协议\n* 【Bug修复】@adamrushy 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F97 中修复了 EndPoint 的实现\n\n## 新贡献者\n* @ysak-y 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F94 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fcompare\u002F1.4.0...1.4.1","2023-07-11T09:27:45",{"id":153,"version":154,"summary_zh":155,"released_at":156},144963,"1.4.0","## 变更内容\n* 由 @Matt54 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F68 中将 completionTokens 设为可选\n* 欢迎 CocoaPods 集成，由 @izyumkin 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F79 中引入\n* GPT-4 支持，由 @rom4in 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F82 中添加\n* sendModeration 端点，由 @mikwat 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F86 中实现\n* 对 macOS 的支持，由 @rom4in 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F91 中加入\n* 添加自定义服务器代理支持，由 @astrokin 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F81 中完成\n\n## 新贡献者\n* @Matt54 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F68 中完成了首次贡献\n* @izyumkin 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F79 中完成了首次贡献\n* @rom4in 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F82 中完成了首次贡献\n* @mikwat 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F86 中完成了首次贡献\n* @astrokin 在 https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fpull\u002F81 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fadamrushy\u002FOpenAISwift\u002Fcompare\u002F1.3.0...1.4.0","2023-07-11T09:04:32"]