File size: 1,558 Bytes
031beb8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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