Day 7・小さく作って完成させる(実践)
実践: AI要約ツールを1ファイルで完成させる
入力→AI→整形→表示の4関数を1ファイルにまとめ、動く要約ツールを完成させる。
1ファイルで完成させる
前のレッスンの骨組みに中身を入れて、実際に動く要約ツールを完成させます。ファイルを分けず、1つの .py ファイルにまとめます。最初は1ファイルの方が全体を見渡せて、直す場所も探しやすいからです。
AIに文章を送って答えを受け取る部分は、AIの会社が用意した (プログラムから機能を呼び出す窓口)を使います。ここでは考え方を読んで理解することが目的です。写経して自分で動かす場合は、使うAIサービスの公式ドキュメントに従って準備してください。
APIキーの扱い
APIを使うには、あなた専用の合言葉である「APIキー」が必要になることが多いです。キーはパスワードと同じで、コードに直接書き込まず、環境変数などに入れて読み込みます。ここでは os.environ から読む形にしています。キーの発行手順は各サービスの公式ページで確認してください。
import os
def get_input():
print("要約したい文章を貼り付けて、最後にEnterを押してください。")
return input("文章: ")
def ask_ai(text):
# ここは各AIサービスの公式ライブラリで置き換える部分。
# 例として「送る指示(プロンプト)」を組み立てる形だけ示す。
prompt = "次の文章を、日本語で3行に要約してください。\n\n" + text
# api_key = os.environ["AI_API_KEY"] # キーは環境変数から読む
# answer = client.responses(prompt=prompt, api_key=api_key)
# return answer
return "(ここに要約が返ってくる)"
def format_result(answer):
# 前後の空白を消し、空行が続く場合は詰める
lines = [line.strip() for line in answer.splitlines() if line.strip()]
return "\n".join(lines)
def show(result):
print("\n=== 要約 ===")
print(result)
def main():
text = get_input()
if not text.strip():
print("文章が空です。もう一度実行してください。")
return
answer = ask_ai(text)
result = format_result(answer)
show(result)
if __name__ == "__main__":
main()なぜ main() でまとめ、if __name__ で囲むのか
処理の流れを main() という1つの関数にまとめると、「上から順に何をするか」が一目で分かります。if __name__ == "__main__": は「このファイルを直接実行したときだけ main() を動かす」という意味の決まり文句で、後でこのファイルを別のファイルから部品として読み込んでも勝手に動き出さないようにする安全装置です。
AIへの指示(プロンプト)を変数にする
ask_ai の中で、AIへ送る指示文を と呼びます。上のコードでは「3行に要約」と書いていますが、この一行を変えるだけでツールの性格が変わります。「箇条書きで」「小学生にも分かる言葉で」「英語に翻訳してから要約」など、指示文だけ差し替えれば別ツールになります。
指示が文中に埋もれている
指示とデータが1行に混ざり、後から指示だけ直しにくい。
answer = client.responses(prompt="3行に要約: " + text)指示を名前付きで分ける
instruction を変えるだけでツールの性格を変えられ、直す場所が明確。
instruction = "次の文章を日本語で3行に要約してください。"
prompt = instruction + "\n\n" + text
answer = client.responses(prompt=prompt)AIにはこう聞く
「この ask_ai 関数を、○○というAIサービスの公式Pythonライブラリを使って実際に動く形にして。APIキーは環境変数 AI_API_KEY から読み込んで」。サービス名を具体的に伝えると、あなたの環境に合ったコードが返ってきます。返ってきたら、キーをコードに直書きしていないか自分で確認してください。
落とし穴: APIキーをコードに直書き
APIキーをコードに書いたまま他人と共有したりネットに上げたりすると、勝手に使われて料金が発生することがあります。キーは必ず環境変数などに分け、コードには書かない。これはAIに任せる時代でも自分で必ず確認する項目です。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
AIへ送る指示文(プロンプト)を instruction という変数に分けておく主な利点はどれか。
APIキーの扱いとして正しいのはどれか。
この要約ツールを、あなたが作りたい別のツール(例: 議事録を箇条書きにする)に変えるには、どこをどう直しますか。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。