使用结构化输出规范 OpenAI API 的输出结果

使用结构化输出规范 OpenAI API 的输出结果 在 AI 驱动的应用程序中,生成结构化数据是一个核心需求。我们通常希望 AI 能够从非结构化的输入中提取信息,并将其转换为结构化数据格式以便后续的处理。随着 OpenAI API 的发展, 结构化输出(Structured Outputs) 特性已经被加入。 什么是结构化输出? 结构化输出 是 OpenAI API 的一个新功能,允许我们通过提...

使用结构化输出规范 OpenAI API 的输出结果

在 AI 驱动的应用程序中,生成结构化数据是一个核心需求。我们通常希望 AI 能够从非结构化的输入中提取信息,并将其转换为结构化数据格式以便后续的处理。随着 OpenAI API 的发展,**结构化输出(Structured Outputs)**特性已经被加入。

什么是结构化输出?

**结构化输出**是 OpenAI API 的一个新功能,允许我们通过提供 JSON Schema 来限制模型输出,使其完全符合预定义的数据结构。

实际应用:生物标志物规范化

我们通过一个例子来展示如何使用结构化输出规范 OpenAI API 的输出结果。
我有一个衰老相关的生物标志物表格,它们是从文献中手动提取的,由于提取比较粗糙,我只有它们的名称并且可能并不标准。现在我想借助 GPT 来规范化,同时生成新的两列 GPTAnno 和 Symbol,要求
  1. 规范生物标志物的名称
  1. 注释此生物标志物的功能
  1. 如果生物标志物是明确的基因,给出基因 SYMBOL;如果是体内的化学物质/小分子,给出直接相关的基因 SYMBOL。多个 SYMBOL 用英文逗号加空格隔开。其他情况返回 “/”。

Prompt 设计

我们需要设计两部分:给模型的角色(role)以及提示词(prompt)
例如,角色可以定义为
提示词则需要更详细:

代码实现

我们使用 OpenAI 的结构化输出功能,通过定义自定义的 JSON Schema,确保模型返回的结果始终包含标准化后的生物标志物名称、注释以及相关的基因符号。以下是代码实现。

1. 加载环境变量和设置代理

我们可以在工作目录创建一个 `.env` 文件,用于存储环境变量:
使用 `python-dotenv` 加载 `.env` 文件中的 API key、模型名称及代理设置。这样可以确保敏感信息不会硬编码在代码中,并且方便在不同的环境中部署。

2. 定义 Schema

为了确保 OpenAI API 的输出符合我们的需求,我们定义了一个 `BiomarkerAnnotation` 的数据结构。这个结构包含三部分:`Biomarker_Std`(标准化后的生物标志物名称)、`GPTAnno`(注释)和 `Symbol`(基因符号)。

3. 生成规范化的注释

`annotate_biomarker` 函数通过调用 OpenAI API,生成符合上述 Schema 的结构化输出。我们在函数中构建一个提示(prompt),要求模型规范化生物标志物名称,生成功能注释,并提供相关基因符号。使用 OpenAI 提供的 `completions.parse` 方法,可以保证输出与我们定义的 Schema 一致。

4. 处理批量生物标志物

我们需要处理多个生物标志物,并将结果保存为 CSV 文件。`process_biomarkers` 函数从输入文件中读取生物标志物,然后调用 `annotate_biomarker` 函数生成结构化输出,并将结果存储在一个新的 CSV 文件中。
上一篇
单细胞分析经验
下一篇
加权网络属性的计算方法
Loading...

Relate Posts