File size: 5,794 Bytes
0485ffd
 
575fd83
 
5387b4c
 
0485ffd
 
a3aff17
0485ffd
5387b4c
0485ffd
 
 
a438ee4
 
 
0485ffd
 
2e03d12
55df64d
a438ee4
575fd83
0485ffd
575fd83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55df64d
0485ffd
a438ee4
2e03d12
a438ee4
 
 
0485ffd
a438ee4
0485ffd
a438ee4
 
0485ffd
a438ee4
0485ffd
a438ee4
 
 
 
 
 
 
 
5387b4c
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
library_name: transformers
language:
- ru
tags:
- CoT
---

# Model Card

CoT(Chain of Thoughts) модель на русском языке! 

### Model Description

- **Developed by:** eridAI
- **Model type:** GPT-reasoner
- **Language(s) (NLP):** Russian


- **Demo:** 
```
from transformers import AutoTokenizer, AutoModelForCausalLM, TextStreamer
import torch

model_name = "eridai/eridaRE"  
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto",
)


input_instruct = input(">>> ")



reasoning_prompt = """
Ниже приведена инструкция, описывающая задачу. Напишите рассуждение, которое поможет решить эту задачу.
Инструкция:
{}
Рассуждение:
"""


answer_prompt = """
Ниже приведена инструкция, описывающая задачу, вместе с рассуждением. Напишите ответ, который соответствующим образом выполняет запрос.
Инструкция:
{}
Рассуждение:
{}
Ответ:
"""

reasoning_inputs = tokenizer(
    [reasoning_prompt.format(input_instruct)],
    return_tensors="pt"
).to("cuda")


text_streamer_main = TextStreamer(tokenizer, skip_prompt=True)
reasoning_output = model.generate(
    **reasoning_inputs,
    streamer=text_streamer_main,
    max_new_tokens=1000,
    pad_token_id=tokenizer.eos_token_id
)

reasoning = tokenizer.decode(reasoning_output[0], skip_special_tokens=True)
answer_inputs = tokenizer(
    [answer_prompt.format(
        input_instruct,
        reasoning
    )],
    return_tensors="pt"
).to("cuda")

_ = model.generate(
    **answer_inputs,
    streamer=text_streamer_main,
    max_new_tokens=600,
    pad_token_id=tokenizer.eos_token_id
)
```

### Output
```
>>> У Брайана есть несколько марок номиналом 3 цента и несколько марок номиналом 4 цента. Какое наименьшее количество марок он может объединить, чтобы их стоимость составляла 33 цента?
Сначала я определю, сколько марок по 3 и 4 цента я могу использовать, чтобы их общая стоимость составляла 33 цента. Я подумаю о том, как разбить 33 на суммы из 3 и 4. Возможно, я начну с наименьшего количества марок, например, с 0 марок по 4 цента и посмотреть, сколько марок по 3 цента мне понадобится. Если я использую 11 марок по 3 цента, это даст 33 цента, но тогда я использую 11 марок, что, возможно, не оптимально. Затем я попробую использовать 1 марку по 4 цента и посчитаю, сколько марок по 3 цента мне нужно: (33 - 4) = 29, и 29 делится на 3? 29/3 ≈ 9.666, что не целое число, поэтому это не подходит. Next, я попробую 2 марки по 4 цента: (33 - 8) = 25, 25/3 ≈ 8.333, также не целое. Потом 3 марки: (33 - 12) = 21, 21/3 = 7. Это целое! Значит, я могу использовать 3 марки по 4 цента и 7 марок по 3 цента, что даст 3 + 7 = 10 марок. Мне нужно проверить, есть ли способ с меньшим количеством марок. Допустим, я использую 4 марки по 4 цента: (33 - 16) = 17, 17/3 ≈ 5.666, не целое. 5 марок: (33 - 20) = 13, 13/3 ≈ 4.333, не целое. 6 марок: (33 - 24) = 9, 9/3 = 3. Значит, я могу использовать 6 марок по 4 цента и 3 марок по 3 цента, что даст 6 + 3 = 9 марок. Это лучше, чем 10. Проверю, есть ли еще лучший способ. 7 марок по 4 цента: (33 - 28) = 5, 5/3 ≈ 1.666, не целое. 8 марок: (33 - 32) = 1, 1/3 ≈ 0.333, не целое. 9 марок: (33 - 36) = -3, что не подходит. Значит, наименьшее количество марок равно 9.
</think>

Чтобы решить задачу,我们必须 найти наименьшее количество марок с nominalem 3 и 4 центов,能够让 их общая стоимость равняться 33 центам.

**Шаг 1:** Обозначим количество марок по 3 цента за \( x \), а по 4 цента за \( y \). Тогда общая стоимость марок может быть представлена уравнением:
\[ 3x + 4y = 33 \]

**Шаг 2:** Нам нужно найти наименьшее значение \( x + y \), при котором \( x \) и \( y \) — целые неотрицательные числа.

**Шаг 3:** Попробуем разные значения \( y \) и постараемся найти соответствующее \( x \), чтобы общая стоимость составляла 33 центов:
- Если \( y = 0 \), тогда \( 3x = 33 \) → \( x = 11 \). Всего марок: \( 11 + 0 = 11 \).
- Если \( y = 1 \), тогда \( 3x = 33 - 4 = 29 \) → \( x \) не целое.
- Если \( y = 2 \), тогда \( 3x = 33 - 8 = 25 \) → \( x \) не целое.
- Если \( y = 3 \), тогда \( 3
\[
\boxed{9}
\]<|end▁of▁sentence|>
```