使用OpenAIPydanticProgram进行DataFrame结构化数据提取

使用OpenAIPydanticProgram进行DataFrame结构化数据提取

介绍

在数据处理及分析中,将原始文本转换为结构化的数据形式(如DataFrame)是非常常见的需求。本文将向大家介绍如何使用OpenAIPydanticProgram从文本中提取表格化的DataFrame数据。

我们将使用OpenAIPydanticProgram,它是围绕OpenAI LLM的一个封装,支持函数调用,并返回结构化输出,例如Pydantic对象。

环境准备

在开始之前,请确保你已经安装了必要的库。以下是一些必要的安装命令:

%pip install llama-index-llms-openai
%pip install llama-index-program-openai
!pip install llama-index

示例代码

使用OpenAIPydanticProgram构建DF Extractor

下面是一个完整的示例代码,展示了如何使用OpenAIPydanticProgram从文本中提取DataFrame:

from llama_index.program.openai import OpenAIPydanticProgram
from llama_index.core.program import DFFullProgram, DataFrame, DataFrameRowsOnly
from llama_index.llms.openai import OpenAI

# 初始化OpenAIPydanticProgram对象
program = OpenAIPydanticProgram.from_defaults(
    output_cls=DataFrame,
    llm=OpenAI(temperature=0, model="gpt-4-0613"),
    prompt_template_str=(
        "Please extract the following query into a structured data according"
        " to: {input_str}.Please extract both the set of column names and a"
        " set of rows."
    ),
    verbose=True,
)

# 测试示例
response_obj = program(
    input_str="""My name is John and I am 25 years old. I live in 
        New York and I like to play basketball. His name is 
        Mike and he is 30 years old. He lives in San Francisco 
        and he likes to play baseball. Sarah is 20 years old 
        and she lives in Los Angeles. She likes to play tennis.
        Her name is Mary and she is 35 years old. 
        She lives in Chicago."""
)
print(response_obj)

注释 : //中转API

在上面的代码中,我们定义了一个Prompt模板,并使用OpenAIPydanticProgram解析文本,将其转换为结构化的DataFrame数据。

使用现有的DataFrame架构提取数据

接下来我们展示如何使用已有的DataFrame架构进行数据提取:

from llama_index.program.openai import OpenAIPydanticProgram
from llama_index.core.program import DFRowsProgram
import pandas as pd

# 初始化空的DataFrame
df = pd.DataFrame(
    {
        "Name": pd.Series(dtype="str"),
        "Age": pd.Series(dtype="int"),
        "City": pd.Series(dtype="str"),
        "Favorite Sport": pd.Series(dtype="str"),
    }
)

# 使用已存在的DataFrame架构初始化程序
df_rows_program = DFRowsProgram.from_defaults(
    pydantic_program_cls=OpenAIPydanticProgram, df=df
)

# 解析文本
result_obj = df_rows_program(
    input_str="""My name is John and I am 25 years old. I live in 
        New York and I like to play basketball. His name is 
        Mike and he is 30 years old. He lives in San Francisco 
        and he likes to play baseball. Sarah is 20 years old 
        and she lives in Los Angeles. She likes to play tennis.
        Her name is Mary and she is 35 years old. 
        She lives in Chicago."""
)

# 将结果转换为DataFrame
df_result = result_obj.to_df(existing_df=df)
print(df_result)

注释 : //中转API

以上代码展示了如何使用现有的DataFrame架构来解析并提取文本数据。

可能遇到的错误

  1. 请求超时:由于网络问题或API服务器问题,可能会出现请求超时。请检查网络连接并重试。
  2. 数据格式不匹配:如果输入的文本格式不符合预期的Prompt模板,可能会导致解析错误。请确保输入文本格式正确。
  3. API调用配额超限:如果你使用的是免费API,可能会遇到调用配额超限的问题。此时可以尝试升级到付费版本,或者等待配额重置。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料

希望这篇文章能对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值