自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

支持大模型流式輸出的JSON提取工具 原創(chuàng)

發(fā)布于 2024-9-14 14:22
瀏覽
0收藏

在我們?nèi)粘L幚泶竽P偷妮敵鰰r(shí),經(jīng)常希望輸出的結(jié)果為結(jié)構(gòu)化的(例如輸出json格式),這樣有助于我們進(jìn)行結(jié)果的后處理。但是在模型輸出超過(guò)限制和流式輸出時(shí)就會(huì)遇到問(wèn)題了,由于答案沒(méi)完全輸出,轉(zhuǎn)json就存在問(wèn)題。

大型語(yǔ)言模型(LLMs)產(chǎn)生結(jié)構(gòu)化輸出的原因包括:

  • 提高可讀性:結(jié)構(gòu)化輸出使得信息以一種邏輯清晰、易于理解的方式呈現(xiàn),提高了信息的可讀性和用戶體驗(yàn)。
  • 便于處理:結(jié)構(gòu)化數(shù)據(jù)可以更容易地被機(jī)器讀取和處理,有助于后續(xù)的數(shù)據(jù)分析、存儲(chǔ)和檢索。
  • 支持自動(dòng)化:結(jié)構(gòu)化輸出可以方便地與自動(dòng)化工具和流程集成,例如自動(dòng)填充表格、數(shù)據(jù)庫(kù)錄入或觸發(fā)特定的業(yè)務(wù)流程。
  • 增強(qiáng)一致性:通過(guò)規(guī)定輸出的格式和結(jié)構(gòu),可以確保不同時(shí)間或不同情境下產(chǎn)生的輸出具有一致性。
  • 促進(jìn)數(shù)據(jù)交換:結(jié)構(gòu)化數(shù)據(jù)遵循特定的標(biāo)準(zhǔn)和格式,便于在不同的系統(tǒng)和應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換。
  • 改善信息檢索:結(jié)構(gòu)化輸出使得搜索引擎和檢索系統(tǒng)能夠更準(zhǔn)確地索引和檢索信息。
  • 適應(yīng)多種用途:結(jié)構(gòu)化數(shù)據(jù)可以根據(jù)需要被轉(zhuǎn)換成不同的格式,以適應(yīng)報(bào)告、分析、可視化等多種用途。
  • 減少歧義:明確的結(jié)構(gòu)有助于減少對(duì)輸出內(nèi)容的誤解或歧義。
  • 促進(jìn)多模態(tài)交互:結(jié)構(gòu)化輸出可以支持與視覺(jué)、聲音等多種模態(tài)的交互,提高多模態(tài)應(yīng)用的體驗(yàn)。
  • 提高可維護(hù)性:當(dāng)需要更新或維護(hù)輸出內(nèi)容時(shí),結(jié)構(gòu)化數(shù)據(jù)更容易管理和修改。

工具功能介紹:

  • json補(bǔ)全
  • 配合流式輸出
  • 解析markdown格式
  • 字段校驗(yàn)

效果展示

部分輸出的

text = '''{"name":"張三", "age":'''
print(parse_json_markdown(text))


# {'name': '張三'}

markdown格式

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


# {'name': '張三', 'age': 27}

多維嵌套

text = '''```json\n{"name":"張三", "age": 27, "愛(ài)好": ["羽毛球'''
print(parse_json_markdown(text))


# {'name': '張三', 'age': 27, '愛(ài)好': ['羽毛球']}

核心代碼介紹

核心處理代碼如下:

new_chars = []
stack = []
is_inside_string = False
escaped = 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 = False
        elif char == "\n" and not escaped:
            char = "\\n"  # Replace the newline character with the escape sequence.
        elif char == "\\":
            escaped = not escaped
        else:
            escaped = False
    else:
        if char == '"':
            is_inside_string = True
            escaped = False
        elif 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


本文轉(zhuǎn)載自公眾號(hào)哎呀AIYA

原文鏈接:??https://mp.weixin.qq.com/s/-I3wXkRGgyEuRYUQa84AEQ??



?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦