惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Webroot Blog
Webroot Blog
AI
AI
P
Palo Alto Networks Blog
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tor Project blog
罗磊的独立博客
小众软件
小众软件
S
Security Affairs
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
NISL@THU
NISL@THU
博客园_首页
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
A
About on SuperTechFans
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
G
GRAHAM CLULEY
雷峰网
雷峰网
F
Full Disclosure
I
Intezer
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
U
Unit 42

Guyskk的博客

AI 编程=控制系统:BeecodeAI 的设计原理 把大模型当成晶体管:从阻抗匹配到集成运放的思维实验 控制论视角下的 AI 编码:二阶系统、放大器与注意力的最优分配 AI Coding 验证系统的第一性原理 AI Coding Team 管理笔记 从文本补全到状态机循环:重定义 AI Agent 的操作系统架构 分析 Claude Code 提示词的方法 - mitmproxy Claude Code 监督器:让 AI 主动把事情做好 我的AI大模型技术分享2025 三十而砺 - 反思我的创业 自宅创业 - #34 宝贝女儿出生,我当爸爸了 自宅创业 - #33 继续聊聊自媒体AI副业工具 自宅创业 - #32 新产品-自媒体副业工具 自宅创业 - #31 APP上架了,路在何方? 自宅创业 - #30 人机交互,打造AI写作神器 2023自宅创业年终总结 自宅创业 - #28 我在ChatGPT风口的创业总结 2022自宅创业总结,进入创业新阶段 自宅创业 - #27 蹭热点的ChatGPT小程序 自宅创业 - #26 开发果蔬时节APP 自宅创业 - #25 驾照到手 & 买车 自宅创业 - #24 继续独立开发艺爪付费 自宅创业 - #23 考驾照、忙碌的一个月 自宅创业 - #22 艺爪付费迭代 & 重回赣州 自宅创业 - #21 新产品艺爪付费上线内测 自宅创业 - #20 付费订阅后端完成 & 商标注册 自宅创业 - #19 继续开发,为网站App提供付费订阅 自宅创业 - #18 开始新产品,为网站App提供付费订阅 2021自宅创业10个月总结,我会再次挑战 自宅创业 - #17 代码重构,以及蚁阅的更新 Hami-Vuex开源了,哈密瓜味的Vuex! 自宅创业 - #16 半独立开发的第一个月 自宅创业 - #15 开始远程兼职 自宅创业 - #14 写订单系统后台 自宅创业 - #13 创业半年回顾 自宅创业 - #12 专注和效率问题 自宅创业 - 小程序迭代延期 + 卖猕猴桃 自宅创业 - The Mom Test 自宅创业 - 水果直销自营模式
自宅创业 - #29 经验分享: 让AI输出结构化JSON数据
2024-04-05 · via Guyskk的博客

最近一个多月我比较忙碌,开始投入工作和创业中,在此分享一下进展和我在AI方面的一点经验。

本月进展

蚁阅RSS 收到用户赞助,新增发布订阅功能。发布订阅功能用于公开你的订阅,让网友可以在你的网站上阅读你的订阅内容。详见蚁阅1.9.0更新日志

接单给一个AI小程序增加Markdown和Latex数学公式渲染功能,已完成交付上线。

接单给一个企业接入AI实现业务需求,正在开发中。

调研AI市场用户需求,计划开发新功能「AI写作」。

重构了自己AI产品的前端代码,修复一些遗留问题。

如何让AI输出结构化JSON数据

AI(LLM)的输入和输出都是基于自然语言的,然而编程语言只能理解结构化的数据,将AI集成到业务中时经常需要用到结构化的数据,这时可以借助TypeChat让AI生成结构化的JSON数据。

因为AI的训练数据包含了大量编程知识,其中包括TypeScript和JSON,所以可以借助TypeScript描述数据结构,让AI用JSON格式输出数据。通过实践验证AI也确实能够遵循指令输出JSON数据。

示例提问:

You are a service that translates user requests into JSON object according to the following TypeScript definitions of type `Result`.
你是一个用户请求翻译器,根据用户请求和以下TypeScript定义准确翻译成符合 `Result` 类型的JSON对象。TypeScript定义如下:
```
// 判断用户需要什么样的咖啡
type Result {
    size: string,    // 大小:中杯、大杯、超大杯
    sugar: string,   // 糖分: 无糖、半糖、9分糖
}
```
Please translate the user request into a JSON object directly, with 2 spaces of indentation, use `null` to represent values that cannot be translated. Please make sure response JSON text directly.
请将用户请求直接翻译成JSON数据,用2个空格缩进,无法翻译的值用null表示。请确保直接输出JSON数据,不要回复其他内容。

Please translate the following user request into JSON object(请翻译以下用户请求成JSON数据):
我想要一杯咖啡,不要加糖,大杯,加牛奶

AI的回答:

```json
{
  "size": "大杯",
  "sugar": "无糖",
  "milk": true
}
```

但是使用过程中发现存在一些缺陷:

AI可能不会直接输出JSON文本,而是用Markdown语法输出,也可能会输出多余的文字。

解决方案:使用正则表达式提取代码块里面的JSON文本。有些模型支持 JSON mode ,可以确保输出JSON格式数据。

AI可能输出的JSON语法不对,多余的逗号,添加了注释,将 null 写成了 undefined

解决方案:使用 https://github.com/PiotrDabkowski/Js2Py 这个库将JSON文本当作JavaScript解析,提取返回的对象。

AI输出的JSON数据结构可能不对,会缺失字段或者多余字段。

解决方案:对数据问题做容错处理,校验数据,校验失败时让AI重新回答。调整 temperaturetop_p 参数,减少输出的随机性和多样性,使输出更加稳定、集中和确定。

AI对字段的含义理解可能不对,返回了错误的数据。

解决方案:在TypeScript文本中写注释,描述字段的含义,给AI提供指导,给AI举例子。

微软的TypeChat库提供了很好的思路,但处理各种特殊情况时不够灵活,最好的效果是直接自己拼接提示词。我写了一个 typechat.py 已开源在GitHub Gist上,可以参考使用。

最后

通过「RSS阅读器」或者关注公众号「自宅创业」可以订阅博客更新,也可以在 关于我 页面找到我的联系方式,欢迎交流!