🦔

OpenAI 構造化出力 - 全て知っておくべきこと

2024/08/09に公開

構造化出力とは?

構造化出力とは、情報やデータを特定の形式や構造で提示することを指し、理解や処理を容易にします。OpenAIのコンテキストでは、構造化出力はモデルが生成したテキストやデータを特定の形式で出力することを意味し、これにより情報の統合や利用が向上します。

構造化出力の利点

  1. 処理の容易さ:構造化出力は情報をコンピュータプログラムが読み取りやすく、処理しやすくします。
  2. 正確性の向上:明確な形式により、情報伝達における誤りを減らすことができます。
  3. 統合の容易さ:構造化データは他のシステムやアプリケーションと容易に統合できます。

一般的な構造化出力の形式

  1. JSON:軽量のデータ交換フォーマットで、人と機械が読み書きしやすいです。
  2. XML:文書内のデータをルールに基づいてマークアップするための言語です。
  3. CSV:表形式のデータをカンマで区切って保存するテキストファイルです。

OpenAIの構造化出力の用途

  1. APIコール:APIから構造化データを返すことで、開発者が処理や統合しやすくなります。
  2. データ分析:生成された構造化データは、直接データ分析や処理に使用できます。
  3. 自動化タスク:構造化出力は情報抽出やデータ変換などの自動化ワークフローに使用できます。

以下は、JSON形式の構造化出力の簡単な例です:

import openai

# Set up your OpenAI API key
openai.api_key = 'sk-PbMfoP.....'

# Define the JSON schema
schema = {
    "type": "object",
    "properties": {
        "title": {"type": "string"},
        "advantages": {
            "type": "array",
            "items": {"type": "string"}
        },
        "applications": {
            "type": "array",
            "items": {"type": "string"}
        }
    },
    "required": ["title", "advantages", "applications"]
}

# Make a request with function call to enforce the schema
response = openai.ChatCompletion.create(
    model="gpt-4-0613",
    messages=[
        {"role": "system", "content": "You are a helpful assistant that generates structured outputs."},
        {"role": "user", "content": "Explain the advantages of structured outputs."}
    ],
    functions=[{
        "name": "output_function",
        "description": "Generates structured outputs",
        "parameters": schema
    }],
    function_call={"name": "output_function"}
)

# Print the structured output
print(response.choices[0]["message"]["function_call"]["arguments"])



{
  "title": "Advantages of Structured Outputs",
  "advantages": [
    "Promotes consistency and adherence to predefined formats.",
    "Boosts the efficiency of processing for both humans and machines.",
    "Facilitates data integration and interoperability between systems.",
    "Simplifies error detection and troubleshooting.",
    "Streamlines the extraction of information and knowledge."
  ],
  "applications": [
    "Programming: Generating consistent and predictable coding structures.",
    "Database Management: Enforcing data constraints and maintaining data integrity.",
    "API Development: Ensuring reliable data exchanges between software components.",
    "Data Science: Boosting model interpretability and predictions.",
    "Information Systems: Enhancing decision-making and strategic planning."
  ]
}

Discussion