ChatGPT 人工智能 GPT4 伦理 生成式 医疗 监管 安全 机器学习 深度学习 神经网络 计算机视觉 强化学习 模型 算法 应用 开发 研究 工具 平台 框架 数据集 训练 部署 安全 合规 培训 投资 LLM,llm AI,ai,Ai 大模型 大语言模型 制图 生图 绘图 文生图 文生视频 生成式AI AGI 世界模型 sora chatGPT,chatgpt,ChatGpt claude openai Llama deepseek midjourney 红熊猫模型 Red panda,panda Stable Diffusion,StableDiffusion,stable DALL- E 3 DALL E DALL Flux,flux 扩散模型 混元大模型 文心一言 通义千问 可灵 Pika PixelDance 豆包 月之暗面 零一万物 阶跃星辰 搜索增强 MiniMax Talkie Agent prompt fastai LangChain TTS 微调 提示词 知识库 智能体
# 热门搜索 #
搜索
惊雷又来了,用含义类型化提示MTP:更高效地提示LLM结构化输出,支持图片视频
6839点击    2024-10-28 11:55

在人工智能技术快速发展的今天,大语言模型(LLM)已经展现出惊人的能力。然而,让这些模型生成规范的结构化输出仍然是一个难以攻克的技术难题。不论是在开发自动化工具、构建特定领域的解决方案,还是在进行开发工具集成时,都迫切需要LLM能够产生格式严格、内容可靠的输出。


我之前有多篇文章重磅惊雷,用结构化RAG约束JSON响应格式化,复合AI系统输出成功率高达82.55%》《又见惊雷,结构化Prompt格式小小变化竟能让LLM性能波动高达76%,ICLR2024》《一记惊雷:改一下Prompt的输出顺序,就能显著影响LLM的评估结果都在介绍关于LLM输出问题,LLM输出是和各位产生最直接关系的部分,所以代号为“惊雷”,一般用这个题目,都是在介绍和LLM输出有关的内容。今天的这篇文章内容很简单,但用途却非常广泛,MTP(Meaning Typed Prompting)是一种新的提示词技术,它的主要目的是让AI生成更规范、更可靠的结构化输出,关键它还支持多模态输出!!!



MTP就像是一个"模板语言",告诉这个助手:"我要的答案必须是这个格式,每个部分都有特定的含义和规则。"使用MTP的好处是:输出格式统一,数据更容易处理,错误更少,AI更容易理解你的要求。使用MTP也很简单,第一步:定义你要什么;第二步,说明含义;第三步,要求输出格式。


01

结构化输出困境


当前业界普遍采用的解决方案主要依赖于零样本或少样本提示技术。开发人员需要提供JSON模板或Schema来定义期望的输出格式,然后通过后处理步骤来提取和验证生成的数据。这种方法存在多个严重的问题:



1. 过度依赖JSON Schema导致模型推理能力受限


2. 详细的Schema定义会大量增加token消耗


3. 难以保证语法的正确性,经常产生无效输出


4. 需要投入大量人力编写和维护提示模板


5. 系统适应性差,难以快速响应需求变化


6. 输出质量不稳定,需要频繁进行修正和验证


02

MTP技术原理深度解析


核心思想突破


含义类型化提示(Meaning Typed Prompting, MTP)技术的提出,标志着结构化输出生成领域的一次重要突破。它的核心思想可以概括为三个方面:


1. 类型系统的创新:扩展传统的内置类型和自定义类型系统,引入自然语言表达的类型定义方式。这种创新让类型定义不再是冰冷的符号,而是具有丰富语义的描述。


2. 表示方式的改进:摒弃繁琐的JSON Schema,转而采用更直观的Python类表示方式来请求结构化输出。这一改变大大降低了系统复杂度,提升了开发效率。


3. 语义信息的融入:将语义信息直接嵌入到提示中,减少对外部抽象的依赖。这种方式让模型能够更好地理解任务要求,产生更精准的输出。


03

技术架构详解


MTP的提示分为两个部分,System Message 和 User Message



MTP的技术架构包含以下几个关键组件:


1. Python类表示系统


传统的JSON Schema方式:


{

 "properties":{

  "first_name":{"title": "First Name", "type": "string"},

  "last_name":{"title": "Last Name", "type": "string"},

  "yob":{"title": "Year of Birth", "type": "integer"},

  "likes":{

   "items":{"type": "string"},

   "title": "Interests",

   "type": "array"

  }

 },

 "required":["first_name", "last_name", "yob", "likes"],

 "title": "Person",

 "type": "object"

}


MTP的Python类表示方式:


Person (Class) -> Person(

  first_name: str,

  last_name: str,

  yob: int,

  likes: list[str]

)


这种表示方式带来的优势包括:


- 代码量显著减少,提高了可读性


- 减少特殊字符使用,降低token消耗


- 更符合Python开发者的习惯


- 便于维护和修改


- 支持IDE的代码补全和类型检查


2. 表达性类型定义系统


MTP允许开发者使用自然语言来增强类型定义的语义表达:


Person (Class) -> Person(

  first_name: str - "Given name of the person",

  last_name: str - "Family name of the person",

  yob: int - "Year of Birth (e.g., 1990)",

  likes: list[str] - "List of favorite activities and interests",

  location: Semantic[str, "City, Country format"] - "Current residence location",

  status: Semantic[str, "Active | Inactive | Pending"] - "Account status"

)


这种定义方式的优势:


1. 提供了清晰的语义上下文


2. 减少了理解歧义


3. 支持复杂的类型约束


4. 便于文档生成


5. 提高了代码的自解释性


3. 提示组件系统


MTP提示包含以下核心组件:


1. 目标声明:


@llm.enhance("Extract structured information from user profile")


2. 信息上下文:


Information(

  examples=[

    Person(first_name="John", last_name="Doe", ...),

    Person(first_name="Jane", last_name="Smith", ...)

  ],

  context="Consider cultural variations in name formats"

)


3. 输出类型定义:


Output[Person] # 指定返回类型为Person对象


4. 输入参数:


def extract_profile(

  text: str - "Raw profile text",

  language: str - "Profile language"

) -> Person:

  pass


04

Semantix框架实现细节


语义类型系统实现



Semantix框架实现了一个强大的语义类型系统:


class Semantic(Generic[T, S]):

  def __init__(self, base_type: T, semantic: S):

    self.base_type = base_type

    self.semantic = semantic

     

  def validate(self, value: Any) -> bool:

    # 实现类型验证逻辑

    pass


Semantix是一个Python库,可自动生成意义类型的提示。Semantix允许开发人员通过添加名为enhance的装饰器来将简单函数增强为增强功能。语义类型提示允许开发人员添加富有表现力的类型定义。上图Semantix将Types、Variables、Functions和Main Function合并为一个增强函数,该函数在运行时生成MTP。下图有详细的运行示例。


05

实验评估详细分析




1. 多标签分类任务


性能分析:


- Semantix在准确率上领先其他框架


- Token使用效率处于较好水平


- 具有极高的可靠性


2. 命名实体识别任务


性能分析:


- Semantix在Token效率上有明显优势


- 准确率与其他框架相当


- 整体性能表现均衡


3. 合成数据生成任务


性能分析:


- Semantix保持了极高的可靠性


- 数据多样性表现良好


- Token使用量最优


06

实际应用案例


安装很简单,一条命令就搞定了:



示例一:还是用那道你已经很熟悉的题目,草莓strawberry这个单词里有几个"r"?



示例二:再找一张小票,能分析这张小票,也能分析一下Video:



示例三:食品分析案例利用多模态LLM通过CoT来识别拉面中的营养数据,包括卡路里、蛋白质、碳水化合物、脂肪、纤维和钠水平。





我运行的结果:


FoodAnalysis(nutrition_info=NutritionInformation(calories=650, protein=30, carbohydrates=75, fats=25, fiber=5, sodium=1500), ingredients=['wheat noodles', 'chicken or pork', 'soft-boiled eggs', 'shiitake mushrooms', 'broth', 'nori seaweed', 'leafy greens'], health_rating='Moderately Healthy - high protein and balanced nutrients but high in sodium')


模型不一致,图片清晰度不一致,导致图片识别存在误差。


MTP技术的出现为LLM结构化输出生成提供了一个新的解决方案。通过将语义信息直接嵌入到类型定义中,它既保持了系统的简单性,又实现了更好的性能表现。对于正在开发AI应用的朋友们来说,MTP提供了一个强大而灵活的工具,有助于提高开发效率和输出质量,我用模型网页界面和代码分别向您展示了MTP技术的结果。


文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。


关键词: AI , 提示词 , prompt , 人工智能
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

2
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI

3
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0