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()