コードセル1
!pip install -U openai


コードセル2
# Step 1: 必要ライブラリのインポート
import openai         # OpenAI API呼び出し用ライブラリ
import base64         # 画像をBase64 にエンコード／デコードするためのライブラリ
import os             # OS操作（環境変数やファイルパス操作）用ライブラリ
import cv2            # OpenCV：画像読み込み・処理用ライブラリ
import matplotlib.pyplot as plt  # 画像表示用ライブラリ

# Step 2: OpenAI APIキー（Colabセッションごとに再設定）
openai.api_key = "sk-**********"  # 🔑 あなたのAPIキー


コードセル3
# Step 3: ３つのテキストプロンプトを定義
# 回答スタイル
system_prompt = f"""
回答セクションの内容は重複しない。
文章作成の注意点：1文が70文字以上のとき、句読点のところで改行します。
文章スタイル：専門的な内容を中学生でもわかる簡潔な説明と解説で作成します。
"""

# 回答の出力形式
assistant_prompt = f"""
【異常の種類】
コルゲーション: ○○○○
亀裂: ○○○○
凸凹: ○○○○
くぼみ: ○○○○
段差: ○○○○
陥没: ○○○○
ブリスタリング: ○○○○
ポットホール: ○○○○
ポッピング: ○○○○
ずれ: ○○○○

【評価項目】
位置: ○○○○
影響範囲: ○○○○
形状・大きさ: ○○○○
進展性: ○○○○
表面状態: ○○○○
安全指標: ○○○○
下層・路盤挙動: ○○○○
環境との関係: ○○○○
荷重・交通条件: ○○○○
環境要因: ○○○○
緊急度・優先度: ○○○○

【分析結果】
○○○○

【状態説明】
○○○○

【各要素の評価】
○○○○

【専門家の解説・アドバイス】
○○○○
"""

# ユーザーの質問
user_prompt = f"""
この画像について、異常の有無を判断します。
"""

コードセル4
# Step 4: 画像プロンプトの読み込み・事前処理
# 画像をBase64エンコードする関数
def encode_image(image_path):
    # バイナリモードでファイルを開く
    with open(image_path, "rb") as image_file:
        # Base64に変換して文字列化
        return base64.b64encode(image_file.read()).decode("utf-8")

# 対象の画像ファイルを指定
image_path = "6.jpg"  # 画像ファイル名
img = cv2.imread(image_path)  # OpenCVで画像を読み込む

# 画像をBase64エンコードして文字列を取得
# encode_image関数を呼び出し、結果を変数に格納
base64_image = encode_image(image_path)
# 画像プロンプト（画像データをBase64形式の文字列を作成）
image_prompt = f"data:image/jpeg;base64,{base64_image}"


コードセル5
# Step 5: LLMで異常検出プログラム
# OpenAI API を呼び出し、指定モデルでテキスト＋画像入力から
# レスポンスを生成
response = openai.responses.create(
  model="gpt-4.1-mini",  # 使用するモデル名
  input=[
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": [
      # テキストプロンプト部分
      {"type": "input_text", "text": user_prompt + f"""

      【出力形式の例】
      {assistant_prompt}
      """},
      # 画像プロンプト部分
      {"type": "input_image", "image_url": image_prompt}]
    }
  ],
)


コードセル6
# Step 6: 回答の表示
# APIから返却されたテキスト部分をコンソールに出力
print(response.output_text)

# 画像を表示
plt.imshow(img)


