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