使用GPT将文档生成问答对

news/2024/7/4 1:20:42 标签: AI

 根据文档生成问题列表

url = 'https://api.openai.com/v1/chat/completions'

# 替换为您自己的API密钥
api_key = 'sk-xxxxxxxxx'

model = "gpt-3.5-turbo-16k"

prompt1 = '''
#01 你是一个问答对数据集处理专家。
#02 你的任务是根据我给出的内容,生成适合作为问答对数据集的问题。
#03 问题要尽量短,不要太长。
#04 一句话中只能有一个问题。
#05 生成的问题必须宏观、价值,不要生成特别细节的问题。
#06 生成问题示例:
"""
李世民是谁?
介绍一下李世民。
李世民有哪些成就?
"""
#07 以下是我给出的内容:
"""
"""
{{此处替换成你的内容}}
"""
'''

def generate_question(text_content, more=False):
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    }
    content = "生成适合作为问答对的问题"
    if more:
        content = "尽可能多生成适合作为问答对的问题"
    prompt = prompt1.replace("{{此处替换成你的内容}}", text_content)
    data = {
        "model": model,
        "messages": [
            {"role": "system", "content": prompt},
            {"role": "user", "content": content}
        ]
    }
    start_time = time.time()
    response = requests.post(url, headers=headers, json=data, verify=False)
    print("耗时", time.time() - start_time)
    if response.status_code == 200:
        return response.json()["choices"][0]["message"]['content']
    else:
        print(f"Error: {response.status_code}")
        print(response.content)
        return None

根据问题列表生成问答对

url = 'https://api.openai.com/v1/chat/completions'

# 替换为您自己的API密钥
api_key = 'sk-xxxxxxxxx'

model = "gpt-3.5-turbo-16k"

prompt2 = '''
#01 你是一个问答对数据集处理专家。
#02 你的任务是根据我的问题和我给出的内容,生成对应的问答对。
#03 答案要全面,多使用我的信息,内容要更丰富。
#04 你必须根据我的问答对示例格式来生成:
"""
{"content": "李世民是谁?", "summary": "李世民,唐朝第二位皇帝,庙号太宗,是中国历史上著名的政治家、战略家、军事家、书法家和诗人。"}
{"content": "李世民的庙号是什么?", "summary": "李世民的庙号是太宗。"}
#05 我的问题如下:
"""
{{此处替换成你上一步生成的问题}}

"""
#06 我的内容如下:
"""
{{此处替换成你的内容}}
"""
'''

def generate_qa(text_content, question_text):
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    }
    prompt = prompt2.replace("{{此处替换成你上一步生成的问题}}", question_text).replace("{{此处替换成你的内容}}", text_content)
    data = {
        "model": model,
        "messages": [
            {"role": "system", "content": prompt},
            {"role": "user", "content": "拼成问答对"}
        ]
    }
    start_time = time.time()
    response = requests.post(url, headers=headers, json=data, verify=False)
    print("耗时", time.time() - start_time)
    if response.status_code == 200:
        return response.json()["choices"][0]["message"]['content']
    else:
        print(f"Error: {response.status_code}")
        print(response.content)
        return None


http://www.niftyadmin.cn/n/5450775.html

相关文章

Gemma开源AI指南

近几个月来,谷歌推出了 Gemini 模型,在人工智能领域掀起了波澜。 现在,谷歌推出了 Gemma,再次引领创新潮流,这是向开源人工智能世界的一次变革性飞跃。 与前代产品不同,Gemma 是一款轻量级、小型模型&…

MATLAB:优化与规划问题

一、线性规划 % 线性规划(Linear programming, 简称LP) fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…

【概率基础】从概率角度去解释回归和分类的主要区别是什么?

1. 从概率角度去解释回归和分类的主要区别是什么? 从概率角度来看,回归和分类任务的主要区别在于它们各自预测的目标变量的性质,以及如何使用概率来对这些预测进行建模。 回归 回归任务旨在预测一个连续值的目标变量。在概率术语中,回归模…

8.软件工程

整个章节偏向于记忆、背诵; 主要议题: 软件体系:3层; UML重点,重点记3要素中的关系、图; 1.软件体系结构 分层 优点:利于软件的重复利用; 缺点:以什么方式分层&#…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名(alias)创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引(index template,动态匹配生成索引)新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

基于JavaScript的快递管理系统

基于JavaScript的快递管理系统 开发语言:Java 开发工具:MyEclipse 6.0.1 技术:Spring SpringMVC MyBatis 数据库:mysql 浏览器:IE8.0 系统展示 登陆页面 注册页面 快递员页面 派单员订单管理页面 派单员订单添…

面试知识汇总——垃圾回收器(分代收集算法)

分代收集算法 根据对象的存活周期,把内存分成多个区域,不同区域使用不同的回收算法回收对象。 对象在创建的时候,会先存放到伊甸园。当伊甸园满了之后,就会触发垃圾回收。 这个回收的过程是:把伊甸园中的对象拷贝到F…

Unity VideoPlayer 全屏到 FGUI

需求: 利用VideoPlayer将视频全屏显示到FGUI上。 解决方案: 在FGUI上创建一个全屏UI,创建一个装载器,大小设置为全屏。 设置 VideoPlayer 的渲染方式为 RenderMode.RenderTexture. 创建RenderTexture,(将视…