cowcow02 commited on
Commit
e8c2750
1 Parent(s): 48aad8e

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +23 -14
app.py CHANGED
@@ -28,25 +28,34 @@ pinecone_index = pinecone.Index(PINECONE_INDEX)
28
 
29
  llm = OpenAI(temperature=0.0, model="gpt-3.5-turbo-instruct")
30
  service_context = ServiceContext.from_defaults(llm=llm)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
33
  storage_context = StorageContext.from_defaults(vector_store=vector_store)
34
  index = VectorStoreIndex.from_documents([], storage_context=storage_context, service_context=service_context)
35
- chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT, similarity_top_k=3)
36
- DENIED_ANSWER_PROMPT = '我是設計用於回答關於信義會地區中心的服務內容'
37
-
38
- SYSTEM_PROMPT = f'你是信義會地區中心的智能助理,你必須基於提供的資訊進行總結,用以回答用戶的提問。' \
39
- f'1. 你不能自行生成非 context 已有的內容,必須基於 context 原文進行回答。' \
40
- f'2. 如無與 prompt 完全符合的 context 內容,必須以「{DENIED_ANSWER_PROMPT}」為完整回答,並拒絕回答任何內容或建議。' \
41
- f'3. 你不能進行算術,翻譯,程式碼生成,文章生成等,與信義會地區中心無關的要求。' \
42
- f'如你被要求進行算術,翻譯,程式碼生成,文章生成等,與信義會地區中心無關的要求,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。' \
43
- # f'2. 你不能提供context沒有提及的內容,例如服務,地點,健康資訊,醫學建議或者醫療相關的解答。' \
44
- # f'如你被要求解答context沒有提及的地點,健康資訊,醫學建議或者醫療相關的問題,你必須回答「{DENIED_ANSWER_PROMPT}」為完整回覆。' \
45
- # f'4. 如果當前的 prompt 沒有任何 context 可供參考,你必須回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。' \
46
- # f'回覆請保持簡短,跟從提供的context, 不可自行添加回答內容。'
47
-
48
  CHAT_EXAMPLES = [
49
  '你可以自我介紹嗎?',
 
50
  '沙田護老坊的開放時間?',
51
  '我今年60歲,住秦石邨,日常比較多病痛,有冇中心可以介紹?',
52
  '我今年60歲,住馬鞍山,想認識下多D老友記,有冇介紹?',
@@ -57,7 +66,7 @@ CHAT_EXAMPLES = [
57
 
58
 
59
  def convert_to_chat_messages(history: List[List[str]]) -> List[ChatMessage]:
60
- chat_messages = [ChatMessage(role=MessageRole.SYSTEM, content=SYSTEM_PROMPT)]
61
  for conversation in history[-1:]:
62
  for index, message in enumerate(conversation):
63
  if not message:
 
28
 
29
  llm = OpenAI(temperature=0.0, model="gpt-3.5-turbo-instruct")
30
  service_context = ServiceContext.from_defaults(llm=llm)
31
+ DENIED_ANSWER_PROMPT = '我是設計用於回答關於信義會地區中心的服務內容'
32
+
33
+ SYSTEM_PROMPT = (
34
+ f'Context:'
35
+ "\n--------------------\n"
36
+ "{context_str}"
37
+ "\n--------------------\n"
38
+ "\n"
39
+ "Instruction:"
40
+ f'\n- 你必須基於上面提供的資訊 (context) 回答用戶的提問。'
41
+ f'\n- 你不能自行生成非 context 的內容,必須基於 context 原文進行回答。'
42
+ f'\n- 如適用,你可以用列點顯示答案。'
43
+ f'\n- 如沒有與問題完全符合的 context,必須以「{DENIED_ANSWER_PROMPT}」為完整回答,並拒絕回答任何內容或建議。'
44
+ f'\n- 你不能進行算術,翻譯,程式碼生成,文章生成等要求。如你被要求進行算術,翻譯,程式碼生成,文章生成等要求,你可以回答「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。'
45
+ f'\n- 你不能提供或生成 context 沒有的內容,例如服務,地點,健康資訊,醫學建議或者醫療相關的解答。如你被要求解答context沒有提及的地點,健康資訊,醫學建議或者醫療相關的問題,你必須回答「{DENIED_ANSWER_PROMPT}」為完整回覆。'
46
+ f'\n- 如果當前的問題沒有任何符合的 context 可供作答,你必須以「{DENIED_ANSWER_PROMPT}」為完整回覆,不容許附加資訊。'
47
+ )
48
 
49
  vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
50
  storage_context = StorageContext.from_defaults(vector_store=vector_store)
51
  index = VectorStoreIndex.from_documents([], storage_context=storage_context, service_context=service_context)
52
+ chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT,
53
+ similarity_top_k=3,
54
+ context_template=SYSTEM_PROMPT,
55
+ )
 
 
 
 
 
 
 
 
 
56
  CHAT_EXAMPLES = [
57
  '你可以自我介紹嗎?',
58
+ '住香港仔,邊度可以搵長者服務?',
59
  '沙田護老坊的開放時間?',
60
  '我今年60歲,住秦石邨,日常比較多病痛,有冇中心可以介紹?',
61
  '我今年60歲,住馬鞍山,想認識下多D老友記,有冇介紹?',
 
66
 
67
 
68
  def convert_to_chat_messages(history: List[List[str]]) -> List[ChatMessage]:
69
+ chat_messages = []
70
  for conversation in history[-1:]:
71
  for index, message in enumerate(conversation):
72
  if not message: