cowcow02 commited on
Commit
51a6025
1 Parent(s): 883b8f6

Upload folder using huggingface_hub

Browse files
.env ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ OPENAI_API_KEY=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
2
+ PINECONE_API_KEY=e9c7cd38-3bf4-4616-b680-17f14789b1b4
3
+ PINECONE_INDEX=health-center-demo-3
4
+ PASSWORD=elcss
5
+ LOCAL=1
.env.template ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ OPENAI_API_KEY=
2
+ PINECONE_API_KEY=
3
+ PINECONE_INDEX=preface-demo
.github/workflows/update_space.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Run Python script
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v2
18
+ with:
19
+ python-version: '3.9'
20
+
21
+ - name: Install Gradio
22
+ run: python -m pip install gradio
23
+
24
+ - name: Log in to Hugging Face
25
+ run: python -c 'import huggingface_hub; huggingface_hub.login(token="${{ secrets.hf_token }}")'
26
+
27
+ - name: Deploy to Spaces
28
+ run: gradio deploy
.gitignore ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # Rope project settings
136
+ .ropeproject
137
+
138
+ # mkdocs documentation
139
+ /site
140
+
141
+ # mypy
142
+ .mypy_cache/
143
+ .dmypy.json
144
+ dmypy.json
145
+
146
+ # Pyre type checker
147
+ .pyre/
148
+
149
+ # pytype static type analyzer
150
+ .pytype/
151
+
152
+ # Cython debug symbols
153
+ cython_debug/
154
+
155
+ # PyCharm
156
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
159
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160
+ .idea/
161
+ .env
162
+ train-assets/
.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
.idea/gen-ai-demo-health-center-2.iml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
.idea/inspectionProfiles/Project_Default.xml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
5
+ <option name="ignoredPackages">
6
+ <value>
7
+ <list size="1">
8
+ <item index="0" class="java.lang.String" itemvalue="psycopg2" />
9
+ </list>
10
+ </value>
11
+ </option>
12
+ </inspection_tool>
13
+ <inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
14
+ <option name="ignoredErrors">
15
+ <list>
16
+ <option value="E125" />
17
+ </list>
18
+ </option>
19
+ </inspection_tool>
20
+ </profile>
21
+ </component>
.idea/inspectionProfiles/profiles_settings.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
4
+ </project>
.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/gen-ai-demo-health-center-2.iml" filepath="$PROJECT_DIR$/.idea/gen-ai-demo-health-center-2.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
.idea/workspace.xml ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
6
+ <component name="ChangeListManager">
7
+ <list default="true" id="00a1b3b6-b00d-4798-bcdf-1da8684b3173" name="Changes" comment="">
8
+ <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/app.py" beforeDir="false" afterPath="$PROJECT_DIR$/app.py" afterDir="false" />
10
+ </list>
11
+ <option name="SHOW_DIALOG" value="false" />
12
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
13
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
14
+ <option name="LAST_RESOLUTION" value="IGNORE" />
15
+ </component>
16
+ <component name="Git.Settings">
17
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
18
+ </component>
19
+ <component name="MarkdownSettingsMigration">
20
+ <option name="stateVersion" value="1" />
21
+ </component>
22
+ <component name="ProjectId" id="2W3Rmbs9gRTrrCO4lzfc0kUb26T" />
23
+ <component name="ProjectViewState">
24
+ <option name="hideEmptyMiddlePackages" value="true" />
25
+ <option name="showLibraryContents" value="true" />
26
+ </component>
27
+ <component name="PropertiesComponent"><![CDATA[{
28
+ "keyToString": {
29
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
30
+ "RunOnceActivity.ShowReadmeOnStart": "true",
31
+ "WebServerToolWindowFactoryState": "false",
32
+ "database.data.extractors.current.export.id": "Comma-separated (CSV)_id",
33
+ "database.data.extractors.current.id": "Comma-separated (CSV)_id",
34
+ "last_opened_file_path": "/Users/cowcow02/Repo/inspect-element/gen-ai-demo-health-center-2",
35
+ "node.js.detected.package.eslint": "true",
36
+ "node.js.detected.package.tslint": "true",
37
+ "node.js.selected.package.eslint": "(autodetect)",
38
+ "node.js.selected.package.tslint": "(autodetect)",
39
+ "vue.rearranger.settings.migration": "true"
40
+ }
41
+ }]]></component>
42
+ <component name="RecentsManager">
43
+ <key name="CopyFile.RECENT_KEYS">
44
+ <recent name="$PROJECT_DIR$" />
45
+ </key>
46
+ <key name="MoveFile.RECENT_KEYS">
47
+ <recent name="$PROJECT_DIR$/train-assets" />
48
+ </key>
49
+ </component>
50
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
51
+ <component name="TaskManager">
52
+ <task active="true" id="Default" summary="Default task">
53
+ <changelist id="00a1b3b6-b00d-4798-bcdf-1da8684b3173" name="Changes" comment="" />
54
+ <created>1695959437022</created>
55
+ <option name="number" value="Default" />
56
+ <option name="presentableId" value="Default" />
57
+ <updated>1695959437022</updated>
58
+ <workItem from="1695959438178" duration="42971000" />
59
+ </task>
60
+ <servers />
61
+ </component>
62
+ <component name="TypeScriptGeneratedFilesManager">
63
+ <option name="version" value="3" />
64
+ </component>
65
+ </project>
Dockerfile ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.8
2
+
3
+ WORKDIR /app/
4
+
5
+ COPY requirements.txt .
6
+ RUN pip install --no-cache-dir -r requirements.txt
7
+
8
+ COPY . .
LICENSE ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2023, Inspect Element
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
README.md CHANGED
@@ -1,12 +1,8 @@
1
  ---
2
- title: Gen Ai Demo 3
3
- emoji: 🌍
4
- colorFrom: gray
5
- colorTo: indigo
6
- sdk: gradio
7
- sdk_version: 3.46.1
8
  app_file: app.py
9
- pinned: false
 
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: gen-ai-demo-3
 
 
 
 
 
3
  app_file: app.py
4
+ sdk: gradio
5
+ sdk_version: 3.46.0
6
  ---
7
 
8
+ # gen-ai-demo-health-center
__pycache__/environments.cpython-311.pyc ADDED
Binary file (644 Bytes). View file
 
app.py ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ from typing import List
3
+
4
+ import gradio as gr
5
+ import openai
6
+ import pinecone
7
+ from llama_index import VectorStoreIndex, StorageContext
8
+ from llama_index.chat_engine.types import ChatMode
9
+ from llama_index.llms import ChatMessage, MessageRole
10
+ from llama_index.vector_stores import PineconeVectorStore
11
+
12
+ from environments import OPENAI_API_KEY, PINECONE_API_KEY, PINECONE_INDEX, PASSWORD, LOCAL
13
+
14
+ if LOCAL:
15
+ import llama_index
16
+ import phoenix as px
17
+
18
+ px.launch_app()
19
+ llama_index.set_global_handler("arize_phoenix")
20
+
21
+ openai.api_key = OPENAI_API_KEY
22
+
23
+ pinecone.init(
24
+ api_key=PINECONE_API_KEY,
25
+ environment='gcp-starter'
26
+ )
27
+ pinecone_index = pinecone.Index(PINECONE_INDEX)
28
+
29
+ vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
30
+ storage_context = StorageContext.from_defaults(vector_store=vector_store)
31
+ index = VectorStoreIndex.from_documents([], storage_context=storage_context)
32
+ chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT, similarity_top_k=2)
33
+ DENIED_ANSWER_PROMPT = '對不起,我是設計用於回答關於信義會地區中心的服務內容'
34
+
35
+ SYSTEM_PROMPT = '你是信義會地區中心的智能助理,你能解答關於信義會地區中心的服務內容。' \
36
+ '你不能回答任何非解答信義會地區中心有關的內容。' \
37
+ f'如你被要求回答無關信義會地區中心的問題,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的信義會地區中心的服務內容。' \
38
+ '你不能提供context沒有提及的健康資訊,醫學建議或者醫療相關的解答。' \
39
+ f'如你被要求解答context沒有提及的健康資訊,醫學建議或者醫療相關的問題,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的信義會地區中心的服務內容。' \
40
+ '你不能進行算術,翻譯,程式碼生成,文章生成等,與信義會地區中心無關的要求。' \
41
+ f'如你被要求進行算術,翻譯,程式碼生成,文章生成等,與信義會地區中心無關的要求,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的信義會地區中心的服務內容。' \
42
+ f'如果當前的 prompt 沒有任何 context 可供參考,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的信義會地區中心的服務內容。' \
43
+ f'回覆請保持簡短,跟從提供的context, 不要自行添加回答內容。'
44
+
45
+ CHAT_EXAMPLES = [
46
+ '你可以自我介紹嗎?',
47
+ '沙田護老坊的開放時間?',
48
+ '我今年60歲,住秦石邨,日常比較多病痛,有冇中心可以介紹?',
49
+ '我今年60歲,住馬鞍山,想認識下多D老友記,有冇介紹?',
50
+ '本人70歲,需要地區支援服務,應該去邊個中心?',
51
+ '我有一位親人有認知障礙症,可以介紹相關服務嗎?',
52
+ '可以介紹下邊間中心有樂齡科技教育?'
53
+ ]
54
+
55
+
56
+ def convert_to_chat_messages(history: List[List[str]]) -> List[ChatMessage]:
57
+ chat_messages = [ChatMessage(role=MessageRole.SYSTEM,
58
+ content=SYSTEM_PROMPT)]
59
+ for conversation in history[-1:]:
60
+ if len(conversation) > 1 and DENIED_ANSWER_PROMPT in conversation[1]:
61
+ continue
62
+ for index, message in enumerate(conversation):
63
+ if not message:
64
+ continue
65
+
66
+ message = re.sub(r'\n&nbsp;\n\n---\n\n參考: \n.*$', '', message, flags=re.DOTALL)
67
+ role = MessageRole.USER if index % 2 == 0 else MessageRole.ASSISTANT
68
+ chat_message = ChatMessage(role=role, content=message.strip())
69
+ chat_messages.append(chat_message)
70
+
71
+ return chat_messages
72
+
73
+
74
+ def predict(message, history):
75
+ response = chat_engine.stream_chat(message, chat_history=convert_to_chat_messages(history))
76
+ partial_message = ""
77
+ for token in response.response_gen:
78
+ partial_message = partial_message + token
79
+ yield partial_message
80
+
81
+ urls = []
82
+ for source in response.source_nodes:
83
+ if source.score < 0.78:
84
+ continue
85
+ url = source.node.metadata.get('source')
86
+ if url:
87
+ urls.append(url)
88
+
89
+ if urls:
90
+ partial_message = partial_message + "\n&nbsp;\n\n---\n\n參考: \n"
91
+ for url in list(set(urls)):
92
+ partial_message = partial_message + f"- {url}\n"
93
+ yield partial_message
94
+
95
+
96
+ def predict_with_rag(message, history):
97
+ return predict(message, history)
98
+
99
+
100
+ # For 'With Prompt Wrapper' - Add system prompt, no Pinecone
101
+ def predict_with_prompt_wrapper(message, history):
102
+ yield from _invoke_chatgpt(history, message, is_include_system_prompt=True)
103
+
104
+
105
+ # For 'Vanilla ChatGPT' - No system prompt
106
+ def predict_vanilla_chatgpt(message, history):
107
+ yield from _invoke_chatgpt(history, message)
108
+
109
+
110
+ def _invoke_chatgpt(history, message, is_include_system_prompt=False):
111
+ history_openai_format = []
112
+ if is_include_system_prompt:
113
+ history_openai_format.append({"role": "system", "content": SYSTEM_PROMPT})
114
+ for human, assistant in history:
115
+ history_openai_format.append({"role": "user", "content": human})
116
+ history_openai_format.append({"role": "assistant", "content": assistant})
117
+ history_openai_format.append({"role": "user", "content": message})
118
+
119
+ response = openai.ChatCompletion.create(
120
+ model='gpt-3.5-turbo',
121
+ messages=history_openai_format,
122
+ temperature=1.0,
123
+ stream=True
124
+ )
125
+ partial_message = ""
126
+ for chunk in response:
127
+ if len(chunk['choices'][0]['delta']) != 0:
128
+ partial_message = partial_message + chunk['choices'][0]['delta']['content']
129
+ yield partial_message
130
+
131
+
132
+ def vote(data: gr.LikeData):
133
+ if data.liked:
134
+ gr.Info("You up-voted this response: " + data.value)
135
+ else:
136
+ gr.Info("You down-voted this response: " + data.value)
137
+
138
+
139
+ chatbot = gr.Chatbot()
140
+
141
+ with gr.Blocks() as demo:
142
+ gr.Markdown("# 地區服務中心智能助理")
143
+
144
+ gr.ChatInterface(predict,
145
+ chatbot=chatbot,
146
+ examples=CHAT_EXAMPLES,
147
+ )
148
+ chatbot.like(vote, None, None)
149
+
150
+ demo.queue()
151
+
152
+ if LOCAL:
153
+ demo.launch(share=False)
154
+ else:
155
+ demo.launch(share=False, auth=("demo", PASSWORD))
docker-compose.yml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3"
2
+
3
+ services:
4
+ backend:
5
+ build: .
6
+ container_name: server
7
+ command: gradio app.py
8
+ ports:
9
+ - "7860:7860"
10
+ - "7861:7861"
11
+ volumes:
12
+ - ./:/app/
environments.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
8
+ PINECONE_API_KEY = os.getenv('PINECONE_API_KEY')
9
+ PINECONE_INDEX = os.getenv('PINECONE_INDEX')
10
+ PASSWORD = os.getenv('PASSWORD')
11
+ LOCAL = os.getenv('LOCAL')
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ arize-phoenix[experimental]==0.0.43
2
+ gradio==3.46.0
3
+ openai==0.27.9
4
+ pinecone-client==2.2.2
5
+ python-dotenv==1.0.0
6
+ llama_index==0.8.38
7
+ llama_hub==0.0.34
8
+ nltk==3.8.1
9
+ transformers==4.32.0
train-assets/training-target-old.csv ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Unit Name,Address,Phone,Email,Website,Opening Hours,Service Area,Service Goals,Service Targets,Service Overview,Application
2
+ 馬鞍山長者地區中心,新界沙田馬鞍山錦泰商場一樓,3124-7633,mosdecc@elchk.org.hk,http://mosdecc.elchk.org.hk/,星期一至四、星期六:8:00am - 6:00pm; 星期五:8:00am - 10:00pm; 星期日及公眾假期休息,馬鞍山,透過地區層面的社區支援服務,協助長者留在社區安老,並過著健康、受尊重及有尊嚴的生活,與及發揚他們積極參與的角色,中心同時亦推動沙田區內的居民及不同團體共同建立關懷的社區。,年滿 60 歲或以上的長者; 準退休人士 (50-59 歲); 護老者; 社區人士,"教育及個人發展
活動舉辦各項教育活動,讓長者與時並進,學習更多新知識,達至豐盛晚年、「老有所為」的終身學習目標。
3
+ 義工發展
透過工發展、動員及訓練長者工,結集社區力量,讓他們體驗「中心是我家,義務工作齊參加」,藉此提倡老有所為。
4
+ 發佈社區資訊及轉介服務
提供社區資源訊息予長者,透過出版《耆樂坊》,讓護老者及社區人士,增加對社會福利政策的了解,讓他們更懂得善用資源,享受社區設施。
轉介有需要的長者到其他福利服務單位或醫療及政府部門,以協助長者申請服務。
5
+ 輔導服務
中心透過日常諮詢系統作出識別,為有需要的長者提供個人輔導服務和治療小組活動,解決他/她們在人際關係、情緒、經濟、住屋及其他生活上遇到的問題,使其能安享晚年。
6
+ 長者支援服務
為極需要照顧的長者提供社區網絡和久展服務,以及推廣長者義工精神。
7
+ 護老者支援服務
為護老者提供參考資料號復康器材借用、情緒支援,使護老者得著資源及技巧,安心照顧家中體弱長者。
8
+ 社區教育
中心職員定期到區內屋邨設置外展站,以服務居住遠離中心的長者。另有為社區人士提供教育活動,建立長者在社區人士中的正面形象。
9
+ 隱閉長者服務
中心會主動識別及接觸弱勢長者,尤其是隱閉及沒有社區支援的長者,以提供必要的服務。
10
+ 社交及康樂活動
定期為會員及非會員提供多元化活動,鼓勵他們多參與社區活動,以延續其活躍性。
11
+ 飯堂膳食、洗衣及浴室服務
為區內長者提供廉價而營養均衡的膳食,並洗衣、乾衣及簡單縫補服務,中心又設有冷熱水浴室,供區內長者使用。
12
+ 偶到服務
提供一個舒適休憩的地方,並經常舉辦各類有益身心的活動,以鼓勵長者善用餘暇,保持長者在晚年的活躍度和對社會事務的接觸度。
13
+ 長者團契
為區內長者提供信仰及靈性栽培,讓長者得著靈性上的支援。","會員費:60歲或以上每年30元 (包括21元會員費及9元行政費)。其他服務和個別活動收費則按當時成本而定。
14
+ 入會手續:於辨公時間內帶同身份證、近照兩張及會費,親臨本中心辦理。 "
15
+ 沙田多元化金齡服務中心(SDCC),"沙田瀝源邨貴和樓123,125 - 140號地下",2691 7163,sdcc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=38,星期一至五:8:00am - 6:00pm; 星期六:8:00am - 5:30pm; 星期日及公眾假期休息,沙田區,致力推動老有所為、老有所屬、康健頤年的目標,鼓勵長者積極參與終身學習、社交及義務工作,發揮長者潛能,建立健康、積極、正面的生活模式。,年滿60歲或以上在沙田區居住的長者; 準退休人士 (50-59歲); 護老者; 社區人士,"中心服務
16
+ 健康教育
17
+ 提供身體驗查、防跌訓練治療、記憶力訓練、腦退化症檢測、精神科外展診所、痛症管理等等
18
+ 教育、發展、社區教育
19
+ 男兒天地、生死教育、生命回顧、預防虐老、精神健康、各種興趣小組等等
20
+ 義工發展
21
+ 生命天使、樂齡女童軍、善茶樂茶使者、生態大使、愛心暖流組、友腦會、有為 
、誠信組、剪髮組、探訪組、攝影義工、企業義工等等
22
+ 個案輔導、轉介、申請長者護理服務
23
+ 護老者支援
24
+ 支援長照顧長者的家人及傭人,提供護老者支援小組、護老者訓練、復康用品借用 
及代購服務、減壓活動、諮詢、出版『支訊』等等。
25
+ 社交及康樂活動
26
+ 旅行、參觀、生態山藝、導賞、歷奇活動、球類活動、棋藝活動、藝術活動、契、節日慶祝活動等等
27
+ 飯堂膳食及洗衣服務
28
+ 為金咭會員提供有營養及高質素的早午晚餐及下午茶,會員自費享用。此外,也為有需要人士提供洗衣服務。
29
+ 偶到服務
30
+ 提供報紙雜誌、電視、電腦上網、IPad、按摩椅及健身器材供會員借用外展及網絡服務
31
+ 長者支援服務隊
32
+ 長者支援服務是為社區上欠缺支援的獨居長者提供社區網絡和外展服務,並組織義工協助關心他們。服務內容包括:定期接���、情緒支援、義工關懷、轉介社區資源、簡單個人協助,如購物及陪診等、轉介服務、社交康樂活動。服務對象為60歲或以上人士,有以下其中一項或多項情況,包括獨居、缺乏社區支援、健康欠佳、有經濟困難、居住環境惡劣、未能善用社會資源等。
33
+ 長者外展服務
34
+ 長者外展服務是為發掘區內隱蔽及弱勢的長者,並提供適切的照顧及支援。服務對象為60歲或以上人士、被動/退縮、不懂運用社會資源,並且有以下其中一項或多項情況,包括缺乏社區支援,與家人關係欠佳,居住環境惡劣,有經濟困難,健康欠佳,提供以下服務:
1.外展服務─以街展、洗樓等外展方法主動接觸受助人
2.轉導服務─透過個案手法,了解受助人需要,從而提供協助
3.轉介服務─根據受助人的需要,轉介適切的服務
4.聯繫地區團體發掘隱蔽及弱勢長者
35
+ 綜合家居照顧服務 (普通個案)
36
+ 綜合家居照顧服務是一項為體弱長者、殘疾人士及有需要的家庭提供家居照顧及支援,讓他們可以在熟悉的環境滿足他們在照顧上的需要,達至社區照顧的目標。綜合家居照顧服務(普通個案)的服務包括:個人照顧、簡單護理、家居清潔、家居安全評估、護送、購物、膳食洗衣、照顧幼兒等等。","會員費:
37
+ 金咭會員: 60歲或以上,每年30元 (包括21元會員費及9元行政費)
38
+ 銀咭會員:50-59歲,無需年費 (只可享用銀咭會員活動及福利)
39
+ 入會手續: 帶同身份證及近照一張文件,到本中心辦理手續"
40
+ 頌安長者鄰舍中心,馬鞍山頌安邨頌智樓地下,2144 3199,conec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=40,星期一至四及六:8:00am - 6:00pm; 星期五:8:00am - 9:00pm; 星期日及公眾假期休息,馬鞍山頌安邨、錦豐苑,協助長者留在區內安老,並過著健康、受尊重及有尊嚴的生活,鼓勵他們積極參與,此外,亦推動區內的居民,共同建立關懷的社區。,在區內居住年滿60歲或以上的長者,護老者及社區人士,"健康教育和推廣健康生活模式
41
+ 協助長者建立積極的生活態度,以助長者預防疾病,改善家庭及人際關係。
42
+ 教育及個人發展活動
43
+ 提供多元化教育,讓長者與時並進,學習更多新知識,達至豐盛晚年,老有所為終身學習的目標。
44
+ 義工運動及由長者會員參與中心運作
45
+ 鼓勵長者參與義務工作,使長者晚年生活更有意義,達至老有所為。讓長者體驗退而不休,繼續將其人生經驗、知識及技能貢獻社區,增加他們對社區的歸屬感。
46
+ 發佈社區資訊及轉介服務
47
+ 提供社區資源訊息,並作出恰當轉介,增加長者對社會福利政策的了解,更懂得善用資源,享受社區設施。
48
+ 社交及康樂活動
49
+ 提供不同的社交康樂活動,鼓勵長者多參與社區活動,以延續其活躍性。

50
+ 外展及社區網絡工作
51
+ 透過外展手法,主動關顧社區中支援體系較弱的長者,以減低其孤獨無助感,協助他們再次投入社區,並積極面對晚年。
52
+ 輔導服務
53
+ 提供個人及小組輔導,協助長者解決個人情緒、人際關係、住屋、經濟及其他生活上遇到的問題,使其安享晚年。
54
+ 護老者支援服務
55
+ 為護老者提供參考資料、復康器材、情緒支援,使護老者獲得資源及技巧,安心照顧家中體弱長者。
56
+ 飯堂膳食服務
57
+ 提供廉價而營養均衡的膳食,並藉此增進使用者彼此間的友誼。
58
+ 偶到服務
59
+ 鼓勵長者善用餘暇,多參與中心的活動,保持活躍度和對社會事務的接觸度。","會員費:
60
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
61
+ 銀咭會員:護老者及金年華會員免費
62
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
63
+ 善學慈善基金關宣卿愉翠長者鄰舍中心,沙田愉翠苑服務設施大樓地下,2630 7070,ycnec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,"主址:沙田愉翠苑服務設施大樓地下
開放時間:
64
+ 星期一至六:8:00am - 6:00pm
星期五晚:6:00pm - 9:00pm(星期日及公眾假期休息)

65
+ 分址:沙田第一城42座地下(得寶街1號)
66
+ 電話:3692 5078
67
+ 傳真:3692 5071
68
+ 開放時間:星期一至五:9:00am – 5:00pm",沙田區,協助長者留在區內安老,過著健康、受尊重及有尊嚴的生活,發揚他們積極參與的角色,並推動沙田區居民共建關懷社區。,"滿60歲或以上長者, 準長者(50-59歲), 護老者, 社區人士",提供一系列的全面服務,以滿足健康或身體缺損的長者,在身心社交及個人照顧上的需要。,"會員費:
69
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
70
+ 銀咭會員:50歲至59歲,無須年費 (只可享用銀咭會員活動及福利)
71
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
72
+ 恩耀坊,馬鞍山恒安邨恒海樓1-8號地下,3523 1858,mosrh@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,星期一至星期六:8:00am - 6:00pm (星期日及公眾假期休息 ),沙田區,信義會恩耀坊服務包括長者日間護理服務、物理治療服務、長者支援服務、隱蔽長者服務及恒耀老友記等。體弱長者可使用日間護理服務,痛症長者或社區人士可使用物理治療服務,體健長者可參與恒耀老友記,而獨居或兩老長者可參與長者支援服務或隱蔽長者服務。,年滿60歲或以上的長者 準退休人士(50-59歲) 護老者 社區人士,恩耀坊為長者提供一系列的全面服務,以滿足健康或體弱長者的需要,詳情請向中心查詢
73
+ 沙田護老坊,沙田秦石邨石玉樓3樓341-360號,2698 4881,scc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=36#contact ,"開放時間:星期一至六:9:00am - 1:00pm
74
+ 辦公時間:星期一至六:9:00am - 5:00pm",沙田區,"透過多元化服務,幫助長者們解決生活上所遇到的實際困難 ,令長者們居於自己熟悉的社區,安享晚年,避免不必要的入院或隔離。
75
+ 透過多元化服務,幫助護老者於照顧長者時更具知識及技巧,並透過提供日託服務,令長者得到更全面的專業護理服務,護老者同時有一休息及裝備的機會。
76
+ 提供各項社交及教育性活動,鼓勵長者善用餘暇,參與社會,發展潛能,享受豐盛晚年。
77
+ 本著「敬老、愛老、護老」精神,鼓勵社區人士合力建設一個關懷長者的社區。","綜合家居照顧服務:沙田區內有需要之體弱、傷殘或因變故而需要協助之人士或家庭。
78
+ 日間護理服務:沙田區內有需要的人士。
79
+ 家居樂悠悠:沙田區內有需要之長者或家庭。
80
+ 秦豐老友記會:居於秦石邨及豐盛苑六十歲或以上長者。
81
+ 義工發展:16歲或以上在學、在職或家庭主婦。
82
+ 護老者支援服務:需照顧年老體弱的護老人士。
83
+ 復康器材 - 資源服務 :需照顧年老體弱的護老人士。
84
+ 長者飯堂服務:秦石邨及豐盛苑長者。
85
+
86
+ 沙田改善家居及社區照顧服務:
87
+ 65歲或以上人士(年齡介乎60至64歲的長者,如証實有需要,亦可使用此服務)經
88
+ 社會福利署「安老服務統一評估機制」評核為身體機能中度缺損或嚴重缺損的體弱
 長者。
89
+ 新界東改善家居及社區照顧服務:
90
+   65歲或以上人士(年齡介乎60至64歲的長者,如証實有需要,亦可使用此服務)經   
 社會福利署「安老服務統一評估機制」評核為身體機能中度缺損或嚴重缺損的體弱
 長者。
91
+ 離院長者綜合支援計劃:
92
+ 服務對象為居於沙田及馬鞍山區,並需由沙田離院計劃隊評估為有復康、個人護理 
 及家居支援等需要之出院長者。","綜合家居照顧服務
93
+ 提供個人護理、照顧兒童/成人、復康運動、家居清潔、購物/取藥、送飯/煮食
、護送/陪診服務、洗衣及乾衣服務。
94
+ 日間護理服務
95
+ 提供膳食照顧、個人衛生照顧、社交/心理照顧及專業護理照顧。
96
+ 家居樂悠悠
97
+ 提供家務料理、上門洗熨、陪伴/看顧服務、協助簡單復康運動、購物/遞送、護送/陪診服務、備餐服務及簡單個人護理。
98
+ 秦豐老友記會
99
+ 定期舉辦講座、活動、個人輔導、諮詢及轉介服務等。
100
+ 義工發展
101
+ 護老者支援服務
102
+ 提供電話熱線、輔導服務、轉介服務、護老常識及技巧訓練、護老通訊、互助及充權小組。
103
+ 復康器材 - 資源服務
104
+ 復康產品介紹、資源閣服務
105
+ (租借視聽影音及護理教材、閱覽室服務及復康器材租用)。
106
+ 長者飯堂服務
107
+ 提供午餐(中午十二時正)
108
+ 沙田改善家居及社區照顧服務
109
+ 提供護理計劃、基本及特別護理、個人照顧、復康練習、日間照顧服務、護老者支援服務、暫託服務、輔導服務、24小時緊急支援、家居環境安全評估及改善建議、家居照顧及膳食服務、交通及護送服務。(本會服務會因應長者的不同需要而訂定服務次數及性質)
110
+ 東新界改善家居及社區照顧服務提供護理計劃、基本及特別護理、個人照顧、復康練習、日間照顧服務、護老者支援服務、暫託服務、輔導服務、24小時緊急支援、家居環境安全評估及改善建議、家居照顧及膳食服務、交通及護送服務。(本會服務會因應長者的不同需要而訂定服務次數及性質)
111
+
112
+ 離院長者綜合支援計劃
113
+ 提供個人照顧、短暫家居照顧、復康運動 / 訓練、家居改裝、家居清潔、洗衣服務、送飯服務、接送 / 陪診、購物 / 代辦服務、簡單護理、輔導服務、轉介其他支援服務、護老者支援及培訓、暫住 / 暫托服務及24小時緊急支援服務。",詳情請向中心查詢 
114
+ 延智會所,沙田秦石邨石玉樓3樓341-360號,2698 4881,smartclub@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=77#intro ,"星期一至星期五9:00 – 17:00
115
+ 星期六9:00 – 12:30
116
+ 星期日及公眾假期休息
117
+ ",沙田區,,"提倡及早驗測、及早介入、及早支援的重要;
118
+ 以「共同照顧」理念協助認知障礙症人士及其家人適應病患帶來的轉變,在照顧路途中與家屬緊密同行;
119
+ 在社區及家居環境中,推廣心理社會照顧模式",專為輕度及早期認知障礙症人士而設的一站式支援服務及訓練中心。本會所主要以心理社會模式運作,提供無挫敗及多元化的認知訓練活動、生活訓練、減壓活動等,旨在減慢認知功能衰退、維持日常生活操作及透過各項支援服務紆緩家屬的身心壓力,如認知訓練服務,日間護理服務、長者社區照顧服務券等。,詳情請向中心查詢 
120
+ 賽馬會「a家」樂齡科技教育及租賃服務,新界沙田小瀝源牛皮沙街2號愉翠商場M樓2號舖,3153 5255,rental@ageathome.hk,https://ageathome.hk,"星期一至五: 上午10:00 -下午5:00 (下午1:00 - 2:00除外)
121
+ 星期六:上午 10:00-下午1:00
122
+ ",全港,旨在加強市民對樂齡科技的認識和應用,進而提升長者及照顧者「居家安老」的信心和能力,讓長者能夠留在熟悉的環境中安享晚年。促進發展嶄新的服務、市場及資助模式。,"教育服務 ─ 全港市民
123
+ 租賃服務 ─ 全港60歲或以上長者","教育服務
透過體驗式教育讓長者、照顧者、業界同工及其他市民獲得樂齡科技的最新資訊,並親身體驗樂齡科技器材。
124
+
125
+ 導賞團
126
+ 互動工作坊
127
+ 諮詢服務等
128
+
129
+ 租賃服務
由跨專業團隊為長者家庭提供一個彈性較大及一站式的居家安老選擇
130
+ 家居環境、長者活動能力等各方面的專業評估
131
+ 器材建議及租賃
132
+ 操作指導
133
+ 持續個案跟進
134
+ 清潔及保養維修服務
135
+
136
+ 清潔及保養維修服務
於火炭設立了樂齡科技器材清潔及保養服務中心,提供專業及高質素的服務。每件器材均遵照指定的清潔及保養程序,務求令下一位租賃者獲得最良好的使用體驗
137
+ 清潔及保養「a家」租賃服務的器材
138
+ 為社福機構和其他團體提供「輔助器材清潔消毒服務」
139
+ 為市民提供「個人輔助器材清潔服務」","對服務有興趣人士可直接致電到服務中心查詢及申請
140
+ "
train-assets/training-target-simple.csv ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 單位名稱,單位地址,電話,電郵,單位網頁,開放時間,服務區域,服務目標,服務對象,會員申請
2
+ 馬鞍山長者地區中心,新界沙田馬鞍山錦泰商場一樓,3124-7633,mosdecc@elchk.org.hk,http://mosdecc.elchk.org.hk/,星期一至四、星期六:8:00am - 6:00pm; 星期五:8:00am - 10:00pm; 星期日及公眾假期休息,馬鞍山,透過地區層面的社區支援服務,協助長者留在社區安老,並過著健康、受尊重及有尊嚴的生活,與及發揚他們積極參與的角色,中心同時亦推動沙田區內的居民及不同團體共同建立關懷的社區。,年滿 60 歲或以上的長者; 準退休人士 (50-59 歲); 護老者; 社區人士,"會員費:60歲或以上每年30元 (包括21元會員費及9元行政費)。其他服務和個別活動收費則按當時成本而定。
3
+ 入會手續:於辨公時間內帶同身份證、近照兩張及會費,親臨本中心辦理。 "
4
+ 沙田多元化金齡服務中心(SDCC),"沙田瀝源邨貴和樓123,125 - 140號地下",2691 7163,sdcc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=38,星期一至五:8:00am - 6:00pm; 星期六:8:00am - 5:30pm; 星期日及公眾假期休息,沙田區,致力推動老有所為、老有所屬、康健頤年的目標,鼓勵長者積極參與終身學習、社交及義務工作,發揮長者潛能,建立健康、積極、正面的生活模式。,年滿60歲或以上在沙田區居住的長者; 準退休人士 (50-59歲); 護老者; 社區人士,"會員費:
5
+ 金咭會員: 60歲或以上,每年30元 (包括21元會員費及9元行政費)
6
+ 銀咭會員:50-59歲,無需年費 (只可享用銀咭會員活動及福利)
7
+ 入會手續: 帶同身份證及近照一張文件,到本中心辦理手續"
8
+ 頌安長者鄰舍中心,馬鞍山頌安邨頌智樓地下,2144 3199,conec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=40,星期一至四及六:8:00am - 6:00pm; 星期五:8:00am - 9:00pm; 星期日及公眾假期休息,馬鞍山頌安邨、錦豐苑,協助長者留在區內安老,並過著健康、受尊重及有尊嚴的生活,鼓勵他們積極參與,此外,亦推動區內的居民,共同建立關懷的社區。,在區內居住年滿60歲或以上的長者,護老者及社區人士,"會員費:
9
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
10
+ 銀咭會員:護老者及金年華會員免費
11
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
12
+ 善學慈善基金關宣卿愉翠長者鄰舍中心,沙田愉翠苑服務設施大樓地下,2630 7070,ycnec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,"主址:沙田愉翠苑服務設施大樓地下
開放時間:
13
+ 星期一至六:8:00am - 6:00pm
星期五晚:6:00pm - 9:00pm(星期日及公眾假期休息)

14
+ 分址:沙田第一城42座地下(得寶街1號)
15
+ 電話:3692 5078
16
+ 傳真:3692 5071
17
+ 開放時間:星期一至五:9:00am – 5:00pm",沙田區,協助長者留在區內安老,過著健康、受尊重及有尊嚴的生活,發揚他們積極參與的角色,並推動沙田區居民共建關懷社區。,"滿60歲或以上長者, 準長者(50-59歲), 護老者, 社區人士","會員費:
18
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
19
+ 銀咭會員:50歲至59歲,無須年費 (只可享用銀咭會員活動及福利)
20
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
21
+ 恩耀坊,馬鞍山恒安邨恒海樓1-8號地下,3523 1858,mosrh@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,星期一至星期六:8:00am - 6:00pm (星期日及公眾假期休息 ),沙田區,信義會恩耀坊服務包括長者日間護理服務、物理治療服務、長者支援服務、隱蔽長者服務及恒耀老友記等。體弱長者可使用日間護理服務,痛症長者或社區人士可使用物理治療服務,體健長者可參與恒耀老友記,而獨居或兩老長者可參與長者支援服務或隱蔽長者服務。,年滿60歲或以上的長者 準退休人士(50-59歲) 護老者 社區人士,詳情請向中心查詢
22
+ 沙田護老坊,沙田秦石邨石玉樓3樓341-360號,2698 4881,scc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=36#contact ,"開放時間:星期一至六:9:00am - 1:00pm
23
+ 辦公時間:星期一至六:9:00am - 5:00pm",沙田區,"透過多元化服務,幫助長者們解決生活上所遇到的實際困難 ,令長者們居於自己熟悉的社區,安享晚年,避免不必要的入院或隔離。
24
+ 透過多元化服務,幫助護老者於照顧長者時更具知識及技巧,並透過提供日託服務,令長者得到更全面的專業護理服務,護老者同時有一休息及裝備的機會。
25
+ 提供各項社交及教育性活動,鼓勵長者善用餘暇,參與社會,發展潛能,享受豐盛晚年。
26
+ 本著「敬老、愛老、護老」���神,鼓勵社區人士合力建設一個關懷長者的社區。","綜合家居照顧服務:沙田區內有需要之體弱、傷殘或因變故而需要協助之人士或家庭。
27
+ 日間護理服務:沙田區內有需要的人士。
28
+ 家居樂悠悠:沙田區內有需要之長者或家庭。
29
+ 秦豐老友記會:居於秦石邨及豐盛苑六十歲或以上長者。
30
+ 義工發展:16歲或以上在學、在職或家庭主婦。
31
+ 護老者支援服務:需照顧年老體弱的護老人士。
32
+ 復康器材 - 資源服務 :需照顧年老體弱的護老人士。
33
+ 長者飯堂服務:秦石邨及豐盛苑長者。
34
+
35
+ 沙田改善家居及社區照顧服務:
36
+ 65歲或以上人士(年齡介乎60至64歲的長者,如証實有需要,亦可使用此服務)經
37
+ 社會福利署「安老服務統一評估機制」評核為身體機能中度缺損或嚴重缺損的體弱
 長者。
38
+ 新界東改善家居及社區照顧服務:
39
+   65歲或以上人士(年齡介乎60至64歲的長者,如証實有需要,亦可使用此服務)經   
 社會福利署「安老服務統一評估機制」評核為身體機能中度缺損或嚴重缺損的體弱
 長者。
40
+ 離院長者綜合支援計劃:
41
+ 服務對象為居於沙田及馬鞍山區,並需由沙田離院計劃隊評估為有復康、個人護理 
 及家居支援等需要之出院長者。",詳情請向中心查詢 
42
+ 延智會所,沙田秦石邨石玉樓3樓341-360號,2698 4881,smartclub@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=77#intro ,"星期一至星期五9:00 – 17:00
43
+ 星期六9:00 – 12:30
44
+ 星期日及公眾假期休息
45
+ ",沙田區,"提倡及早驗測、及早介入、及早支援的重要;
46
+ 以「共同照顧」理念協助認知障礙症人士及其家人適應病患帶來的轉變,在照顧路途中與家屬緊密同行;
47
+ 在社區及家居環境中,推廣心理社會照顧模式","50歲以上有認知訓練需要人士 ;
48
+ 60歲以上患有輕度及早期認知障礙症之人士 ;
49
+ 照顧患有認知障礙症人士之照顧者。
50
+ ",詳情請向中心查詢 
51
+ 賽馬會「a家」樂齡科技教育及租賃服務,新界沙田小瀝源牛皮沙街2號愉翠商場M樓2號舖,3153 5255,rental@ageathome.hk,https://ageathome.hk,"星期一至五: 上午10:00 -下午5:00 (下午1:00 - 2:00除外)
52
+ 星期六:上午 10:00-下午1:00
53
+ ",全港,旨在加強市民對樂齡科技的認識和應用,進而提升長者及照顧者「居家安老」的信心和能力,讓長者能夠留在熟悉的環境中安享晚年。促進發展嶄新的服務、市場及資助模式。,"教育服務 ─ 全港市民
54
+ 租賃服務 ─ 全港60歲或以上長者","對服務有興趣人士可直接致電到服務中心查詢及申請
55
+ "
train-assets/training-target.csv ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Unit Name,Address,Phone,Email,Website,Opening Hours,Service Area,Service Goals,Service Targets,Application
2
+ 馬鞍山長者地區中心,新界沙田馬鞍山錦泰商場一樓,3124-7633,mosdecc@elchk.org.hk,http://mosdecc.elchk.org.hk/,星期一至四、星期六:8:00am - 6:00pm; 星期五:8:00am - 10:00pm; 星期日及公眾假期休息,馬鞍山,透過地區層面的社區支援服務,協助長者留在社區安老,並過著健康、受尊重及有尊嚴的生活,與及發揚他們積極參與的角色,中心同時亦推動沙田區內的居民及不同團體共同建立關懷的社區。,年滿 60 歲或以上的長者; 準退休人士 (50-59 歲); 護老者; 社區人士,"會員費:60歲或以上每年30元 (包括21元會員費及9元行政費)。其他服務和個別活動收費則按當時成本而定。
3
+ 入會手續:於辨公時間內帶同身份證、近照兩張及會費,親臨本中心辦理。"
4
+ 沙田多元化金齡服務中心(SDCC),"沙田瀝源邨貴和樓123,125 - 140號地下",2691 7163,sdcc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=38,星期一至五:8:00am - 6:00pm; 星期六:8:00am - 5:30pm; 星期日及公眾假期休息,沙田區,致力推動老有所為、老有所屬、康健頤年的目標,鼓勵長者積極參與終身學習、社交及義務工作,發揮長者潛能,建立健康、積極、正面的生活模式。,年滿60歲或以上在沙田區居住的長者; 準退休人士 (50-59歲); 護老者; 社區人士,"會員費:
5
+ 金咭會員: 60歲或以上,每年30元 (包括21元會員費及9元行政費)
6
+ 銀咭會員:50-59歲,無需年費 (只可享用銀咭會員活動及福利)
7
+ 入會手續: 帶同身份證及近照一張文件,到本中心辦理手續"
8
+ 頌安長者鄰舍中心,馬鞍山頌安邨頌智樓地下,2144 3199,conec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=40,星期一至四及六:8:00am - 6:00pm; 星期五:8:00am - 9:00pm; 星期日及公眾假期休息,馬鞍山頌安邨、錦豐苑,協助長者留在區內安老,並過著健康、受尊重及有尊嚴的生活,鼓勵他們積極參與,此外,亦推動區內的居民,共同建立關懷的社區。,在區內居住年滿60歲或以上的長者,護老者及社區人士,"會員費:
9
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
10
+ 銀咭會員:護老者及金年華會員免費
11
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
12
+ 善學慈善基金關宣卿愉翠長者鄰舍中心,沙田愉翠苑服務設施大樓地下,2630 7070,ycnec@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,"主址:沙田愉翠苑服務設施大樓地下
開放時間:
13
+ 星期一至六:8:00am - 6:00pm
星期五晚:6:00pm - 9:00pm(星期日及公眾假期休息)

14
+ 分址:沙田第一城42座地下(得寶街1號)
15
+ 電話:3692 5078
16
+ 傳真:3692 5071
17
+ 開放時間:星期一至五:9:00am – 5:00pm",沙田區,協助長者留在區內安老,過著健康、受尊重及有尊嚴的生活,發揚他們積極參與的角色,並推動沙田區居民共建關懷社區。,"滿60歲或以上長者, 準長者(50-59歲), 護老者, 社區人士","會員費:
18
+ 金咭會員:60歲或以上,每年30元 (包括21元會員費及9元行政費)
19
+ 銀咭會員:50歲至59歲,無須年費 (只可享用銀咭會員活動及福利)
20
+ 入會手續: 於辦公時間內帶同身份證明文件近照一張及會費親臨中心辦理"
21
+ 恩耀坊,馬鞍山恒安邨恒海樓1-8號地下,3523 1858,mosrh@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=41#contact,星期一至星期六:8:00am - 6:00pm (星期日及公眾假期休息 ),沙田區,信義會恩耀坊服務包括長者日間護理服務、物理治療服務、長者支援服務、隱蔽長者服務及恒耀老友記等。體弱長者可使用日間護理服務,痛症長者或社區人士可使用物理治療服務,體健長者可參與恒耀老友記,而獨居或兩老長者可參與長者支援服務或隱蔽長者服務。,年滿60歲或以上的長者 準退休人士(50-59歲) 護老者 社區人士,詳情請向中心查詢
22
+ 沙田護老坊,沙田秦石邨石玉樓3樓341-360號,2698 4881,scc@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=36#contact,"開放時間:星期一至六:9:00am - 1:00pm
23
+ 辦公時間:星期一至六:9:00am - 5:00pm",沙田區,"透過多元化服務,幫助長者們解決生活上所遇到的實際困難 ,令長者們居於自己熟悉的社區,安享晚年,避免不必要的入院或隔離。
24
+ 透過多元化服務,幫助護老者於照顧長者時更具知識及技巧,並透過提供日託服務,令長者得到更全面的專業護理服務,護老者同時有一休息及裝備的機會。
25
+ 提供各項社交及教育性活動,鼓勵長者善用餘暇,參與社會,發展潛能,享受豐盛晚年。
26
+ 本著「敬老、愛老、護老」精神,鼓��社區人士合力建設一個關懷長者的社區。",年滿60歲或以上的長者 準退休人士(50-59歲) 護老者 社區人士,詳情請向中心查詢 
27
+ 延智會所,沙田秦石邨石玉樓3樓341-360號,2698 4881,smartclub@elchk.org.hk,https://service.elchk.org.hk/unit_service3.php?center=77#intro,"星期一至星期五9:00 – 17:00
28
+ 星期六9:00 – 12:30
29
+ 星期日及公眾假期休息",沙田區,"提倡及早驗測、及早介入、及早支援的重要;
30
+ 以「共同照顧」理念協助認知障礙症人士及其家人適應病患帶來的轉變,在照顧路途中與家屬緊密同行;
31
+ 在社區及家居環境中,推廣心理社會照顧模式","50歲以上有認知訓練需要人士 ;
32
+ 60歲以上患有輕度及早期認知障礙症之人士 ;
33
+ 照顧患有認知障礙症人士之照顧者。
34
+ ",詳情請向中心查詢 
35
+ 賽馬會「a家」樂齡科技教育及租賃服務,新界沙田小瀝源牛皮沙街2號愉翠商場M樓2號舖,3153 5255,rental@ageathome.hk,https://ageathome.hk,"星期一至五: 上午10:00 -下午5:00 (下午1:00 - 2:00除外)
36
+ 星期六:上午 10:00-下午1:00",全港,旨在加強市民對樂齡科技的認識和應用,進而提升長者及照顧者「居家安老」的信心和能力,讓長者能夠留在熟悉的環境中安享晚年。促進發展嶄新的服務、市場及資助模式。,"教育服務 ─ 全港市民
37
+ 租賃服務 ─ 全港60歲或以上長者","對服務有興趣人士可直接致電到服務中心查詢及申請
38
+ "
train-assets/training-target.docx ADDED
Binary file (48.3 kB). View file
 
train-assets/training-target.pdf ADDED
Binary file (285 kB). View file
 
train.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+
3
+ import openai
4
+ import pinecone
5
+ from llama_index import StorageContext, VectorStoreIndex, download_loader
6
+ from llama_index.vector_stores import PineconeVectorStore
7
+
8
+ from environments import PINECONE_API_KEY, PINECONE_INDEX, OPENAI_API_KEY
9
+
10
+ openai.api_key = OPENAI_API_KEY
11
+
12
+ print('Start Loading Data ...')
13
+
14
+ PagedCSVReader = download_loader("PagedCSVReader")
15
+
16
+ loader = PagedCSVReader(encoding="utf-8")
17
+ documents = loader.load_data(file=Path('train-assets/training-target-simple.csv'))
18
+
19
+ pinecone.init(
20
+ api_key=PINECONE_API_KEY,
21
+ environment='gcp-starter'
22
+ )
23
+ pinecone_index = pinecone.Index(PINECONE_INDEX)
24
+ vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
25
+ storage_context = StorageContext.from_defaults(vector_store=vector_store)
26
+ index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
27
+
28
+ print('Done!')