AnyLanguageModel 结构化输出攻略:@Generable 宏让 AI 返回类型安全数据
AnyLanguageModel 结构化输出攻略Generable 宏让 AI 返回类型安全数据【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apples Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModel在开发 AI 应用时最让人头疼的问题之一就是大模型返回的是自由文本而你的代码需要的是类型安全数据。AnyLanguageModel 是一个 API 兼容的 Swift 框架可作为 Apple Foundation Models 框架的即插即用替代品它内置的Generable 宏能把让 AI 返回结构化数据这件事变得像声明一个 Swift 结构体一样简单。本文将带你从零掌握 AnyLanguageModel 结构化输出告别手写 JSON 解析的痛苦。为什么需要结构化输出传统做法是让模型返回一段 JSON 字符串然后你手动JSONDecoder解码再小心翼翼地处理字段缺失、类型错误。这套流程的问题很明显格式不稳定模型偶尔多一个逗号、少一个引号解析直接崩溃字段名漂移说好的user_name变成了username约束不可控说好的数字范围 0~100它给你返回 9999大量胶水代码定义模型、写解析、写校验重复劳动而**结构化输出Structured Output**直接把约束写死在生成过程中模型在输出时就必须符合你定义的 schema从根本上杜绝了解析失败。AnyLanguageModel 是什么AnyLanguageModel 是一个开源 Swift 包定位是Apple Foundation Models 框架的 drop-in 替代品——你只需把import FoundationModels换成import AnyLanguageModel就能获得几乎一致的 API同时支持接入更多模型提供商类型提供商本地模型Core ML、MLX、llama.cpp (GGUF)、Ollama云端模型OpenAI、Open Responses、Anthropic Claude、Google Gemini系统模型Apple 系统语言模型核心的结构化输出能力由三部分组成全部开源在项目源码中Generable.swift定义Generable协议与Generable宏GenerableMacro.swift宏的实际实现自动生成 schema 与转换代码StructuredGeneration.swift本地模型的约束式 JSON 生成引擎Generable 宏入门三步拿到类型安全数据 ✅第一步声明一个结构体在任意struct或enum上打上Generable框架会自动为你生成 schema、初始化器和双向转换代码Generable(description: 猫咪的基本资料) struct CatProfile { var name: String Guide(description: 猫咪的年龄, .range(0...20)) var age: Int Guide(description: 用一句话描述猫咪的性格) var profile: String }第二步发起结构化输出请求通过respond(generating:)指定目标类型模型就会严格按结构返回let session LanguageModelSession(model: model) let response try await session.respond( to: 生成一只可爱的领养猫咪, generating: CatProfile.self )第三步直接使用强类型结果拿到手的response.content已经是完整的CatProfile实例字段直接访问无需任何手动解析print(response.content.name) // Mochi print(response.content.age) // 3 print(response.content.profile) // 一只喜欢晒太阳的橘猫整个过程零解析代码、零类型转换、零运行时崩溃风险这就是Generable 宏让 AI 返回类型安全数据的价值所在。Guide 宏给 AI 立规矩 光有类型还不够你通常还希望约束取值范围。Guide就是干这个的它支持非常丰富的约束实现见GenerationGuide.swift数字范围约束Generable struct GameCharacter { Guide(description: 角色名字, .minimum(1)) var level: Int Guide(description: 角色星级, .range(1...5)) var star: Int Guide(description: 血量百分比, .range(0.0...100.0)) var health: Double }数组数量约束Generable struct QuizQuestion { Guide(description: 题目内容) var text: String Guide(.count(4)) // 恰好 4 个选项 var choices: [String] Guide(.count(2...5)) // 或 2 到 5 个标签 var tags: [String] }枚举约束枚举也可以直接Generable模型只能在给定 case 中挑选天然适合状态、优先级等场景Generable enum Priority: Equatable { case low case medium case high }测试代码里就有现成的枚举与嵌套结构示例见StructuredGenerationFixtures.swift。实战让天气工具拥有结构化参数 ️把结构化输出和工具调用Tool Calling结合是 AI 应用中最高频的玩法。AnyLanguageModel 官方 README 的示例非常典型struct WeatherTool: Tool { let name getWeather let description 获取某个城市的最新天气信息 Generable struct Arguments { Guide(description: 要查询天气的城市) var city: String } func call(arguments: Arguments) async throws - String { \(arguments.city) 的天气是晴天72°F / 23°C } } let session LanguageModelSession(model: model, tools: [WeatherTool()]) let response try await session.respond { Prompt(Cupertino 的天气怎么样) }模型会自动生成符合Arguments结构的工具调用参数你的call方法拿到的arguments就是类型安全的Arguments实例安全、直观、零解析。高级技巧流式输出与嵌套结构 ⚡PartiallyGenerated流式结构化输出Generable会自动为结构体生成一个PartiallyGenerated类型支持流式生成过程中拿到半成品数据。所有属性都是可选值生成到哪一步就能读到哪一步非常适合做实时 UI 展示。嵌套结构体结构体可以任意嵌套schema 会自动递归构建$defs引用机制例如人 → 地址这种层级结构完全没问题Generable struct StructuredPerson { Guide(description: 姓名) var name: String Guide(description: 年龄) var age: Int var address: Address // 另一个 Generable 结构体 }底层原理如果你好奇宏到底生成了什么可以查看GenerableMacro.swift——它自动合成成员初始化器、init(_ generatedContent:)、generationSchema、generatedContent等一整套代码。生成后的 schema 是标准的 JSON Schema见GenerationSchema.swift云端模型直接用 schema 约束输出本地模型Core ML、MLX、llama.cpp则走约束式 token 采样见StructuredGeneration.swift。快速上手安装与运行 ️在Package.swift中加入依赖即可dependencies: [ .package(url: https://gitcode.com/gh_mirrors/an/AnyLanguageModel, from: 0.8.0) ]也可以直接克隆体验git clone https://gitcode.com/gh_mirrors/an/AnyLanguageModel运行测试验证一切正常swift test常见问题 FAQ QGenerable 支持哪些类型A基础类型 String、Int、Double、Float、Bool、Decimal以及数组、字典、可选值、枚举和任意嵌套结构体都支持。Q云端模型也支持结构化输出吗A支持。OpenAI、Open Responses、Anthropic 和 Gemini 都会把生成的 schema 传给服务端实现真正的输出约束。Q字段解析失败怎么办A得益于生成阶段的约束失败概率极低结构体初始化器是throws的万一失败你可以捕获错误并重试。总结 AnyLanguageModel 的Generable Guide组合把AI 结构化输出从繁琐的 JSON 解析工作流变成了纯粹的 Swift 类型声明体验。无论是本地跑 MLX / llama.cpp还是接 OpenAI / Claude / Gemini你都用同一套类型安全 API。如果你想彻底告别解析 AI 返回的字符串这就是终极方案——快去试试吧【免费下载链接】AnyLanguageModelAn API-compatible, drop-in replacement for Apples Foundation Models framework with support for custom language model providers.项目地址: https://gitcode.com/gh_mirrors/an/AnyLanguageModel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

VidBee视频下载工具实战指南:从第一次下载到RSS全自动搬运,一篇讲透

VidBee视频下载工具实战指南:从第一次下载到RSS全自动搬运,一篇讲透

VidBee视频下载工具实战指南:从第一次下载到RSS全自动搬运,一篇讲透 【免费下载链接】VidBee Download videos from almost any website worldwide 项目地址: https://gitcode.com/GitHub_Trending/vi/VidBee 你是否经历过这样的时刻:…

2026/8/19 16:51:02 阅读更多 →
JSDebugger 方法调用语法全解:冒号转下划线的规则与 10 个实用示例

JSDebugger 方法调用语法全解:冒号转下划线的规则与 10 个实用示例

JSDebugger 方法调用语法全解:冒号转下划线的规则与 10 个实用示例 【免费下载链接】JSDebugger JavaScript-Based Debugger For Inspecting Running State Of Your Application 项目地址: https://gitcode.com/gh_mirrors/js/JSDebugger 想用 JavaScript 直…

2026/8/19 17:08:50 阅读更多 →
Umi-OCR完整上手指南:免费离线搞定截图识别、批量图片与PDF转文字

Umi-OCR完整上手指南:免费离线搞定截图识别、批量图片与PDF转文字

Umi-OCR完整上手指南:免费离线搞定截图识别、批量图片与PDF转文字 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/19 19:43:56 阅读更多 →

最新新闻

PLFM_RADAR开源贡献终极指南:从零开始参与10.5GHz相控阵雷达开发

PLFM_RADAR开源贡献终极指南:从零开始参与10.5GHz相控阵雷达开发

PLFM_RADAR开源贡献终极指南:从零开始参与10.5GHz相控阵雷达开发 【免费下载链接】PLFM_RADAR Open-source, low-cost 10.5 GHz PLFM phased array RADAR system 项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR PLFM_RADAR是一个完全开源的10…

2026/8/19 19:51:15 阅读更多 →
闲置老Mac如何重获新生?OpenCore Legacy Patcher重装新系统与WiFi修复完整记录

闲置老Mac如何重获新生?OpenCore Legacy Patcher重装新系统与WiFi修复完整记录

闲置老Mac如何重获新生?OpenCore Legacy Patcher重装新系统与WiFi修复完整记录 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 周末整理杂物间&am…

2026/8/19 19:51:15 阅读更多 →
vscode-textmate 安装与配置完整指南:一次搞定 Oniguruma WASM 正则引擎集成

vscode-textmate 安装与配置完整指南:一次搞定 Oniguruma WASM 正则引擎集成

vscode-textmate 安装与配置完整指南:一次搞定 Oniguruma WASM 正则引擎集成 【免费下载链接】vscode-textmate A library that helps tokenize text using Text Mate grammars. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-textmate 如果你正在开发…

2026/8/19 19:51:15 阅读更多 →
rust-sfml 音频开发完整指南:一步步带你实现音效播放与 3D 空间音效

rust-sfml 音频开发完整指南:一步步带你实现音效播放与 3D 空间音效

rust-sfml 音频开发完整指南:一步步带你实现音效播放与 3D 空间音效 【免费下载链接】rust-sfml SFML bindings for Rust 项目地址: https://gitcode.com/gh_mirrors/ru/rust-sfml rust-sfml 是 SFML 多媒体库的 Rust 绑定,为游戏和多媒体应用提供…

2026/8/19 19:51:15 阅读更多 →
从像素到策略:用S-RL Toolbox理解端到端强化学习(raw_pixels)的工作方式

从像素到策略:用S-RL Toolbox理解端到端强化学习(raw_pixels)的工作方式

从像素到策略:用S-RL Toolbox理解端到端强化学习(raw_pixels)的工作方式 【免费下载链接】robotics-rl-srl S-RL Toolbox: Reinforcement Learning (RL) and State Representation Learning (SRL) for Robotics 项目地址: https://gitcode.com/gh_mirrors/ro/robo…

2026/8/19 19:51:15 阅读更多 →
告别刺眼原生界面,一劳永逸的 foobar2000 美化方案:foobox-cn 皮肤上手体验

告别刺眼原生界面,一劳永逸的 foobar2000 美化方案:foobox-cn 皮肤上手体验

告别刺眼原生界面,一劳永逸的 foobar2000 美化方案:foobox-cn 皮肤上手体验 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 深夜十一点,房间的灯已经关了&#xff…

2026/8/19 19:50:15 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →