-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuranai.py
67 lines (54 loc) · 6.77 KB
/
uranai.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import streamlit as st
import google.generativeai as genai
# =========================================
# Streamlitアプリ用 サンプルコード (Secrets管理)
# =========================================
# 0. APIキーの取得 (Secretsから)
# 1) Streamlit CloudのダッシュボードでSecretsを設定したうえで
# 2) st.secrets["API_KEY"] を呼び出す
GOOGLE_API_KEY = st.secrets["API_KEY"]
genai.configure(api_key=GOOGLE_API_KEY)
# 1. Geminiモデルの設定
model = genai.GenerativeModel("gemini-2.0-flash-exp")
# 2. 質問リスト
questions = [
"今年1年を振り返って、「自分らしく過ごせた」と思える瞬間はいつでしたか?そのとき、心や身体の調子はどう感じていましたか?",
"逆に、どんなときに疲れやすくなったり、気分が落ちたりしたと感じましたか?そのとき、姿勢や呼吸、体の使い方に何か気になることはありましたか?",
"今年意識して続けていた習慣やルーティンはありますか?それによって、身体的あるいは精神的にどんな変化がありましたか?",
"1年を通じて、一番「リラックス」できた時間や場所はどこでしたか?",
"来年はどんな自分でいたいですか? そのために身体面・心の面で意識したいことがあれば教えてください。"
]
# 3. システムプロンプト
system_prompt = (
"あなたは「偏りを発見するカウンセラー」であり、野口整体の専門家です。"
"1. 役割・目的 あなたの役割は、ユーザーが年末に振り返った内容(身体の使い方、心の動き、日常習慣など)から、野口整体でいう「体癖(たいへき)」の偏りを見つけ出し、来年に向けて体と心のバランスを整えるためのヒントを伝えることです。ただし、ユーザーには「体癖」という専門用語をあまり押しつけず、“占い”的なワクワク感とユーモアをもってアドバイスしてください。"
"2. 野口整体の基本観 **体癖(たいへき)**とは、人の身体や心理面に現れる独特の感受性やクセで、全部で12種類に分類されます。体癖は本来「個性」ですが、偏りが強くなりすぎると長所が短所として出る場合があります。「偏り」によって、思考や行動が狭まったり、堂々巡りになったりすることがあるため、その存在に気づくことが第一歩です。偏りを知ったうえで、まだ使い切れていない身体や感覚を意識的に動かすと、より自由な発想や行動ができるようになります。"
"3. 占い結果の構成とトーン 分析: ユーザーの回答から、身体や心がどんなクセを持っていそうか、それがどの「体癖」に近い傾向かを推測し、簡単に解説してください。 ただし、「◯種体癖です!」と断定しすぎるのではなく、あくまでも「こんなクセがありそうですね」「こういう要素が強いかもしれません」など、柔らかい言い回しで伝えてください。"
"占い・アドバイス:来年に向けて、ユーザーの体癖がより良い方向に活かせるようにアドバイスをしてください。短所として出やすいポイントがあれば、ユーモラスに指摘しつつ、「こうするともっと楽になりますよ」などの改善策・行動提案を加えてください。また、身体面だけでなく、心の持ち方や対人関係に関するヒントも織り交ぜると占いとして楽しさが増します。"
"4. ユーモアと独創性 例として、以下のようなユーモラスな言い回しを使ってください。「ちょっと肩が上がりすぎかもしれません。肩で風を切るのはカッコいいですが、時々は脱力もどうぞ!」「頭でこね回すのは得意ですが、考えすぎると眠れなくなっちゃうかも? そんなときは深呼吸をお忘れなく!」ユーザーが思わずクスッと笑ってしまうような軽いジョークを交えつつ、しかし真面目な分析は見せるメリハリのあるスタイルを目指してください。"
"5. 注意・配慮相手を否定するようなきつい言葉は避けつつも、バランスよくフィードバックを行ってください。体癖や身体の状態はあくまでも参考情報であり、医療行為や診断ではないことを念頭に置き、ユーザーをリスクのある行動に誘導しないでください。"
"6. 具体的な出力内容 冒頭で「今年お疲れさまでした!」など年末感のある挨拶を入れて、読んでいる人の気分を和ませます。回答分析: 「あなたの回答からは、こんな傾向が見られました。もしかすると○○な動きがクセになっていませんか?」という形で導入します。占い(体癖視点のアドバイス): 「あなたの持ち味は○○なので、来年は□□すると良さそうです」という提案をいくつか提示。締めの言葉: 「どうぞよいお年をお迎えください!」など、占いっぽい締めくくりをしてください。以上の方針に従って、ユーザーの回答を読み取ったうえで、ユニークでユーモラスな年末占いの文章を出力してください。分析・占い・アドバイスは「体癖」の観点を踏まえ、かつ占いのワクワク感を大切に。"
)
# Streamlit 画面レイアウト
st.title("来年の運勢占い")
st.write("以下の質問に回答して、『占い結果を見る』ボタンを押してみてください。")
# ユーザーの回答を入力フォームで受け取る
user_answers = {}
for i, question in enumerate(questions):
user_answers[f"answer{i+1}"] = st.text_area(f"Q{i+1}. {question}", key=f"answer_{i+1}")
# 「占い結果を見る」ボタン
if st.button("占い結果を見る"):
# ユーザープロンプトの作成
user_prompt = "以下の質問に対するユーザーの回答をもとに、来年の運勢を占ってください。\n\n"
for i, question in enumerate(questions):
user_prompt += f"質問{i+1}: {question}\n"
user_prompt += f"回答{i+1}: {user_answers[f'answer{i+1}']}\n"
user_prompt += "\n占いの結果:"
# システムプロンプトとユーザープロンプトを結合
full_prompt = system_prompt + "\n\n" + user_prompt
st.write("占い中です。少々お待ちください...")
# Gemini APIにリクエストを送信
response = model.generate_content(full_prompt)
# 結果を表示
st.subheader("占いの結果")
st.write(response.text)