在人工智能领域,大型语言模型(LLM)的应用越来越广泛,尤其是在自然语言处理(NLP)方面。然而,将LLM的输出转化为结构化数据一直是开发者面临的挑战之一。Kor 是一个开源项目,旨在帮助用户通过LLM从文本中提取结构化数据。本文将详细介绍 Kor 的功能、特点、使用方法以及与其他工具的比较。
一、Kor简介
Kor 是一个开源库,专注于从文本中提取结构化数据。它通过定义数据提取的模式(schema),生成相应的提示(prompt),并将这些提示发送给指定的LLM,从而解析出所需的结构化数据。Kor 的核心优势在于它能够与各种LLM兼容,无论这些模型是否支持工具调用(tool calling)或JSON模式。
Kor 的设计灵感来源于对传统LLM的扩展需求。它特别适合那些没有聊天接口且不支持工具调用的旧式LLM。如果你正在使用支持工具调用的聊天模型,建议优先考虑使用模型自带的工具调用API,而不是Kor。
二、Kor的核心功能
(一)数据提取模式(Schema)
Kor 使用模式(schema)来定义需要从文本中提取的数据结构。模式可以使用 Kor 自己的风格定义,也可以通过 Pydantic 模型定义。以下是两种风格的示例:
-
Kor风格的模式定义
Python复制
from langchain.chat_models import ChatOpenAI from kor import create_extraction_chain, Object, Text llm = ChatOpenAI( model_name="gpt-3.5-turbo", temperature=0, max_tokens=2000, model_kwargs={ 'frequency_penalty': 0, 'presence_penalty': 0, 'top_p': 1.0 } ) schema = Object( id="player", description="User is controlling a music player to select songs, pause or start them or play music by a particular artist.", attributes=[ Text( id="song", description="User wants to play this song", examples=[], many=True, )