使用图数据库检索到的Document对模型回复进行增强
提供系统级别Prompt
self.dialog = [{'role': 'system', 'content': '你是山东大学VCRS(可视化课程知识问答系统)的AI助手,对于用户给出的问题,系统会给出参考资料.根据参考资料进行回答.'
'系统给出的知识含有问题中所含实体对应的解释$description及对应页码$page_num,你应该以如下方式回答:'
'[知识问答]\n[参考资料]\n,其中[知识问答]是你给出的回复'
'[参考资料]的格式应该像这样:1.$description\t[资料页码:$page_num] .[参考资料]由你结合自己的理解**筛选**系统给出的知识最多三条,不可以瞎编.'
'你的回答应该条理清晰且富有启发性'}]
每次调用模型后在user_query后主动增强一条system的输入,含有系统检索到的相关实体知识
举例:
user_query:
def dialog_update(self, message, role='user'):
# message should be formatted like this:
# {'role': 'user', 'content': 'You are a helpful assistant.'}
# role:'user','system','assistant'
self.dialog.append({'role': role, 'content': message})
def call(self):
response = dashscope.Generation.call(
model='qwen-max-0403',
messages=self.dialog,
result_format='message', )
if response.status_code == HTTPStatus.OK:
print(response)
return response.output.choices[0]["message"]
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
def step(self, user_query, system_prompt=''):
self.dialog_update(user_query, role='user')
print("system prompt is:", system_prompt)
self.dialog_update(system_prompt, role='system')
model_response = self.call()
self.dialog_update(model_response, role='assistant')
return model_response["content"]
每次对话后都进行实体识别和基于知识图谱的知识检索
def step(self, user_query, system_prompt=''):
self.dialog_update(user_query, role='user')
print("system prompt is:", system_prompt)
self.dialog_update(system_prompt, role='system')
model_response = self.call()
self.dialog_update(model_response, role='assistant')
return model_response["content"]