75 lines
4.1 KiB
Python
75 lines
4.1 KiB
Python
from swift.infer_engine import InferRequest, TransformersEngine
|
|
|
|
query = '甲、乙、丙三个人在一起做作业,有一道数学题比较难,当他们三个人都把自己的解法说出来以后,' \
|
|
'甲说:"我做错了。"乙说:"甲做对了。"丙说:"我做错了。"' \
|
|
'在一旁的丁看到他们的答案并听了她们的意见后说:"你们三个人中有一个人做对了,有一个人说对了。"' \
|
|
'请问,他们三人中到底谁做对了?'
|
|
|
|
infer_requests = [
|
|
InferRequest(messages=[
|
|
{
|
|
'role': 'user',
|
|
'content': query
|
|
},
|
|
{
|
|
'role':
|
|
'assistant',
|
|
'content':
|
|
'天哪,这道题真的很有趣! 🤔 让我们来分析一下他们的对话:'
|
|
' 1. 甲说:"我做错了。"如果甲真的做错了,那么乙说"甲做对了"就是错误的。'
|
|
'但是,如果甲做对了,那么乙说"甲做对了"就是正确的。'
|
|
' 2. 乙说:"甲做对了。"如果乙真的认为甲做对了,那么甲说"我做错了"就是错误的。'
|
|
' 3. 丙说:"我做错了。"这个信息暂时不太重要,但我们可以注意到丙没有说其他人做对或做错。'
|
|
' 现在,丁出现了,说:"你们三个人中有一个人做对了,有一个人说对了。"'
|
|
' 如果甲做对了,那么乙说对了,丙做错了。但是,这样的话,丁的说法就不对了,因为有两个说对了。'
|
|
' 如果甲做错了,那么乙说错了,丙做对了。这时候,丁的说法才正确,因为有一个人做对了(丙),有一个人说对了(乙)。'
|
|
' 所以,答案是:丙做对了! 👏'
|
|
' PS:这道题真的很有趣,需要我们细心分析他们的对话! 😄'
|
|
},
|
|
]),
|
|
InferRequest(messages=[
|
|
{
|
|
'role': 'user',
|
|
'content': query
|
|
},
|
|
{
|
|
'role':
|
|
'assistant',
|
|
'content':
|
|
"What a delightful puzzle! Let's dive into the magical world of logic and figure out "
|
|
"who's correct and who's not. So, we have three friends, 甲 (Ka), 乙 (Otsu), and 丙 (Chi), "
|
|
'working on a tricky '
|
|
"math problem together. They each share their solutions, and then they start discussing who's correct. "
|
|
"Here's what they say: * 甲 (Ka) says, \"I did it wrong.\" * 乙 (Otsu) says, \"Ka did it right.\" "
|
|
"* 丙 (Chi) says, \"I did it wrong.\" Now, 丁 (Tei), who's been observing from the side, chimes in and says, "
|
|
"\"Among the three of you, one person got it right, and one person said it correctly.\" "
|
|
"Let's break it down step by step: "
|
|
'1. If 甲 (Ka) did it wrong, then 乙 (Otsu) must be telling the truth, because 乙 says 甲 did it right. '
|
|
'2. But wait, if 乙 is telling the truth, that means 甲 actually did it right! '
|
|
"This contradicts 甲's statement, "
|
|
'so 甲 must be lying. '
|
|
'3. Now, 丙 (Chi) says they did it wrong. If 丙 did it wrong, then 丙 is telling the truth. '
|
|
'But if 丙 did it right, then 丙 would be lying. '
|
|
'4. Since 丁 says one person got it right and one person said it correctly, '
|
|
'it means 丙 must be the one who did '
|
|
"it right. If 丙 did it right, then 丙's statement \"I did it wrong\" is actually a lie. "
|
|
'5. So, we have 甲 lying about doing it wrong, 乙 telling the truth about 甲, '
|
|
'and 丙 lying about doing it wrong. '
|
|
'The magical conclusion is that 丙 (Chi) is the one who actually got the math problem correct!'
|
|
},
|
|
]),
|
|
]
|
|
|
|
engine = TransformersEngine(
|
|
'Qwen/Qwen2.5-7B-Instruct',
|
|
task_type='seq_cls',
|
|
num_labels=1,
|
|
problem_type='regression',
|
|
adapters=['output/vx-xxx/checkpoint-xxx'])
|
|
|
|
responses = engine.infer(infer_requests)
|
|
rewards = [response.choices[0].message.content for response in responses]
|
|
# rewards: [23.875, -13.5625]
|
|
# Correctly demonstrates Chinese preference.
|
|
print(f'rewards: {rewards}')
|