在上一篇文章中提到要整合 ES 和 LLM 做成 RAG,我們還需要一個給 LLM 一段 prompt 並將 ES 搜尋到的資訊回傳個 LLM 作為 context。
今天首先來完成 prompt 的部分,chatgpt 2022 問世到 2023 的普遍後,應該沒有人不會下 prompt 了,只是得到的回應是不是如預期而已。
但根據 google 的這份教學,prompt 是有些準則的,摘要 prompt best practice 如下
上述沒有提到,但一些大家都蠻常使用的技巧如下
如果你對 prompt engineering 非常有興趣,這裡有一個非常完整的指南,針對不同的 prompt 情境,有非常全面的基礎知識。
基於以上,我設計了以下的簡單 prompt:
『你是我一個電影熱愛者,熟知各類型熱門電影資訊,經常有人來徵詢你不同的建議。但如果沒有推薦的電影,可以說沒有想法或是沒有推薦的。當推薦時你會提供電影名稱和關於這部電影的簡單描述。』
我們先手動挑選幾筆黑道相關電影作為 context 給 LLM 使用:
四海好傢伙:藉由一個在約紐布魯克林區長大的少年亨利,他一心一意想這入黑手黨,可是他一開如也只能從一個跑腳的開始,除非取得保利的信任,不然他不可能再進一個階段,進入所謂的「family」裡頭… 老一輩的黑手黨如保利,謹守道上的行規──榮譽、忠誠、不碰毒品、除非必要不殺人。可是到了七○年代,新崛起的黑道人詹姆士、吉米 和亨利根本不甩這一套,甚至想把保利取而代之。
神鬼無間: 傳奇導演馬丁史柯西斯完美翻拍香港【無間道】系列,集結李奧納多狄卡皮歐、傑克尼克遜、麥特戴蒙等神級卡司,打造勇奪奧斯卡最佳影片、最佳導演等4項大獎的警匪史詩。波士頓黑幫老大法蘭克栽培年輕手下柯林成為警官,在警界進行埋伏滲透;臥底警察比利則被上級指派混入法蘭克的幫派,蒐集犯罪情報。當黑白兩道開始察覺有內奸存在,柯林和比利必須在自己的身分曝光之前,搶先揭發對方的身份。
疤面煞星: 改編自1932年同名之經典名作。 1983年,大批古巴移民來到美國追尋「美國夢」,湯尼(Al Pacino 飾)和好友曼尼(Steven Bauer 飾)也是其中之一,他們為黑道辦事快狠準加上經營毒品生意,很快就在邁阿密打出名聲。但是緊接而來的金錢、慾望糾葛和背叛,很快就讓湯尼的帝國搖搖欲墜...。 艾爾帕西諾在本片的精彩演出賦予了本片新的生命,加上名導演布柿恩迪帕馬(Brian De Palma)、編劇奧利佛史東(Oliver Stone)及製片馬丁柏格曼(Martin Bregman)的努力,使本片呈現出極佳的戲劇張力,揭露了美國黑社會的腐敗與黑暗。艾爾帕西諾結尾火拚的場面,以及臉上兇狠的刀疤,也成為影史經典之一。
def get_prompt(instruction, question, context):
prompt = f"""
Instructions:
{instruction}
Context:
{context}
Question:
{question}
"""
return prompt
def get_rag(prompt):
client = OpenAI(api_key=OPEN_AI_KEY)
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": prompt
}
]
)
return completion.choices[0].message.content
instruction = """
你是我一個電影熱愛者,熟知各類型熱門電影資訊,經常有人來徵詢你不同的建議。
但如果沒有推薦的電影,可以說沒有想法或是沒有推薦的。
當推薦時你會提供電影名稱和關於這部電影的簡單描述。"""
question = "請推薦我黑道主題的電影"
context = """
...同上...不重複佔版面...
"""
得到的回覆:
如果你對黑道主題的電影感興趣,這裡有幾部經典的推薦:
1. **四海好傢伙(Goodfellas)**:
這部電影講述了在布魯克林長大的少年亨利,他夢想成為黑手黨的一員。故事中描繪了黑手黨的奧秘與生活,從低層的跑腿角色開始,亨利逐步接近權力的核心,最終面臨忠誠與背叛的考驗。這部電影的節奏快、情節引人入勝,並且強調了「家庭」的概念和黑手黨的道德規範。
2. **神鬼無間(The Departed)**:
這部影片是馬丁·史柯西斯翻拍的經典故事,圍繞著黑幫和臥底警察的心理戰。年輕的警官柯林偷偷潛入黑幫,而比利則是黑幫內的臥底警官。兩人在身份曝光之前,必須互相追查,保持生存。此片獲得了奧斯卡最佳影片等多項獎項,劇情緊湊,角色鮮明。
3. **疤面煞星(Scarface)**:
當湯尼·蒙達那追尋美國夢,他在毒品及黑道世界中迅速崛起,卻也面對無情的背叛和慾望帶來的毀滅。艾爾·帕西諾的精彩表現使得這部電影成為黑道電影的代表作之一,充滿了張力與戲劇性,並探討了權力和腐敗的主題。
這幾部電影都充分展現黑道生活的複雜性和引人入勝的故事情節,值得一看!
雖然要等一下,結果看起來還不錯;來測試一下如果是別的電影類型呢?改請他推薦愛情喜劇片。
如果你在尋找愛情喜劇片,我有幾部推薦給你:
1. **當哈利遇上莎莉 (When Harry Met Sally...)** - 這部經典的愛情喜劇由羅伯雷納導演,主演是比illy·克里斯托和梅根·瑞恩。故事探討了男女之間是否能夠成為好朋友,沒有情感糾葛,並穿插了許多幽默的對話和感人的時刻。
2. **愛在黎明破曉前 (Before Sunrise)** - 這是一部美麗而感人的愛情片,講述了一對在火車上相遇的年輕人的故事,他們在維也納度過一夜,深入交流彼此的生活、夢想和感受。這部電影讓人思考愛情的短暫與深刻。
3. **瘋狂愚蠢的愛 (Crazy, Stupid, Love)** - 這部愛情喜劇讓史提夫·卡瑞爾、瑞安·高斯林、朱莉安·摩爾等人攜手演出,講述了一位中年男人面對婚姻破裂後,如何重新找回自己的故事,並藉由朋友的幫助,在愛情中摸索。
這三部電影都富有幽默感的同時,也能引發對愛情的深刻思考,希望你會喜歡!
顯然 LLM 主動的搜尋了 context 外的資訊,修改 prompt 加上 請只從提供的資訊中尋找推薦的電影
後,得到的推薦是:
抱歉,我沒有推薦的愛情喜劇片。
看起來這個 prompt 勉強可用,那我們明天就把 ES & LLM 串起來吧~