iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

昨天我們做了一個最基礎的聊天機器人,雖然能對話,但感覺就是隨便聊聊
今天要來升級:透過 System Prompt讓 AI 扮演不同的角色,變身各種專家

什麼是 System Prompt?

在 OpenAI API 裡,每次對話都會有一個 messages 參數,裡面可以放多個訊息
其中最特別的就是:

{"role": "system", "content": "這裡寫 AI 的角色"}
system:定義 AI 的「身份」或「行為規則」

user:使用者的輸入
assistant:AI 的回覆
System Prompt 的好處是你可以強制 AI「裝成某個角色」來回答問題

Step 1:建立程式

一樣老樣子先建立一個.py檔

import os
from openai import OpenAI
from dotenv import load_dotenv

# 載入 API Key
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 定義角色
system_prompt = "你是一位專業的英文老師,請用簡單的方式解釋英文文法,並舉例。"

while True:
    user_input = input("學生:")

    if user_input.lower() in ["exit", "quit"]:
        print("老師:下課囉!")
        break

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_input}
        ]
    )

    print("老師:", response.choices[0].message.content)

我們來快速拆解一下這份程式碼,看看每一段在做什麼
一開始先載入 API Key 與建立連線,再來就是設定角色,也就是System Prompt
它會告訴 AI:「你現在要扮演英文老師,用簡單方式講解文法。」
之後 AI 的回答就會照這個角色來進行
如果輸入 exit 或 quit,程式就會 break 停止執行
model:選用的模型(這裡用 gpt-4o-mini,速度快、便宜)
messages:對話內容
system : AI 的角色設定
user : 使用者的輸入
API 會依照這些訊息,生成一個回覆

print("老師:", response.choices[0].message.content)

這行就是把 AI 的回覆抓出來並顯示。
response.choices[0]:第一個回答
.message.content:取出真正的文字內容
我們來看看成果:
https://ithelp.ithome.com.tw/upload/images/20250918/201693763THC75bicx.png

如果我們需要換不同角色只要改 system_prompt 就能完成

今天我們學會了用 System Prompt 來控制 AI 的角色,
這樣不只能聊天,還能根據需求「定制化」AI!


上一篇
Day 3:寫出我的第一個對話機器人
下一篇
# Day 5:模型好任性!調整 temperature 與 max_tokens
系列文
AI 三十天,哎呀每天都很難:OpenAI API 生存指南11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言