2025-05-03 20:29:32 +08:00
|
|
|
|
import openai
|
|
|
|
|
|
import time
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
2025-05-03 20:47:02 +08:00
|
|
|
|
model = "Qwen/Qwen3-8B"
|
2025-05-03 20:29:32 +08:00
|
|
|
|
max_tokens = 500
|
|
|
|
|
|
|
2025-05-05 11:08:33 +08:00
|
|
|
|
output_format = """
|
|
|
|
|
|
score:
|
|
|
|
|
|
reason:
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2025-05-03 20:29:32 +08:00
|
|
|
|
def getDim(content, dim):
|
|
|
|
|
|
client = openai.OpenAI(base_url='https://api.siliconflow.cn/v1',
|
|
|
|
|
|
api_key="xxx")
|
|
|
|
|
|
time.sleep(3)
|
|
|
|
|
|
messages = []
|
|
|
|
|
|
messages.append({
|
|
|
|
|
|
"role": "system",
|
|
|
|
|
|
"content": "你是一位评分老师,请根据提供给你的评分标准对文本进行评分,结果仅仅输出分数,不需要任何解释"
|
2025-05-05 11:08:33 +08:00
|
|
|
|
"输出格式:"
|
|
|
|
|
|
f"{output_format}"
|
|
|
|
|
|
|
2025-05-03 20:29:32 +08:00
|
|
|
|
})
|
|
|
|
|
|
messages.append({
|
|
|
|
|
|
"role": "user",
|
|
|
|
|
|
"content": f"待评分内容:{content}"
|
|
|
|
|
|
f"评分标准:{dim}"
|
|
|
|
|
|
})
|
|
|
|
|
|
response = client.chat.completions.create(
|
|
|
|
|
|
model=model,
|
|
|
|
|
|
messages=messages,
|
|
|
|
|
|
max_tokens=max_tokens,
|
|
|
|
|
|
temperature=0.1
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2025-05-05 11:08:33 +08:00
|
|
|
|
# print(response.choices[0].message.content)
|
|
|
|
|
|
# match = re.search(r'\d+', response.choices[0].message.content)
|
|
|
|
|
|
# if match:
|
|
|
|
|
|
# score = match.group()
|
|
|
|
|
|
# else:
|
|
|
|
|
|
# score = response.choices[0].message.content
|
|
|
|
|
|
# print(score)
|
|
|
|
|
|
return response.choices[0].message.content
|
2025-05-03 20:29:32 +08:00
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2025-05-05 11:08:33 +08:00
|
|
|
|
content = """
|
|
|
|
|
|
项目实践:迷宫游戏实现 \n211370106 沈钰舒 难度五\n1 问题描述 \n迷宫介绍:\n假设一个迷宫的示意图如下,其中的每个方块用空白表示通道,用阴影表示障碍物。入口在左上角,出\n口在右下角。\n为了表示迷宫,设置一个数组 M*N 的二维数组 , 其中每个元素表示一个方块的状态,为 1 时表示对应方块\n是通道,为 0 时表示对应方块是障碍物 ( 不可走 ) ,或者相反。\n求迷宫问题就是在一个指定的迷宫中求出从入口到出口的一条路径。在求解时采用 “ 穷举法 ” ,即从入口出\n发依次试探相邻的方块,一且找到一个可走的相邻方块就继续走下去 , 并记下所走的方位。两个方块有公\n共边称为相邻。\n难度五\n使用不超过 2x100x100 的三维数组模拟两层楼迷宫,支持多出口、楼梯和自定义楼梯距离,输出最短的\n行走路径或 “ 无解 ” 。\n等级 5的出口可参考以下范例输入:\n2\n1 3 5\n0 10 39\n表示有 2个出口,分别在二楼的( 3,5 )和一楼的( 10,39 )坐标处\n等级 5的楼梯可参考以下范例输入:\n2\n8 9 3\n15 27 2\n表示有 2个楼梯,位置( 8,9 )的楼梯可以从 (0,8,9) 处到达( 1,8,9 ),距离为 3 ;位置( 15,27 )的楼梯可\n以从 (0,15,27) 处到达( 1,15,27 ),距离为 2 。\n轮\n次提问 回复 思考及行动\n1问题等效,交\n代问题描述等效成图论中的路径搜\n索问题,提示了需要处\n理额外的维度和多个目\n标节点理解了问题的核心,决定使用图论的算法来\n完成该程序的实现\n2提问图论所推\n荐的算法推荐了五种图论中的算\n法,详细描述了优缺\n点,均在课内知识覆盖\n之内针对不同通道有不同的通过成本或距离,决\n定采取迪杰特斯拉算法\n3提问该题中迪\n杰特斯拉算法\n的核心函数提供了核心函数的伪代\n码该代码描述了迪杰特斯拉算法,即将迷宫上\n下左右的相邻格子等效为边长为 1 连接的\n点,楼梯连接的两个格子等效为边长为 n\n(指定值)连接的点\n4要求拆解为精\n确的具体步骤将整个程序的实现拆解\n为了具体的七步明确了设计数据结构、输入迷宫数据、实现\n核心函数算法、调用该算法、处理错误和边\n界检查这些步骤,可以以此逐步实现\n轮\n次提问 回复 思考及行动\n1要求实现步骤一:\n设计和设置数据结\n构提供了数据结构部分的代码,\n包括:迷宫数组、楼梯信息、\n出口信息结构明确,三维数组来存储每个位\n置是通道还是障碍,楼梯信息将存\n储起始层、起始行、起始列、目标\n层和楼梯距离,出口信息只需存储\n层、行和列,对应题目要求的输入\n2要求实现步骤二:\n输入迷宫数据,特\n别要求使用 txt 文\n件方式输入定义一个明确的文件格式来描\n述迷宫的布局、楼梯信息以及\n出口位置,使用标准输入输出\n库(fstream)实现检查了文件格式的设计符合题目要\n求的输入,且涵盖了数据结构所需\n的全部信息\n3要求实现步骤三:\n实现 Dijkstra 算法在整体思路设计的基础上,结\n合数据结构的定义,实现了具\n体的算法代码使用一个优先队列作为辅助,来保\n证每次都处理当前最短未处理路\n径,同时确认了代码处理了邻近节\n点、楼梯、出口的情况,符合逻辑2 概要 \n2.1 整体思路设计 \n整体思路设计阶段包含 4 轮交互,交互过程概述如下\n2.2 代码实现 \n代码实现共包含 5 轮交互,交互过程概述如下:\n轮\n次提问 回复 思考及行动\n4要求实现步骤四:\n搜索和输出最短路\n径修改主函数以实现搜索和输出在主函数中调用了处理文件输入的\n函数、 Dijkstra 函数,从 0 , 0 , 0\n开始进行遍历\n5要求实现步骤五:\n错误处理和边界条\n件检查添加了对文件读取失败、输入\n<EFBFBD><EFBFBD>
|
|
|
|
|
|
"""
|
|
|
|
|
|
dim = "交互过程或设计结果(10分):\n9-10分:与AI的交互具有逻辑并且连贯,对AI的能够进行再次提问,整体结构完整且有条理,每个功能模块都包括交流和代码。\n7-8分:与AI的交互连贯,能够根据AI的回复进行下一轮问答,分模块与AI进行交互,每个模块都能较好完成且实现。\n5-6分:勉强完成任务,包含代码但是与AI交互的过程比较简单,与AI交互较有逻辑,整体文本的结构有一定的条理性,分模块与AI进行交互,每个模块都完成良好。\n3-4分:提问无条理、互动断裂,AI 使用被动,设计内容不完整或逻辑支离破碎,完成度较差,没有分模块与AI交互。\n0-2分:结构混乱,几乎无有效内容,仅有零碎交互记录,设计表达混乱、目标模糊,不能解决问题。\n"
|
|
|
|
|
|
result = getDim(content, dim)
|
|
|
|
|
|
print(result)
|