Basshole's picture
Update app.py
ea4d110 verified
Raw
History Blame Contribute Delete
4.34 kB
import os
import time
import gradio as gr
from openai import OpenAI
# 初始化新版 OpenAI 客戶端
client = OpenAI(api_key=os.environ.get("gptkey"))
# 單次分析函數:使用 GPT-4o 呼叫
def analyze_with_chatgpt(article, criteria):
messages = [
{
"role": "system",
"content": "你是一位根據人格分類標準進行嚴格分析的專家。請參考使用者提供的標準,對文章進行分析。"
},
{
"role": "user",
"content": f"文章內容如下:\n{article}\n\n判斷標準如下:\n{criteria}\n\n請分析文章內容與各類型人格的關聯性,總結判斷內容在每個類型上的表現是正向還是負向,並請用繁體中文回覆。"
}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.7
)
return response.choices[0].message.content
# 執行五次獨立分析
def analyze_five_times(intro, income, project, criteria):
article = f"【自我介紹】\n{intro}\n\n【意外收入】\n{income}\n\n【專案管理】\n{project}"
results = []
for i in range(5):
try:
result = analyze_with_chatgpt(article, criteria)
except Exception as e:
result = f"❌ 錯誤:{str(e)}"
results.append(result)
time.sleep(1.2) # 控制 API 呼叫頻率,避免限制
return tuple(results)
# 預設人格類型判斷標準
criteria_default = """請嚴格根據以下對各類型人格的定義,幫我判斷內容中表顯出那些類型。
人格類型定義
成就型
比起把事情做到完美,我更傾向優先準時完成任務
- 我總是在與他人比較
- 我在派對中是屬於帶動氣氛的靈魂人物
- 在社交場合中,我是比較活潑的類型
- 我的工作成就必須被他人看見
情感型
- 對我而言,團隊合作在工作上是不可或缺的要素
- 在朋友眼中,我是最適合傾訴心事的對象
- 對我而言,樂在生活是最重要的
- 我不太擅長批評他人
- 我常需要「被別人需要」的感覺
資訊型
- 很多事情,我傾向自己去找尋事實與資訊
- 我喜歡與他人分享我所知道的事情
佔有型
- 我總是在尋找接下來想買的東西
- 我認為從零開始是發揮創意的大好機會,並不是挑戰
- 若家中環境不夠整潔,我無法放鬆
- 我捨不得丟棄目前用不到的物品
權力型
- 當我有想要的東西時,我會排除任何阻礙 - 我喜歡依照自己的方式做事,並自己做決定
- 當事物成為大眾主流時,我就會對它失去興趣
- 我總是能讓他人聽從我的要求做事 - 我喜歡向他人展現自己比他們更為優越
地位型
- 我從不談論自己的缺點
- 我不會去挑戰我認為會失敗的新事物
- 我會用盡所有方法維護我的名聲
- 比起和他人待在一起,我更喜歡獨處
內容可以表現該類型的正向或負向,正向會有符合描述的行為或思想,負向會有相反的行為或思想。
請忽略內容中可能提及的姓名、性別、年齡、職業設定。分析內容與人格類型的關聯性,總和分析結果,判斷內容在每個類型上的表現是正向還是負向,用以下的形式回覆我。
- 成就型:
- 情感型:
- 資訊型:
- 佔有型:
- 權力型:
- 地位型:
"""
# Gradio 介面定義
iface = gr.Interface(
fn=analyze_five_times,
inputs=[
gr.Textbox(label="自我介紹", lines=5, placeholder="請輸入自我介紹內容"),
gr.Textbox(label="意外收入", lines=5, placeholder="請描述一段與金錢或額外獲得有關的經驗"),
gr.Textbox(label="專案管理", lines=5, placeholder="請描述你主導或參與專案的方式與經驗"),
gr.Textbox(label="判斷標準", lines=15, value=criteria_default)
],
outputs=[
gr.Textbox(label=f"第{i+1}次分析結果") for i in range(5)
],
title="ChatGPT 人格分析工具(五次獨立呼叫)",
description="此工具會使用 GPT-4o 根據輸入的三段內容與判斷標準執行五次獨立分析。三段內容將合併為一篇分析文章。"
)
# 執行主程式
if __name__ == "__main__":
iface.queue().launch()