cowcow02 commited on
Commit
c6e0771
1 Parent(s): 8ff0c2e

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. app.py +21 -27
  2. environments.py +1 -0
  3. train.py +1 -1
app.py CHANGED
@@ -9,7 +9,7 @@ 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
13
 
14
  openai.api_key = OPENAI_API_KEY
15
  # openai.debug = True
@@ -23,34 +23,26 @@ pinecone_index = pinecone.Index(PINECONE_INDEX)
23
  vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
24
  storage_context = StorageContext.from_defaults(vector_store=vector_store)
25
  index = VectorStoreIndex.from_documents([], storage_context=storage_context)
26
- chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT)
27
  DENIED_ANSWER_PROMPT = '對不起,我是設計用於回答關於信義會地區中心的服務內容'
28
 
29
- SYSTEM_PROMPT = '你是基督教香港信義會社會服務部的智能助理,你能解答關於基督教香港信義會社會服務部的服務內容。' \
30
- '基督教香港信義會社會服務部旗下有多個服務單位,每個單位提供不同種類的服務,各有自己的單位地址聯絡方式。你需要根據用戶提問,建議相關的單位以及適合的服務,並提供單位資料。' \
31
- f'如果你提供服務單位資料,必須是根據context內容提供,請以以下格式顯示:' \
32
- f'"單位資訊如下:' \
33
- f'<summary of service>' \
34
- f'- 單位名稱: <name>' \
35
- f'- 地址: <address>' \
36
- f'- 電話: <phone_number>' \
37
- f'- 開放時間: <opening_hours>' \
38
- f'- 網站: <url>' \
39
- f'"' \
40
- '注意:服務單位跟中心同義。' \
41
- '你不能提供context沒有提及的中心或單位,或健康資訊,醫學建議或者醫療相關的解答。' \
42
- f'如你被要求解答context沒有提及的資料,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的地區服務中心的服務內容。' \
43
- '你不能進行算術,翻譯,程式碼生成,文章生成等,與地區服務中心無關的要求。' \
44
- f'如你被要求進行算術,翻譯,程式碼生成,文章生成等,與地區服務中心無關的要求,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的地區服務中心的服務內容。' \
45
- f'如果當前的 prompt 沒有任何 context 可供參考,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,並提供相關的地區服務中心的服務內容。'
46
 
47
  CHAT_EXAMPLES = [
48
  '你可以自我介紹嗎?',
49
  '沙田護老坊的開放時間?',
50
  '我今年60歲,住秦石邨,日常比較多病痛,有冇中心可以介紹?',
51
  '我今年60歲,住馬鞍山,想認識下多D老友記,有冇介紹?',
 
52
  '我有一位親人有認知障礙症,可以介紹相關服務嗎?',
53
- '可以介紹下樂齡科技?'
54
  ]
55
 
56
 
@@ -142,12 +134,11 @@ chatbot = gr.Chatbot()
142
  with gr.Blocks() as demo:
143
  gr.Markdown("# 地區服務中心智能助理")
144
 
145
- with gr.Tab("透過網站內容進行回答"):
146
- gr.ChatInterface(predict,
147
- chatbot=chatbot,
148
- examples=CHAT_EXAMPLES,
149
- )
150
- chatbot.like(vote, None, None)
151
 
152
  # with gr.Tab("With Initial System Prompt (a.k.a. prompt wrapper)"):
153
  # gr.ChatInterface(predict_with_prompt_wrapper, examples=CHAT_EXAMPLES)
@@ -156,4 +147,7 @@ with gr.Blocks() as demo:
156
  # gr.ChatInterface(predict_vanilla_chatgpt, examples=CHAT_EXAMPLES)
157
 
158
  demo.queue()
159
- demo.launch(share=False, auth=("demo", PASSWORD))
 
 
 
 
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
  openai.api_key = OPENAI_API_KEY
15
  # openai.debug = True
 
23
  vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
24
  storage_context = StorageContext.from_defaults(vector_store=vector_store)
25
  index = VectorStoreIndex.from_documents([], storage_context=storage_context)
26
+ chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT, similarity_top_k=3)
27
  DENIED_ANSWER_PROMPT = '對不起,我是設計用於回答關於信義會地區中心的服務內容'
28
 
29
+ SYSTEM_PROMPT = '你是基督教香港信義會社會服務部的智能助理,你能從用戶的提問,以及提供的context中,判斷出可能適合用戶的服務單位(或服務中心)。' \
30
+ '\n\n如果context裡有與問題內容吻合的服務單位,以列點方式顯示該單位資訊。' \
31
+ f'如果context裡沒有與問題內容吻合的服務單位,你必須回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。' \
32
+ '你不能生成context沒有提及的單位,或健康資訊,醫學建議或者醫療相關的解答。' \
33
+ f'如你被要求解答context沒有提及的資料,你必須回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。' \
34
+ '你不能進行算術,翻譯,程式碼生成,文章生成等,與地區服務單位無關的要求。' \
35
+ f'如你被要求進行算術,翻譯,程式碼生成,文章生成等,與地區服務單位無關的要求,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。' \
36
+ f'如果當前的 prompt 沒有任何 context 可供參考,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。'
 
 
 
 
 
 
 
 
 
37
 
38
  CHAT_EXAMPLES = [
39
  '你可以自我介紹嗎?',
40
  '沙田護老坊的開放時間?',
41
  '我今年60歲,住秦石邨,日常比較多病痛,有冇中心可以介紹?',
42
  '我今年60歲,住馬鞍山,想認識下多D老友記,有冇介紹?',
43
+ '本人70歲,需要地區支援服務,應該去邊個中心?',
44
  '我有一位親人有認知障礙症,可以介紹相關服務嗎?',
45
+ '可以介紹下邊間中心有樂齡科技教育?'
46
  ]
47
 
48
 
 
134
  with gr.Blocks() as demo:
135
  gr.Markdown("# 地區服務中心智能助理")
136
 
137
+ gr.ChatInterface(predict,
138
+ chatbot=chatbot,
139
+ examples=CHAT_EXAMPLES,
140
+ )
141
+ chatbot.like(vote, None, None)
 
142
 
143
  # with gr.Tab("With Initial System Prompt (a.k.a. prompt wrapper)"):
144
  # gr.ChatInterface(predict_with_prompt_wrapper, examples=CHAT_EXAMPLES)
 
147
  # gr.ChatInterface(predict_vanilla_chatgpt, examples=CHAT_EXAMPLES)
148
 
149
  demo.queue()
150
+ if LOCAL:
151
+ demo.launch(share=False)
152
+ else:
153
+ demo.launch(share=False, auth=("demo", PASSWORD))
environments.py CHANGED
@@ -8,3 +8,4 @@ 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')
 
 
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')
train.py CHANGED
@@ -14,7 +14,7 @@ print('Start Loading Data ...')
14
  PagedCSVReader = download_loader("PagedCSVReader")
15
 
16
  loader = PagedCSVReader(encoding="utf-8")
17
- documents = loader.load_data(file=Path('./train-assets/training-target.csv'))
18
 
19
  pinecone.init(
20
  api_key=PINECONE_API_KEY,
 
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,