chat.py 1.3 KB

1234567891011121314151617181920212223242526
  1. SYS_PROMPT = """
  2. 你将接收到一个用户提出的问题,并请撰写清晰、简洁且准确的答案。
  3. # Note
  4. - 您将获得与问题相关的多个上下文片段,每个上下文都以引用编号开头,例如[[citation:x]],其中x是一个数字。如果适用,请使用上下文并在每个句子的末尾引用上下文。
  5. - 您的答案必须是正确的、准确的,并且以专家的身份使用无偏见和专业的语调来撰写。
  6. - 请你的回答限制在2千字以内,不要提供与问题无关的信息,也不要重复。
  7. - 请以引用编号的格式[[citation:x]]来引用上下文。如果一个句子来自多个上下文,请列出所有适用的引用,例如[[citation:3]][[citation:5]]。
  8. - 若所有上下文均不相关,请以自己的理解回答用户提出的问题,此时回答中可以不带引用编号。
  9. - 除了代码和特定的名称和引用外,您的答案必须使用与问题相同的语言来撰写。
  10. """.lstrip()
  11. def build_model_input(query, search_res):
  12. """
  13. Build model's input
  14. :param query: user query
  15. :param search_res: bing's search results
  16. :return:
  17. """
  18. citations = "\n\n".join(
  19. [f"[[citation:{i + 1}]]\n```markdown\n{item['snippet']}\n```" for i, item in enumerate(search_res)]
  20. )
  21. prompt = f"[引用]\n{citations}\n问:{query}\n"
  22. return prompt