Masa-digital-art commited on
Commit
aa8d99b
0 Parent(s):

Duplicate from Masa-digital-art/support-plan

Browse files
Files changed (6) hide show
  1. .gitattributes +34 -0
  2. README.md +13 -0
  3. app.py +115 -0
  4. constraints.md +7 -0
  5. requirements.txt +2 -0
  6. template.md +16 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: 支援プラン提案アシスタント-β-v1.1
3
+ emoji: 🌖
4
+ colorFrom: yellow
5
+ colorTo: red
6
+ sdk: gradio
7
+ sdk_version: 3.19.1
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: Masa-digital-art/support-plan
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import openai
3
+ import requests
4
+ import os
5
+ import fileinput
6
+ from dotenv import load_dotenv
7
+
8
+ title="支援プラン作成アシスタントβ v1.1"
9
+ inputs_label="支援対象の情報を教えてください"
10
+ outputs_label="AIの支援プラン"
11
+ description="""
12
+ あなたが入力した情報を参照して、AIが支援プランを提案します。
13
+ """
14
+
15
+
16
+ article = """
17
+
18
+ <h5>注意事項</h5>
19
+ <ul>
20
+ <li style="font-size: small;">当サービスでは、2023/3/1にリリースされたOpenAI社のChatGPT APIのgpt-3.5-turboを使用しております。</li>
21
+ <li style="font-size: small;">当サービスで生成されたコンテンツは、OpenAI が提供する人工知能によるものであり、当サービスやOpenAI がその正確性や信頼性を保証するものではありません。</li>
22
+ <li style="font-size: small;"><a href="https://platform.openai.com/docs/usage-policies">OpenAI の利用規約</a>に従い、データ保持しない方針です(ただし諸般の事情によっては変更する可能性はございます)。
23
+ <li style="font-size: small;">当サービスで生成されたコンテンツは事実確認をした上で、コンテンツ生成者およびコンテンツ利用者の責任において利用してください。</li>
24
+ <li style="font-size: small;">当サービスでの使用により発生したいかなる損害についても、当社は一切の責任を負いません。</li>
25
+ <li style="font-size: small;">当サービスはβ版のため、予告なくサービスを終了する場合がございます。</li>
26
+ </ul>
27
+ """
28
+
29
+ load_dotenv()
30
+ openai.api_key = os.getenv('OPENAI_API_KEY')
31
+ MODEL = "gpt-3.5-turbo"
32
+
33
+ def get_filetext(filename, cache={}):
34
+ if filename in cache:
35
+ # キャッシュに保存されている場合は、キャッシュからファイル内容を取得する
36
+ return cache[filename]
37
+ else:
38
+ if not os.path.exists(filename):
39
+ raise ValueError(f"ファイル '{filename}' が見つかりませんでした")
40
+ with open(filename, "r") as f:
41
+ text = f.read()
42
+ # ファイル内容をキャッシュする
43
+ cache[filename] = text
44
+ return text
45
+
46
+ class OpenAI:
47
+
48
+ @classmethod
49
+ def chat_completion(cls, prompt, start_with=""):
50
+ constraints = get_filetext(filename = "constraints.md")
51
+ template = get_filetext(filename = "template.md")
52
+
53
+ # ChatCompletion APIに渡すデータを定義する
54
+ data = {
55
+ "model": "gpt-3.5-turbo",
56
+ "messages": [
57
+ {"role": "system", "content": constraints}
58
+ ,{"role": "system", "content": template}
59
+ ,{"role": "assistant", "content": "Sure!"}
60
+ ,{"role": "user", "content": prompt}
61
+ ,{"role": "assistant", "content": start_with}
62
+ ],
63
+ }
64
+
65
+ # ChatCompletion APIを呼び出す
66
+ response = requests.post(
67
+ "https://api.openai.com/v1/chat/completions",
68
+ headers={
69
+ "Content-Type": "application/json",
70
+ "Authorization": f"Bearer {openai.api_key}"
71
+ },
72
+ json=data
73
+ )
74
+
75
+ # ChatCompletion APIから返された結果を取得する
76
+ result = response.json()
77
+ print(result)
78
+ content = result["choices"][0]["message"]["content"].strip()
79
+ return content
80
+
81
+ class NajiminoAI:
82
+
83
+ @classmethod
84
+ def generate_emo_prompt(cls, user_message):
85
+ template = get_filetext(filename="template.md")
86
+ prompt = f"""
87
+ {user_message}
88
+ ---
89
+ 上記を元に、下記テンプレートを埋めてください。
90
+ ---
91
+ {template}
92
+ """
93
+ return prompt
94
+
95
+ @classmethod
96
+ def generate_emo(cls, user_message):
97
+ prompt = NajiminoAI.generate_emo_prompt(user_message);
98
+ start_with = ""
99
+ result = OpenAI.chat_completion(prompt=prompt, start_with=start_with)
100
+ return result
101
+
102
+ def main():
103
+ iface = gr.Interface(fn=NajiminoAI.generate_emo,
104
+ inputs=gr.Textbox(label=inputs_label),
105
+ outputs=gr.Textbox(label=outputs_label),
106
+ title=title,
107
+ description=description,
108
+ article=article,
109
+ allow_flagging='never'
110
+ )
111
+
112
+ iface.launch()
113
+
114
+ if __name__ == '__main__':
115
+ main()
constraints.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # 制約
2
+
3
+ - あなたは、支援のプランを提案するAIです。
4
+ - ユーザーの入力を参照して、客観的事実と主観的な意見を分類してアセスメントを行い、支援対象者が社会に参画するために必要な支援のプランを提案してください。
5
+ - あなたの返信は下記テンプレートに沿って生成します
6
+
7
+ # テンプレート
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ openai>=0.27.0
2
+ python-dotenv
template.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## アセスメント
2
+ - 予想される発達障害の特性と、精神障害の特性を最大3つずつ書き出す
3
+ - そこから予想される発達障害の診断名を書き出す
4
+
5
+ ## AIアシスタントの提案する長期目標
6
+
7
+ - ここにAIアシスタントの提案する長期目標を書く
8
+ - ユーザーのメッセージの中に、長期目標が含まれるときは、ユーザーの長期目標を尊重する
9
+
10
+ ## AIアシスタントの提案する短期目標
11
+
12
+ - ここにAIアシスタントの提案する短期目標を書く
13
+
14
+ ## AIアシスタントの提案する具体的な手立て
15
+
16
+ - ここにAIアシスタントの提案する短期目標を達成するための具体的な手立てを書く