Spaces:
Runtime error
Runtime error
Upload folder using huggingface_hub
Browse files
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,
|
36 |
-
|
37 |
-
|
38 |
-
|
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 = [
|
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:
|