Files
abot/game_task/game_chatgpt_qa.py
2025-02-28 16:49:43 +08:00

102 lines
5.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import requests
import json
import random
# 解析JSON
def extract_content(data_string):
try:
data = json.loads(data_string)
# 提取content字段
content = data["choices"][0]["message"].get("content", "")
return content
except json.JSONDecodeError:
print("Invalid JSON")
return None
def message_task_json(prompt, content):
# 设置Authorization和URL
authorization = "Bearer b8586595-eb81-483d-8e91-a35cc789729e" # 请替换为真实的Authorization token
url = 'https://ark.cn-beijing.volces.com/api/v3/chat/completions'
data = {
# "stream": True,
"model": "doubao-1-5-lite-32k-250115",
"messages": [
{
"role": "system",
"content": f"{prompt}"
},
{
"role": "user",
"content": f"{content}"
}
]
}
# 设置请求头
headers = {
"Content-Type": "application/json; charset=utf-8",
"Authorization": authorization
}
# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(data), )
response.encoding = 'utf-8'
# 输出响应内容
print(response.status_code)
print(response.text)
return json.loads(extract_content(response.text))
def game_question_json(question):
fields = [
"近现代史", "战争与政治", "文化遗产与考古学", "进化论", "动植物学", "基因与遗传学",
"生态学", "有机化学", "无机化学", "生物化学", "环境化学", "人文地理", "自然地理",
"地质学", "气候变化", "古典文学", "现代文学", "小说与戏剧", "诗歌与散文", "美术",
"音乐", "戏剧与舞蹈", "电影与媒体", "西方哲学", "东方哲学", "道德与伦理学", "逻辑与认识论",
"人类学", "心理学", "政治学", "经济学", "编程语言", "人工智能", "数据科学", "网络与安全",
"机械工程", "电气工程", "化学工程", "土木工程", "解剖学", "生理学", "临床医学", "药学与护理",
"球类运动", "奥林匹克运动", "运动心理学", "健身与营养", "世界宗教", "神话与民间故事",
"宗教哲学", "语法与词汇", "语言习得", "方言与语言变异", "宏观经济学", "微观经济学",
"国际贸易", "金融与投资", "民法与刑法", "国际法", "知识产权法", "环境法"
]
# 随机选择一个领域
selected_field = random.choice(fields)
# 输出随机选择的领域
print(f"随机选择的领域是:{selected_field}")
question = question + f"随机选择的领域是:{selected_field}"
prompt = """
请根据以下要求,随机生成一个问题,确保每次提问涉及不同领域,且不重复:
1. 每个问题应该覆盖以下任意领域:近现代史、战争与政治、文化遗产与考古学、进化论、动植物学、基因与遗传学、生态学、有机化学、无机化学、生物化学、环境化学、人文地理、自然地理、地质学、气候变化、古典文学、现代文学、小说与戏剧、诗歌与散文、美术、音乐、戏剧与舞蹈、电影与媒体、西方哲学、东方哲学、道德与伦理学、逻辑与认识论、人类学、心理学、政治学、经济学、编程语言、人工智能、数据科学、网络与安全、机械工程、电气工程、化学工程、土木工程、解剖学、生理学、临床医学、药学与护理、球类运动、奥林匹克运动、运动心理学、健身与营养、世界宗教、神话与民间故事、宗教哲学、语法与词汇、语言习得、方言与语言变异、宏观经济学、微观经济学、国际贸易、金融与投资、民法与刑法、国际法、知识产权法、环境法。
2. 问题应简洁,具有一定难度,易于理解且充满乐趣,适合百科类知识问答。
3. 每个问题应独立,且问题之间无连贯性或延续性。
4. 避免重复提问或产生相似的问题,确保问题新颖。
5. 对于每个问题提供难度评分1-10分。在问题答对后用户可以根据难度给出相应的分数。
输出格式要求如下仅返回JSON格式确保不添加多余的符号
{
"category":"人文地理"
"question": "哪个国家最早将玫瑰与爱情联系起来?",
"score": "1",
"answer": "波斯",
"description": "波斯文化中,玫瑰被广泛认为是象征爱情的花卉,其象征意义逐渐传入西方。"
}
"""
return message_task_json(prompt, question)
def game_answer_json(answer):
prompt = "你是一个益智百科问答大师,可以根据用户回答的答案进行判断,并且对问题(question)答案(answer)进行打分,打分时请参考最高分要求(top_score)告知用户能获得多少分请在description中描述打分理由请只返回JSON格式的内容格式要求如下(请不要加上markdown 的符号){\"question\": \"哪个国家最早将玫瑰与爱情联系起来?\", \"score\":\"1\", \"answer\": \"波斯\",\"description\":\"描述问题答案的原因\"}"
return message_task_json(prompt, answer)
if __name__ == '__main__':
print(game_question_json('请出题!'))
# print(game_answer_json('question:哪个国家的节日与裸体狂欢有关?,answer:古罗马,top_score:3'))