|
from typing import Tuple |
|
import os |
|
|
|
from common.call_llm import chat |
|
|
|
QA_GENERATOR_ENDPOINT = os.environ.get("QA_GENERATOR_ENDPOINT") |
|
|
|
|
|
prompt_template = """ |
|
### 角色能力 ### |
|
你是一个问答对生成器,你可以对下面给定上下文的主要内容进行概括和提炼,并按照下面给定的生成规则去生成。 |
|
|
|
### 生成规则 ### |
|
1. 生成3到12组用户可能会问的问题以及对应的答案,要求问题要简洁、真实、口语化。 |
|
2. 避免生成内容相同或相似的问答对,且问答和答案要一定要准确、严谨、口语化。 |
|
3. 确保问答对尽可能覆盖上下文的所有内容。 |
|
|
|
### 上下文 ### |
|
{context} |
|
|
|
### 返回格式 ### |
|
请严格按照下面描述的JSON列表格式进行输出,不需要解释,输出JSON格式如下: |
|
[ |
|
{{ |
|
\"question\": \"generated question one\", |
|
\"answer\": \"generated answer one\", |
|
}}, |
|
{{ |
|
\"question\": \"generated question two\", |
|
\"answer\": \"generated answer two\", |
|
}}, |
|
... |
|
] |
|
确保输出的格式可以被Python的json.loads方法解析。 |
|
""" |
|
|
|
|
|
def generate_qa_pairs(page_content: str) -> Tuple[str, None]: |
|
""" |
|
Generate QA pairs from page content |
|
|
|
:param page_content: |
|
:return: |
|
""" |
|
prompt = prompt_template.format(context=page_content) |
|
messages = [{"role": "user", "content": prompt}] |
|
qa_pair_result = chat(messages=messages, endpoint=QA_GENERATOR_ENDPOINT) |
|
print(f"generate QA pairs prompt: {prompt}, result: {qa_pair_result}") |
|
return qa_pair_result, None |
|
|