構造化出力と条件付きプロンプト

OpenAI API によるプロンプトエンジニアリング

Fouad Trad

Machine Learning Engineer

構造化出力

  • LLMは、明示的な指示が与えられた場合にのみ構造化出力を生成します
  • 出力構造:
    • リスト
    • 構造化された段落
    • カスタム形式

Visual diagram showing that when we ask ChatGPT for a structured output, we obtain an output with the structure we requested, but when we don't specify the required structure we obtain an answer with random or no structure at all.

OpenAI API によるプロンプトエンジニアリング

テーブル

  • 必要な列を明確に指定する
prompt = "Generate a table containing 5 movies I should watch if I am an action 
lover, with columns for Title and Rating."
print(get_response(prompt))
| Title                           | Rating |
|---------------------------------|--------|
| Mad Max: Fury Road              | 8.1    |
| John Wick                       | 7.4    |
| The Dark Knight                 | 9.0    |
| Die Hard                        | 8.2    |
| Gladiator                       | 8.5    |
OpenAI API によるプロンプトエンジニアリング

リスト

  • 項目の列挙に役立つ
prompt = "Generate a list containing the names of the top 5 cities to visit."
print(get_response(prompt))
1. Tokyo, Japan
2. Paris, France
3. Rome, Italy
4. New York City, United States
5. Sydney, Australia
OpenAI API によるプロンプトエンジニアリング

リスト

  • 番号付けの要件はプロンプト内で明記する
prompt = "Generate an unordered list containing the names of the top 5 cities to visit."
print(get_response(prompt))
- Paris, France
- Tokyo, Japan
- Rome, Italy
- New York City, United States
- Sydney, Australia
OpenAI API によるプロンプトエンジニアリング

構造化された段落

  • 構造要件をプロンプト内で明記する
prompt = "Provide a structured paragraph with clear headings and subheadings 
about the benefits of regular exercise on overall health and well-being."
print(get_response(prompt))
OpenAI API によるプロンプトエンジニアリング

構造化された段落

I. Introduction
Regular exercise is essential for maintaining good health and overall well-being. [...]

II. Physical Health Benefits
a. Weight Management: Regular exercise is [...]
b. Reduced Risk of Chronic Diseases: Exercise has been linked to [...]
c. Increased Strength and Flexibility: Regular exercise improves muscle strength and [...]

III. Mental Health Benefits
a. Reduced Stress and Anxiety: Exercise has a profound impact on [...]
b. Improved Sleep Quality: Regular exercise is associated with improved sleep patterns [...]
c. Boosted Brain Function: Studies show that exercise enhances cognitive function [...]
OpenAI API によるプロンプトエンジニアリング

独自の出力形式

text = "Once upon a time in a quaint little village, there lived a curious young boy named 
David. David was [...]"

instructions = "You will be provided with a text delimited by triple backticks. Generate a suitable title for it. "
output_format = """Use the following format for the output: - Text: <text we want to title> - Title: <the generated title>"""
prompt = instructions + output_format + f"```{text}```" print(get_response(prompt))
- Text: Once upon a time in a quaint little village, there lived a curious young boy [...]
- Title: The Extraordinary Adventure of David and the Mysterious Book
OpenAI API によるプロンプトエンジニアリング

条件付きプロンプト

  • ロジックや条件を組み込む
  • 条件付きプロンプトは if-else 形式に従う

Visual diagram showing a test condition. If this condition is true X should be performed, and if it is false, Y should be performed.

OpenAI API によるプロンプトエンジニアリング

条件付きプロンプト

text = "Le printemps est ma saison préférée. Quand les premières fleurs commencent 
à éclore, et que les arbres se parent de feuilles vertes et tendres, je me sens 
revivre [...] "
prompt = f"""You will be provided with a text delimited by triple backticks. 
         If the text is written in English, suggest a suitable title for it.
         Otherwise, write 'I only understand English'.
         ```{text}```"""

print(get_response(prompt))
I only understand English
OpenAI API によるプロンプトエンジニアリング

条件付きプロンプト

  • 複数の条件を組み込める
text = "In the heart of the forest, sunlight filters through the lush green canopy, 
creating a tranquil atmosphere [...] "
prompt = f"""You will be provided with a text delimited by triple backticks. 
         If the text is written in English, check if it contains the keyword 'technology'. 


         ```{text}```"""
print(get_response(prompt))
OpenAI API によるプロンプトエンジニアリング

条件付きプロンプト

  • 複数の条件を組み込める
text = "In the heart of the forest, sunlight filters through the lush green canopy, 
creating a tranquil atmosphere [...] "
prompt = f"""You will be provided with a text delimited by triple backticks. 
         If the text is written in English, check if it contains the keyword 'technology'. 
         If it does, suggest a suitable title for it, otherwise, write 'Keyword not found'.

         ```{text}```"""
print(get_response(prompt))
OpenAI API によるプロンプトエンジニアリング

条件付きプロンプト

  • 複数の条件を組み込める
text = "In the heart of the forest, sunlight filters through the lush green canopy, 
creating a tranquil atmosphere [...] "
prompt = f"""You will be provided with a text delimited by triple backticks. 
         If the text is written in English, check if it contains the keyword 'technology'. 
         If it does, suggest a suitable title for it, otherwise, write 'Keyword not found'.
         If the text is not written in English, reply with 'I only understand English'.
         ```{text}```"""
print(get_response(prompt))
Keyword not found
OpenAI API によるプロンプトエンジニアリング

練習しましょう!

OpenAI API によるプロンプトエンジニアリング

Preparing Video For Download...