File size: 7,533 Bytes
94e5830
 
 
 
 
 
 
 
 
 
 
 
 
bc301ba
94e5830
 
bc301ba
94e5830
bc301ba
94e5830
 
 
16b8e64
94e5830
2233f02
94e5830
2233f02
 
94e5830
 
 
 
 
 
 
 
 
 
2233f02
 
 
94e5830
 
 
 
 
 
 
 
2233f02
94e5830
 
 
 
2233f02
94e5830
2233f02
94e5830
 
 
 
 
 
 
 
2233f02
 
94e5830
2233f02
94e5830
16b8e64
94e5830
2233f02
94e5830
 
2233f02
 
94e5830
2233f02
94e5830
2233f02
94e5830
2233f02
94e5830
 
16b8e64
94e5830
2233f02
94e5830
2233f02
 
94e5830
 
4e8b925
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2233f02
94e5830
2233f02
94e5830
 
 
 
 
 
 
 
 
 
 
 
 
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
---
base_model: DiTy/gemma-2-9b-it-russian-function-calling-GGUF
datasets:
- DiTy/function-calling-trl
language:
- ru
library_name: transformers
license: apache-2.0
pipeline_tag: text-generation
tags:
- conversational
- gemma2
- function-calling
- strict-function-calling
- trl
---
# DiTy/gemma-2-9b-it-russian-strict-function-calling-DPO

This model is a aligned version of [DiTy/gemma-2-9b-it-russian-function-calling-GGUF](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-GGUF) for more **Strict Function Calling** task, on the Russian version of the *DiTy/function-calling-trl* dataset.
Which means that the model avoids answering user questions that are not related to the described functions.
The model has been trained using non-synthetic preference data, fully annotated by humans only, on the Russian version of the <ins>*DiTy/function-calling-trl*</ins> dataset.

In addition to **safetensors**, the model is available in **GGUF** [(gemma-2-9B-it-russian-function-calling-DPO-F16.gguf)](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-DPO/blob/main/gemma-2-9B-it-russian-function-calling-DPO-F16.gguf) format (in this case, you need to download only a single file (*[how to inference GGUF model](https://github.com/abetlen/llama-cpp-python?tab=readme-ov-file#high-level-api)*)).

## Stricted Effect

Это означает, что модель избегает ответов на вопросы пользователей, которые не связаны с описанными функциями.
Ниже описаны несколько примеров поведения модели до и после *preference optimization*.
```python
def get_weather(city: str):
    """
    Функция, которая возвращает погоду в заданном городе.
    
    Args:
        city: Город, для которого надо узнать погоду.
    """
    import random
    
    return ("weather", '"sunny"' if random.random() > 0.5 else '"rainy"')


def get_sunrise_sunset_times(city: str):
    """
    Функция, которая возвращает время восхода и заката для заданного города для текущей даты (дата от пользователя не требуется), в формате списка: [sunrise_time, sunset_time].
    
    Args:
        city: Город, в котором можно узнать время восхода и захода солнца.
    """

    return ["6:00", "18:00"]


history_messages = [
    {"role": "system", "content": "Ты - полезный помощник, имеющий доступ к следующим функциям. Используйте их при необходимости - "},
    {"role": "user", "content": USER_MESSAGE},
]

inputs = tokenizer.apply_chat_template(
    history_messages,
    tokenize=False,
    add_generation_prompt=True,  # adding prompt for generation
    tools=[get_weather, get_sunrise_sunset_times],  # our functions (tools)
)
```

Ответ модели при `USER_MESSAGE = "кто такой Зевс?"`:
* [**DiTy/gemma-2-9b-it-russian-function-calling-GGUF** <ins>(*SFT*)</ins>:](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-GGUF)
```
Зевс - это главный бог в греческой мифологии. Он является богом неба, молнии и грома, а также покровителем царей и правосудия.
```
* [**Эта модель** <ins>(*DPO*)</ins>:](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-DPO)
```
Извините, но я не могу ответить на ваш вопрос. Мои текущие возможности позволяют мне получать погоду в заданном городе или узнавать время восхода и заката солнца для заданного города.
```

Ответ модели при `USER_MESSAGE = "придумай мне историю о щуке"`:
* [**DiTy/gemma-2-9b-it-russian-function-calling-GGUF** <ins>(*SFT*)</ins>:](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-GGUF)
```
В глубинах синего озера, где солнечные лучи едва проникали сквозь толщу воды, жила щука по имени Агата. Она была хитра и ловка, с серебристыми чешуйками, которые переливались, как драгоценные камни, и острыми зубами, способными разорвать любую добычу. Агата была самой опытной щукой в озере, и все остальные рыбы знали о ее грозной репутации.

Однажды, когда Агата охотилась на мальков, она заметила странную рыбу, которая плавала совсем не так, как все остальные. Эта рыба была яркой, с разноцветными плавниками, и она не пыталась укрыться от Агаты, как это делали другие рыбы. Агата, всегда готовая к охоте, приблизилась к ней, пытаясь поймать ее в свои острые зубы.

Но эта рыба, которая называлась Лилия, не была обычной рыбой. Она была искусственной, созданной учеными, чтобы изучать поведение рыб в естественной среде. Лилия была оснащена датчиками, которые собирали данные о температуре воды
```

* [**Эта модель** <ins>(*DPO*)</ins>:](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-DPO)
```
Извините, но я не могу придумать историю о щуке. Мои возможности ограничены доступными мне функциями. В данный момент я могу только:

* Узнать погоду в заданном городе.
* Узнать время восхода и заката солнца для заданного города.
```

## Рекомендация к стратегии генерации

По умолчанию модель использует жадный поиск вместе с данным конфигом:
```
GenerationConfig {
  "bos_token_id": 2,
  "cache_implementation": "hybrid",
  "eos_token_id": 1,
  "pad_token_id": 0
}
```

Для наиболее стабильной работы рекомендуется следующая стратегия генерации:

| Key | Value |
| --- | ----- |
| `do_sample` | True |
| `temperature` | 0.2 |
| `top_k` | 40 |
| `top_p` | 0.95 |
| `min_p` | 0.5 |

## Подробности генерации с вызовом функций

С более подробной информацией можно ознакомиться в основной [Model Card](https://huggingface.co/DiTy/gemma-2-9b-it-russian-function-calling-GGUF)

## Citation

```none
@article{gemma_2024,
    title={Gemma},
    url={https://www.kaggle.com/m/3301},
    DOI={10.34740/KAGGLE/M/3301},
    publisher={Kaggle},
    author={Gemma Team},
    year={2024}
}
```