返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

支持大模型流式输出的JSON提取工具

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题

在我们日常处理大模型的输出时,经常希望输出的结果为结构化的(例如输出json格式),这样有助于我们进行结果的后处理。但是在模型输出超过限制和流式输出时就会遇到问题了,由于答案没完全输出,转json就存在问题。

大型语言模型(LLMs)产生结构化输出的原因包括:
  • 提高可读性:结构化输出使得信息以一种逻辑清晰、易于理解的方式呈现,提高了信息的可读性和用户体验。
  • 便于处理:结构化数据可以更容易地被机器读取和处理,有助于后续的数据分析、存储和检索。
  • 支持自动化:结构化输出可以方便地与自动化工具和流程集成,例如自动填充表格、数据库录入或触发特定的业务流程。
  • 增强一致性:通过规定输出的格式和结构,可以确保不同时间或不同情境下产生的输出具有一致性。
  • 促进数据交换:结构化数据遵循特定的标准和格式,便于在不同的系统和应用程序之间进行数据交换。
  • 改善信息检索:结构化输出使得搜索引擎和检索系统能够更准确地索引和检索信息。
  • 适应多种用途:结构化数据可以根据需要被转换成不同的格式,以适应报告、分析、可视化等多种用途。
  • 减少歧义:明确的结构有助于减少对输出内容的误解或歧义。
  • 促进多模态交互:结构化输出可以支持与视觉、声音等多种模态的交互,提高多模态应用的体验。
  • 提高可维护性:当需要更新或维护输出内容时,结构化数据更容易管理和修改。

工具功能介绍:
  • json补全
  • 配合流式输出
  • 解析markdown格式
  • 字段校验

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">效果展示

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);text-align: left;">部分输出的

text = '''{"name":"张三", "age":'''print(parse_json_markdown(text))
# {'name': '张三'}

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);text-align: left;margin-bottom: 0px;">markdown格式

text = '''```json\n{"name":"张三", "age":27'''print(parse_json_markdown(text))
# {'name':'张三','age':27}

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);text-align: left;margin-bottom: 0px;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);text-align: left;margin-bottom: 0px;">多维嵌套

text = '''```json\n{"name":"张三", "age": 27, "爱好": ["羽毛球'''print(parse_json_markdown(text))
# {'name': '张三', 'age': 27, '爱好': ['羽毛球']}

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);text-align: left;margin-bottom: 0px;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">核心代码介绍

核心处理代码如下:

new_chars = []stack = []is_inside_string = Falseescaped = False
# Process each character in the string one at a time.for char in s:if is_inside_string:if char == '"' and not escaped:is_inside_string = Falseelif char == "\n" and not escaped:char = "\\n"# Replace the newline character with the escape sequence.elif char == "\\":escaped = not escapedelse:escaped = Falseelse:if char == '"':is_inside_string = Trueescaped = Falseelif char == "{":stack.append("}")elif char == "[":stack.append("]")elif char == "}" or char == "]":if stack and stack[-1] == char:stack.pop()else:# Mismatched closing character; the input is malformed.return None

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ